Use AWS Systems Manager parâmetros em vez de AMI IDs em 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 AMI IDs em modelos de lançamento

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 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, você pode atualizar seus grupos de Auto Scaling para usar a nova AMI IDs sem precisar criar novos modelos de execução ou novas versões dos modelos de execução sempre que uma ID de AMI for alterada. Eles IDs podem mudar regularmente, como quando uma AMI é atualizada com as atualizações mais recentes do sistema operacional ou do software.

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 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 lançamento usando um AWS Systems Manager parâmetro
  1. Abra o EC2 console da Amazon 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 Imagens do aplicativo e do sistema operacional (Amazon Machine Image), escolha 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 user input placeholder 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" }

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 para 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 lançamento 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 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" }

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, você deve 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 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 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 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 EC2 do usuário da Amazon.

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 só suporta a especificação de IDs 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 seu grupo de Auto Scaling usa um modelo de execução que especifica um parâmetro do Systems Manager, os pools quentes não são suportados.

  • Em cada chamada para criar ou atualizar seu grupo de Auto Scaling, o Amazon Auto EC2 Scaling resolverá o parâmetro Systems Manager no modelo de lançamento. 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ço do AWS Systems Manager.