Usar parâmetros do AWS Systems Manager em vez de IDs de AMI em modelos de execução - Amazon EC2 Auto Scaling

Usar parâmetros do AWS Systems Manager em vez de IDs de AMI em modelos de execução

Esta seção mostra como criar um modelo de execução que especifica um parâmetro da AWS Systems Manager que faz referência a um ID de imagem de máquina da Amazon (AMI). Você pode usar um parâmetro armazenado em sua própria Conta da AWS, um parâmetro compartilhado de outra Conta da AWS ou um parâmetro público para uma AMI pública mantida por pela AWS.

Com os parâmetros do Systems Manager, é possível atualizar grupos do Auto Scaling para usar novos IDs de AMI sem precisar criar novos modelos de execução ou novas versões dos modelos de execução sempre que um ID de AMI for alterado. Esses IDs podem ser alterados regularmente, como quando uma AMI recebe as atualizações de sistema operacional ou de software mais recentes.

Você pode criar, atualizar ou excluir parâmetros do Systems Manager usando o Parameter Store, um recurso do AWS Systems Manager. É necessário criar um parâmetro do Systems Manager para usá-lo em um modelo de execução. Para começar, você pode criar um parâmetro com o tipo de dados aws:ec2:image e, no valor, inserir o ID de uma AMI. O ID de AMI tem o formato ami-<identifier>, por exemplo, ami-123example456. O ID de AMI correto depende do tipo de instância e da Região da AWS na qual você está iniciando o grupo do Auto Scaling.

Para obter mais informações sobre como criar um parâmetro válido para um ID de AMI, consulte Crie um parâmetro do Systems Manager.

Criar um modelo de execução que especifique um parâmetro para a AMI

Para criar um modelo de execução que especifique um parâmetro para a AMI, use um dos métodos a seguir:

Console
Para criar um modelo de execução usando um parâmetro do AWS Systems Manager
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Launch Templates (Modelos de execução) e Create launch template (Criar modelo de execução).

  3. Em Device template name (Nome do modelo de dispositivo), insira um nome descritivo para o modelo.

  4. Em Application and OS Images (Amazon Machine Image) (Imagens de aplicações e sistemas operacionais [imagem de máquina da Amazon]), escolha Browse more AMIs (Procurar mais AMIs).

  5. Escolha o botão de seta à direita da barra de pesquisa e escolha Especificar valor personalizado/parâmetro do Systems Manager.

  6. Na caixa de diálogo Especificar valor personalizado ou parâmetro do Systems Manager, faça o seguinte:

    1. Em ID de AMI ou string de parâmetros do Systems Manager, insira o nome do parâmetro do Systems Manager usando um destes formatos:

      Para fazer referência a um parâmetro público:

      • resolve:ssm:public-parameter

      Para fazer referência a um parâmetro armazenado na mesma conta:

      • resolve:ssm:parameter-name

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

      • resolve:ssm:parameter-name:label

      Para fazer referência a um parâmetro compartilhado de outra Conta da AWS:

      • resolve:ssm:parameter-ARN

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

      • resolve:ssm:parameter-ARN:label

    2. Escolha Salvar.

  7. Configure qualquer outro parâmetro do modelo de execução, conforme necessário, e escolha Criar modelo de execução. Para obter mais informações, consulte Criar um modelo de execução para um grupo do Auto Scaling.

AWS CLI

Para criar um modelo de execução que especifique um parâmetro do Systems Manager, você pode usar um dos seguintes comandos de exemplo. Substitua cada espaço reservado para entrada do usuário por suas próprias informações.

Exemplo: Cria um modelo de execução que especifica um AWS parâmetro público de propriedade.

Use a seguinte sintaxe: resolve:ssm:public-parameter, em que resolve:ssm é o prefixo padrão e public-parameter é o caminho e o nome do parâmetro público.

Neste exemplo, o modelo de execução usa um parâmetro público fornecido pela AWS para iniciar instâncias usando a AMI do Amazon Linux 2 mais recente na Região da AWS configurada para seu perfil.

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

Conteúdo de config.json:

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

O seguinte é um exemplo de resposta.

