Utilice AWS Systems Manager parámetros en lugar de AMI IDs en las plantillas de lanzamiento - Amazon EC2 Auto Scaling

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice AWS Systems Manager parámetros en lugar de AMI IDs en las plantillas de lanzamiento

En esta sección, se muestra cómo crear una plantilla de lanzamiento que especifique un parámetro de AWS Systems Manager que haga referencia a un ID de imagen de máquina de Amazon (AMI). Puede usar un parámetro almacenado en su propia AMI Cuenta de AWS, un parámetro compartido con otro Cuenta de AWS o un parámetro público para una AMI pública mantenida por AWS.

Con los parámetros de Systems Manager, puede actualizar sus grupos de Auto Scaling para usar una nueva AMI IDs sin necesidad de crear nuevas plantillas de lanzamiento o nuevas versiones de las plantillas de lanzamiento cada vez que cambie una ID de AMI. Estas IDs pueden cambiar con regularidad, por ejemplo, cuando una AMI se actualiza con las últimas actualizaciones del sistema operativo o del software.

Puede crear, actualizar o eliminar sus propios parámetros de Systems Manager mediante el Almacén de parámetros, una capacidad de AWS Systems Manager. Debe crear un parámetro de Systems Manager antes de poder usarlo en una plantilla de lanzamiento. Para comenzar, cree un parámetro con el tipo de datos aws:ec2:image, y para su valor, especifique el ID de una AMI. El ID de AMI tiene el formato ami-<identifier>, por ejemplo, ami-123example456. El ID de AMI correcto depende del tipo de instancia y la Región de AWS en la que quiere lanzar el grupo de escalado automático.

Para obtener más información sobre cómo crear un parámetro válido para un ID de AMI, consulte Creación de parámetros de Systems Manager.

Creación de una plantilla de lanzamiento que especifique un parámetro para la AMI

Para crear una plantilla de lanzamiento que especifique un parámetro para la AMI, utilice uno de los métodos siguientes:

Console
Para crear una plantilla de lanzamiento mediante un AWS Systems Manager parámetro
  1. Abre la EC2 consola de Amazon en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Launch Templates (Plantillas de inicialización) y, a continuación, Create launch template (Crear plantilla de inicialización).

  3. En Launch template name (Nombre de plantilla de inicialización), introduzca un nombre descriptivo para la plantilla.

  4. En Imágenes de aplicaciones y sistemas operativos (Amazon Machine Image), selecciona Explorar más AMIs.

  5. Elija el botón de flecha situado a la derecha de la barra de búsqueda y luego elija Especificar valor personalizado/parámetro de Systems Manager.

  6. En el cuadro de diálogo Especificar valor personalizado o parámetro de Systems Manager, haga lo siguiente:

    1. Para el ID de AMI o la cadena de parámetros de Systems Manager, introduzca el nombre del parámetro de Systems Manager mediante uno de los siguientes formatos:

      Para hacer referencia a un parámetro público:

      • resolve:ssm:public-parameter

      Para hacer referencia a un parámetro almacenado en la misma cuenta:

      • resolve:ssm:parameter-name

      • resolve:ssm:parameter-name:version-number

      • resolve:ssm:parameter-name:label

      Para hacer referencia a un parámetro compartido desde otra Cuenta de AWS:

      • resolve:ssm:parameter-ARN

      • resolve:ssm:parameter-ARN:version-number

      • resolve:ssm:parameter-ARN:label

    2. Seleccione Guardar.

  7. Configure cualquier otro ajuste de la plantilla de lanzamiento según sea necesario y, a continuación, seleccione Crear plantilla de lanzamiento. Para obtener más información, consulte Creación de una plantilla de lanzamiento para un grupo de Auto Scaling.

AWS CLI

Para crear una plantilla de lanzamiento que especifique un parámetro de Systems Manager, puede utilizar uno de los siguientes comandos de ejemplo. Reemplace cada user input placeholder por su propia información.

Ejemplo: cree una plantilla de lanzamiento que especifique un parámetro AWS de propiedad pública

Utilice la siguiente sintaxis: resolve:ssm:public-parameter, donde resolve:ssm es el prefijo estándar y public-parameter es la ruta y el nombre del parámetro público.

En este ejemplo, la plantilla de lanzamiento utiliza un parámetro público AWS proporcionado para lanzar instancias con la última AMI de Amazon Linux 2 configurada para su perfil. Región de AWS

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data file://config.json

Contenido de config.json:

{ "ImageId":"resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2", "InstanceType":"t2.micro" }

A continuación, se muestra un ejemplo de respuesta.

