Ejemplos para crear y administrar plantillas de lanzamiento con la AWS CLI
Puede crear y administrar plantillas de lanzamiento a través de Consola de administración de AWS, la AWS Command Line Interface (AWS CLI) o los SDK. En esta sección se muestran ejemplos de creación y administración de plantillas de lanzamiento para Amazon EC2 Auto Scaling desde AWS CLI.
Contenido
Especificar etiquetas que etiquetan instancias en el lanzamiento
Especificar un script de datos de usuario que configura instancias en el lanzamiento
Especificar hosts dedicados para traer licencias de software de proveedores externos
Actualización de un grupo de Auto Scaling para utilizar una plantilla de lanzamiento
Ejemplo de uso
{ "LaunchTemplateName": "my-template-for-auto-scaling", "VersionDescription": "test description", "LaunchTemplateData": { "ImageId": "ami-04d5cc9b88example", "InstanceType": "t2.micro", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "Monitoring": { "Enabled": true }, "Placement": { "Tenancy": "dedicated" }, "CreditSpecification": { "CpuCredits": "unlimited" }, "MetadataOptions": { "HttpTokens": "required", "HttpPutResponseHopLimit": 1, "HttpEndpoint": "enabled" } } }
Creación de una plantilla de lanzamiento básica
Para crear una plantilla de lanzamiento básica, utilice el comando create-launch-template
-
Reemplace
ami-04d5cc9b88examplecon el ID de la AMI desde la que se lanzan las instancias. -
Reemplace
t2.microcon un tipo de instancia que sea compatible con la AMI que especificó.
En este ejemplo se crea una plantilla de lanzamiento con el nombre my-template for-auto-scaling. Si las instancias creadas por esta plantilla de inicio se inician en una VPC predeterminada, recibirán una dirección IP pública de forma predeterminada. Si las instancias se lanzan en una VPC no predeterminada, no reciben una dirección IP pública de forma predeterminada.
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Para obtener más información acerca de cómo citar parámetros con formato JSON, consulte Uso de comillas con cadenas en AWS CLI en la Guía del usuario de AWS Command Line Interface.
Si lo desea, también puede especificar los parámetros con formato JSON en un archivo de configuración.
En el ejemplo siguiente se crea una plantilla de lanzamiento básica, que hace referencia a un archivo de configuración para los valores de parámetro de plantilla de lanzamiento.
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data file://config.json
Contenido de config.json:
{ "ImageId":"ami-04d5cc9b88example", "InstanceType":"t2.micro" }
Especificar etiquetas que etiquetan instancias en el lanzamiento
En el siguiente ejemplo se agrega una etiqueta (por ejemplo, purpose=webserver) a instancias en el lanzamiento.
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"TagSpecifications":[{"ResourceType":"instance","Tags":[{"Key":"purpose","Value":"webserver"}]}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
nota
Si especifica etiquetas de instancia en la plantilla de lanzamiento y elige propagar las etiquetas del grupo de Auto Scaling a sus instancias, todas las etiquetas se fusionarán. Si se especifica la misma clave de etiqueta para una etiqueta en su plantilla de lanzamiento y una etiqueta en su grupo de Auto Scaling, entonces el valor de la etiqueta del grupo tiene prioridad.
Especificar un rol de IAM para transferir a instancias
En el ejemplo siguiente se especifica el nombre del perfil de instancia asociado con el rol de IAM que se va a transferir a las instancias en el lanzamiento. Para obtener más información, consulte Rol de IAM para aplicaciones que se ejecuten en instancias de Amazon EC2.
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"IamInstanceProfile":{"Name":"my-instance-profile"},"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Asignación de direcciones IP públicas
El ejemplo siguiente create-launch-template
nota
Cuando especifique una interfaz de red, especifique un valor para Groups que se corresponda con los grupos de seguridad de la VPC en la que el grupo de Auto Scaling lanzará las instancias. Especifique las subredes de la VPC como propiedades del grupo de Auto Scaling.
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"AssociatePublicIpAddress":true,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Especificar un script de datos de usuario que configura instancias en el lanzamiento
En el ejemplo siguiente se especifica una secuencia de comandos de datos de usuario como una cadena codificada en base64 que configura instancias en el momento del lanzamiento. El comando create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"UserData":"IyEvYmluL2Jhc...","ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Especificar una asignación de dispositivos de bloques
El ejemplo siguiente create-launch-template/dev/xvdcz. El volumen /dev/xvdcz utiliza el tipo de volumen SSD de uso general (gp2) y se elimina al finalizar la instancia a la que está adjunta.
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"BlockDeviceMappings":[{"DeviceName":"/dev/xvdcz","Ebs":{"VolumeSize":22,"VolumeType":"gp2","DeleteOnTermination":true}}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Especificar hosts dedicados para traer licencias de software de proveedores externos
Si especifica la tenencia de host, puede especificar un grupo de recursos de host y una configuración de licencias de License Manager para traer licencias de software elegibles de proveedores externos. A continuación, puede utilizar las licencias en instancias EC2 mediante el siguiente comando create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"Placement":{"Tenancy":"host","HostResourceGroupArn":"arn"},"LicenseSpecifications":[{"LicenseConfigurationArn":"arn"}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Especificar una interfaz de red existente
El siguiente ejemplo create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"NetworkInterfaceId":"eni-b9a5ac93","DeleteOnTermination":false}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Creación de múltiples interfaces de red
El siguiente ejemplo create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"Groups":["sg-903004f88example"],"DeleteOnTermination":true},{"DeviceIndex":1,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
Si utiliza un tipo de instancia que admita varias tarjetas de red y Elastic Fabric Adapters (EFA), puede agregar una interfaz secundaria a una tarjeta de red secundaria y habilitar EFA mediante el siguiente comando create-launch-template
aws ec2 create-launch-template --launch-template-namemy-template-for-auto-scaling--version-descriptionversion1\ --launch-template-data '{"NetworkInterfaces":[{"NetworkCardIndex":0,"DeviceIndex":0,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true},{"NetworkCardIndex":1,"DeviceIndex":1,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true}],"ImageId":"ami-09d95fab7fexample","InstanceType":"p4d.24xlarge"}'
aviso
El tipo de instancia p4d.24xlarge incurre en costos más altos que los otros ejemplos de esta sección. Para obtener más información acerca de los precios para instancias P4d, consulte Precios de instancias P4d de Amazon EC2
nota
Si se asocian varias interfaces de red de la misma subred a una instancia, se puede presentar un enrutamiento asimétrico, especialmente en instancias que utilizan una variante de Amazon Linux. Si necesita este tipo de configuración, debe configurar la interfaz de red secundaria dentro del sistema operativo. Para ver un ejemplo, consulte .¿Cómo puedo hacer que mi interfaz de red secundaria funcione en mi instancia EC2 de Ubuntu?
Administración de las plantillas de lanzamiento
La AWS CLI incluye otros comandos que le ayudan a administrar sus plantillas de lanzamiento.
Contenido
Enumeración y descripción de las plantillas de lanzamiento
Puede utilizar dos comandos de AWS CLI para obtener información sobre las plantillas de lanzamiento: describe-launch-templates
El comando describe-launch-templates
En el ejemplo siguiente se proporciona un resumen de la plantilla de lanzamiento especificada.
aws ec2 describe-launch-templates --launch-template-namesmy-template-for-auto-scaling
A continuación, se muestra un ejemplo de respuesta.
{
"LaunchTemplates": [
{
"LaunchTemplateId": "lt-068f72b729example",
"LaunchTemplateName": "my-template-for-auto-scaling",
"CreateTime": "2020-02-28T19:52:27.000Z",
"CreatedBy": "arn:aws:iam::123456789012:user/Bob",
"DefaultVersionNumber": 1,
"LatestVersionNumber": 1
}
]
}
Si no utiliza --launch-template-names para limitar la salida a una plantilla de lanzamiento, se devuelve información sobre todas las plantillas de lanzamiento.
El siguiente comando describe-launch-template-versions
aws ec2 describe-launch-template-versions --launch-template-idlt-068f72b729example
A continuación, se muestra un ejemplo de respuesta.
{
"LaunchTemplateVersions": [
{
"VersionDescription": "version1",
"LaunchTemplateId": "lt-068f72b729example",
"LaunchTemplateName": "my-template-for-auto-scaling",
"VersionNumber": 1,
"CreatedBy": "arn:aws:iam::123456789012:user/Bob",
"LaunchTemplateData": {
"TagSpecifications": [
{
"ResourceType": "instance",
"Tags": [
{
"Key": "purpose",
"Value": "webserver"
}
]
}
],
"ImageId": "ami-04d5cc9b88example",
"InstanceType": "t2.micro",
"NetworkInterfaces": [
{
"DeviceIndex": 0,
"DeleteOnTermination": true,
"Groups": [
"sg-903004f88example"
],
"AssociatePublicIpAddress": true
}
]
},
"DefaultVersion": true,
"CreateTime": "2020-02-28T19:52:27.000Z"
}
]
}
Crear una versión de plantilla de inicialización
El siguiente comando create-launch-template
aws ec2 create-launch-template-version --launch-template-idlt-068f72b729example--version-descriptionversion2\ --source-version1--launch-template-data "ImageId=ami-c998b6b2example"
Para establecer la versión predeterminada de la plantilla de lanzamiento, utilice el comando modificy-launch-template
Eliminar una versión de plantilla de inicialización
El siguiente comando delete-launch-template-versions
aws ec2 delete-launch-template-versions --launch-template-idlt-068f72b729example--versions 1
Eliminación de una plantilla de inicialización
Si ya no necesita una plantilla de lanzamiento, puede eliminarla mediante el siguiente comando delete launch-template
aws ec2 delete-launch-template --launch-template-idlt-068f72b729example
Actualización de un grupo de Auto Scaling para utilizar una plantilla de lanzamiento
Puede utilizar el coamdo update-auto-scaling-group
Actualización de un grupo de Auto Scaling para utilizar la versión más reciente de una plantilla de lanzamiento
El siguiente comando update-auto-scaling-group
aws autoscaling update-auto-scaling-group --auto-scaling-group-namemy-asg\ --launch-template LaunchTemplateId=lt-068f72b729example,Version='$Latest'
Actualización de un grupo de Auto Scaling para utilizar una versión específica de una plantilla de lanzamiento
El siguiente comando update-auto-scaling-group
aws autoscaling update-auto-scaling-group --auto-scaling-group-namemy-asg\ --launch-template LaunchTemplateName=my-template-for-auto-scaling,Version='2'