Use AWS Systems Manager parâmetros em vez de IDs de AMI nos modelos de lançamento - Amazon EC2 Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use AWS Systems Manager parâmetros em vez de IDs de AMI nos modelos de lançamento

Esta seção mostra como criar um modelo de lançamento que especifica um AWS Systems Manager parâmetro que faz referência a uma ID da Amazon Machine Image (AMI). Você pode usar um parâmetro armazenado no mesmo Conta da AWS, um parâmetro compartilhado de outro Conta da AWS ou um parâmetro público para uma AMI pública mantida 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 seus próprios parâmetros do Systems Manager usando o Parameter Store, um recurso de 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 a criação de um parâmetro válido para uma ID de AMI, consulte Criação de parâmetros do Systems Manager.

Crie um modelo de lançamento 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 seguintes métodos:

Console
Para criar um modelo de lançamento usando um AWS Systems Manager parâmetro
  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. Selecione Salvar.

  7. Configure qualquer outro parâmetro do modelo de execução, conforme necessário, e escolha Criar modelo de execução. Para ter 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 exemplos de comandos. Substitua cada espaço reservado para entrada do usuário por suas próprias informações.

Exemplo: criar um modelo de lançamento que especifique um parâmetro público AWS 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 AWS fornecido para iniciar instâncias usando a AMI mais recente do Amazon Linux 2 Região da AWS que está 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" }

A seguir, uma 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 lançamento 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 para uma versão específica do parâmetro golden-ami.

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

A seguir, 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 lançamento que especifique um parâmetro compartilhado de outro Conta da AWS

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

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

A seguir, uma 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, você deve ter a ssm:GetParameters permissão para o parâmetro especificado. Qualquer pessoa que use o modelo de lançamento também precisa da ssm:GetParameters permissão para que o valor do parâmetro seja validado. Para obter mais informações, consulte Restringir o acesso aos parâmetros do Systems Manager usando políticas do IAM no Guia do AWS Systems Manager usuário.

Verifique se um modelo de lançamento obtém a ID de AMI correta

Use o describe-launch-template-versionscomando e inclua a --resolve-alias opção de resolver o parâmetro para a ID real da AMI.

aws ec2 describe-launch-template-versions --launch-template-name my-template-for-auto-scaling \ --versions $Default --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 obter mais detalhes sobre a especificação de um parâmetro do Systems Manager em seu modelo de lançamento, consulte Use um parâmetro do Systems Manager em vez de um ID de AMI no Guia do usuário do Amazon EC2 para instâncias Linux.

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 os 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.

  • Atualmente, não há suporte para criar ou atualizar grupos de instâncias mistas usando um modelo de execução que especifica um parâmetro do Systems Manager.

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

  • 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 Preços do AWS Systems Manager.