{ "LaunchTemplate": { "LaunchTemplateId": "lt-089c023a30example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreateTime": "2022-12-28T19:52:27.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }
Ejemplo: creación de una plantilla de lanzamiento que especifica un parámetro almacenado en la misma cuenta

Utilice la siguiente sintaxis: resolve:ssm:parameter-name, donde resolve:ssm es el prefijo estándar y parameter-name es el nombre del parámetro de Systems Manager.

En el ejemplo siguiente se crea una plantilla de lanzamiento que obtiene el ID de AMI de un parámetro de Systems Manager existente denominado golden-ami.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling \ --launch-template-data file://config.json

Contenido de config.json:

{ "ImageId":"resolve:ssm:golden-ami", "InstanceType":"t2.micro" }

La versión predeterminada del parámetro, cuando no se especifica, es la versión más reciente.

El ejemplo siguiente hace referencia a una versión específica del parámetro golden-ami. El ejemplo usa la versión 3 del parámetro golden-ami, pero puede usar cualquier número de versión válido.

{ "ImageId":"resolve:ssm:golden-ami:3", "InstanceType":"t2.micro" }

El siguiente ejemplo similar hace referencia a una etiqueta del parámetro prod que asigna a una versión específica del parámetro golden-ami.

{ "ImageId":"resolve:ssm:golden-ami:prod", "InstanceType":"t2.micro" }

A continuación, se muestra un ejemplo del resultado.

{ "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b724example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreateTime": "2022-12-27T17:11:21.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }
Ejemplo: cree una plantilla de lanzamiento que especifique un parámetro compartido con otro Cuenta de AWS

Utilice la siguiente sintaxis: resolve:ssm:parameter-ARN, donde resolve:ssm es el prefijo estándar y parameter-ARN es el ARN del parámetro de Systems Manager.

En el ejemplo siguiente, se crea una plantilla de lanzamiento que obtiene el ID de AMI de un parámetro de Systems Manager existente con el ARN de arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter.

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data file://config.json

Contenido de config.json:

{ "ImageId":"resolve:ssm:arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter", "InstanceType":"t2.micro" }

La versión predeterminada del parámetro, cuando no se especifica, es la versión más reciente.

El ejemplo siguiente hace referencia a una versión específica del parámetro MyParameter. El ejemplo usa la versión 3 del parámetro MyParameter, pero puede usar cualquier número de versión válido.

{ "ImageId":"resolve:ssm:arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter:3", "InstanceType":"t2.micro" }

El siguiente ejemplo similar hace referencia a una etiqueta del parámetro prod que asigna a una versión específica del parámetro MyParameter.

{ "ImageId":"resolve:ssm:arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter:prod", "InstanceType":"t2.micro" }

A continuación, se muestra un ejemplo de respuesta.

{ "LaunchTemplate": { "LaunchTemplateId": "lt-00f93d4588example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreateTime": "2024-01-08T12:43:21.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

Para especificar un parámetro del almacén de parámetros en una plantilla de lanzamiento, debe tener el permiso ssm:GetParameters para el parámetro especificado. Cualquier persona que utilice la plantilla de lanzamiento también necesitará el permiso ssm:GetParameters para validar el valor del parámetro. Para más información, consulte Restricción del acceso a los parámetros de Systems Manager mediante políticas de IAM en la Guía del usuario de AWS Systems Manager .

Verificación de que la plantilla de lanzamiento tenga el ID de AMI correcto

Utilice el describe-launch-template-versionscomando e incluya la --resolve-alias opción para resolver el parámetro en el ID de AMI real.

aws ec2 describe-launch-template-versions --launch-template-name my-template-for-auto-scaling \ --versions 1 --resolve-alias

El ejemplo devuelve el ID de AMI de ImageId. Cuando se lanza una instancia con esta plantilla de lanzamiento, el ID de AMI se resuelve con ami-0ac394d6a3example.

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-089c023a30example", "LaunchTemplateName": "my-template-for-auto-scaling", "VersionNumber": 1, "CreateTime": "2022-12-28T19:52:27.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-0ac394d6a3example", "InstanceType": "t2.micro", } } ] }

Para obtener más información sobre cómo especificar un parámetro de Systems Manager en la plantilla de lanzamiento, consulte Utilizar un parámetro de Systems Manager en lugar de un ID de AMI en la Guía del EC2 usuario de Amazon.

Para obtener más información sobre cómo trabajar con parámetros de Systems Manager, consulte los siguientes materiales de referencia en la documentación de Systems Manager.

Limitaciones

Cuando trabaje con parámetros de Systems Manager, tenga en cuenta las siguientes limitaciones:

  • Amazon EC2 Auto Scaling solo admite la especificación de AMI IDs como parámetros.

  • No se admite la creación o actualización de grupos de instancias mixtos con una selección del tipo de instancia basada en atributos mediante una plantilla de lanzamiento que especifique un parámetro de Systems Manager.

  • Si su grupo de escalado automático usa una plantilla de lanzamiento que especifique un parámetro de Systems Manager, no podrá iniciar una actualización de instancias con la configuración deseada o utilizando la coincidencia por omisión.

  • Si el grupo de Auto Scaling utiliza una plantilla de lanzamiento que especifica un parámetro de Systems Manager, no se admiten los pools calientes.

  • En cada llamada para crear o actualizar su grupo de Auto Scaling, Amazon EC2 Auto Scaling resolverá el parámetro Systems Manager de la plantilla de lanzamiento. Si utiliza parámetros avanzados o límites de rendimiento más altos, las llamadas frecuentes al Almacén de parámetros (es decir, la operación GetParameters) pueden aumentar los costos de Systems Manager, ya que se cobran cargos por interacción con la API del Almacén de parámetros. Para obtener más información, consulte Precios de AWS Systems Manager.