{ "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 } }
Exemplo: Criar um modelo de execução que especifique um parâmetro armazenado na mesma conta

Use a seguinte sintaxe: resolve:ssm:parameter-name, em que resolve:ssm é o prefixo padrão e parameter-name é o nome do parâmetro do Systems Manager.

O exemplo a seguir cria um modelo de execução que obtém o ID de AMI de um parâmetro do Systems Manager existente chamado golden-ami.

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

Conteúdo de config.json:

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

Quando nenhuma versão é especificada, a versão padrão do parâmetro é a versão mais recente.

O exemplo a seguir referencia uma versão específica do parâmetro golden-ami. O exemplo usa a versão 3 do parâmetro golden-ami, mas é possível usar qualquer número de versão válido.

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

O exemplo semelhante a seguir referencia o rótulo de parâmetro prod que é mapeado em uma versão específica do parâmetro golden-ami.

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

O seguinte é um exemplo de saída.

{ "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 } }
Exemplo: Criar um modelo de execução que especifique um parâmetro compartilhado de outro Conta da AWS

Use a seguinte sintaxe: resolve:ssm:parameter-ARN, em que resolve:ssm é o prefixo padrão e parameter-ARN é o ARN do parâmetro do Systems Manager.

O exemplo a seguir cria um modelo de execução que obtém o ID de AMI de um parâmetro do Systems Manager existente com o 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

Conteúdo de config.json:

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

Quando nenhuma versão é especificada, a versão padrão do parâmetro é a versão mais recente.

O exemplo a seguir referencia uma versão específica do parâmetro MyParameter. O exemplo usa a versão 3 do parâmetro MyParameter, mas é possível usar qualquer número de versão válido.

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

O exemplo semelhante a seguir referencia o rótulo de parâmetro prod que é mapeado em uma versão específica do parâmetro MyParameter.

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

O seguinte é um exemplo de resposta.

{ "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 um parâmetro do Parameter Store em um modelo de execução, é necessário ter a permissão da ssm:GetParameters para o parâmetro especificado. Qualquer pessoa que use o modelo de execução também precisa da permissão da ssm:GetParameters para que o valor do parâmetro seja validado. Para obter exemplos de políticas do IAM, consulte Restringir o acesso a parâmetros do Systems Manager usando políticas do IAM no Guia do usuário do AWS Systems Manager.

Verifique se um modelo de execução obtém o ID da AMI correto

Use o comando describe-launch-template-versions e inclua a opção --resolve-alias para resolver o parâmetro com a ID AMI real.

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

O exemplo retorna o ID de AMI para ImageId. Quando uma instância é iniciada usando esse modelo de execução, o ID de AMI é resolvido para 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 mais detalhes sobre como especificar um parâmetro do Systems Manager no seu modelo de inicialização, consulte Usar um parâmetro do Systems Manager em vez de um ID de AMI no Guia do Usuário do Amazon EC2.

Para obter mais informações sobre como trabalhar com os parâmetros do Systems Manager, consulte os materiais de referência apresentados a seguir na documentação do Systems Manager.

Limitações

Ao trabalhar com parâmetros do Systems Manager, observe as seguintes limitações:

  • O Amazon EC2 Auto Scaling é compatível apenas com a especificação de IDs de AMI como parâmetros.

  • Não há suporte para a criação ou atualização de grupos de instâncias mistas com seleção de tipo de instância baseada em atributos usando um modelo de execução que especifique um parâmetro do Systems Manager.

  • Se o seu grupo do Auto Scaling usar um modelo de execução que especifique um parâmetro do Systems Manager, você não poderá iniciar uma atualização de instância com uma configuração desejada ou usando a correspondência de saltos.

  • Se o seu grupo do Auto Scaling usar um modelo de execução que especifique um parâmetro do Systems Manager, não haverá suporte a grupos de alta atividade.

  • Em cada chamada para criar ou atualizar seu grupo do Auto Scaling, o Amazon EC2 Auto Scaling resolverá o parâmetro do Systems Manager no modelo de execução. Se você usar parâmetros avançados ou limites de throughput mais altos, as chamadas frequentes ao Parameter Store (ou seja, a operação GetParameters) poderão aumentar os custos do Systems Manager, pois as cobranças são realizadas por interação com a API do Parameter Store. Para obter mais informações, consulte Definição de preçoAWS Systems Manager.