Preparar para adicionar um gancho do ciclo de vida a um grupo do Auto Scaling - 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á.

Preparar para adicionar um gancho do ciclo de vida a um grupo do Auto Scaling

Antes de adicionar um gancho do ciclo de vida ao grupo do Auto Scaling, certifique-se de que o script de dados do usuário ou o destino de notificação esteja configurado corretamente.

  • Não é necessário configurar um destino de notificação para usar um script de dados do usuário a fim de executar ações personalizadas em suas instâncias enquanto elas estão sendo iniciadas. No entanto, você já deverá ter criado o modelo de execução ou a configuração de execução que especifica o script de dados do usuário e associado ao seu grupo do Auto Scaling. Para obter mais informações sobre scripts de dados do usuário, consulte Executar comandos na instância do Linux na inicialização no Guia do usuário do Amazon EC2 para instâncias do Linux.

  • Para sinalizar ao Amazon EC2 Auto Scaling quando a ação do ciclo de vida for concluída, você deve adicionar CompleteLifecycleActiona chamada de API ao script e criar manualmente uma função do IAM com uma política que permita que as instâncias do Auto Scaling chamem essa API. Seu modelo de execução ou configuração de execução deve especificar essa função usando um perfil de instância do IAM que é anexado às suas instâncias do Amazon EC2 na inicialização. Para ter mais informações, consulte Concluir uma ação do ciclo de vida e Funções do IAM para aplicações que são executadas em instâncias do Amazon EC2.

  • Para usar um serviço como o Lambda para realizar uma ação personalizada, você já deve ter criado uma EventBridge regra e especificado uma função do Lambda como destino. Para ter mais informações, consulte Configurar um destino de notificação para notificações de ciclo de vida.

  • Para permitir que o Lambda sinalize o Amazon EC2 Auto Scaling quando a ação do ciclo de vida for concluída, você deve CompleteLifecycleActionadicionar a chamada de API ao código da função. Você também deve ter anexado uma política do IAM à função de execução da função que concede permissão ao Lambda para concluir ações de ciclo de vida. Para ter mais informações, consulte Tutorial: Configurar um gancho do ciclo de vida que invoca uma função do Lambda.

  • Para usar um serviço como um Amazon SNS ou Amazon SQS para executar uma ação personalizada, você já deverá ter criado o tópico do SNS ou a fila do SQS e ter pronto o nome do recurso da Amazon (ARN). Você também já deverá ter criado a função do IAM que concede ao Amazon EC2 Auto Scaling acesso ao tópico do SNS ou ao destino do SQS e ter pronto o ARN. Para ter mais informações, consulte Configurar um destino de notificação para notificações de ciclo de vida.

    nota

    Por padrão, quando você adiciona um gancho de ciclo de vida no console, o Amazon EC2 Auto Scaling envia notificações de eventos de ciclo de vida para a Amazon. EventBridge Usar EventBridge ou usar um script de dados do usuário é uma prática recomendada. Para criar um gancho de ciclo de vida que envie notificações diretamente para o Amazon SNS ou o Amazon SQS, use o, AWS CloudFormation, ou um SDK para adicionar AWS CLI o gancho de ciclo de vida.

Configurar um destino de notificação para notificações de ciclo de vida

Você pode adicionar ganchos do ciclo de vida a um grupo do Auto Scaling para executar ações personalizadas sempre que uma instância entrar em um estado de espera. Você pode escolher um serviço de destino para executar essas ações dependendo de sua abordagem de desenvolvimento preferida.

A primeira abordagem usa EventBridge a Amazon para invocar uma função Lambda que executa a ação desejada. A segunda abordagem envolve a criação de um tópico do Amazon Simple Notification Service (Amazon SNS) no qual as notificações são publicadas. Os clientes podem se inscrever no tópico do SNS e receber mensagens publicadas usando um protocolo compatível. A última abordagem envolve o uso do Amazon Simple Queue Service (Amazon SQS), um sistema de mensagens usado por aplicações distribuídas para trocar mensagens por meio de um modelo de pesquisa.

Como prática recomendada, sugerimos que você use EventBridge. As notificações enviadas para o Amazon SNS e o Amazon SQS contêm as mesmas informações que as notificações para as quais o Amazon EC2 Auto Scaling envia. EventBridge Antes EventBridge, a prática padrão era enviar uma notificação ao SNS ou ao SQS e integrar outro serviço ao SNS ou SQS para realizar ações programáticas. Hoje, EventBridge oferece mais opções para quais serviços você pode segmentar e facilita o tratamento de eventos usando a arquitetura sem servidor.

Os procedimentos a seguir abordam como configurar seu destino de notificação.

Lembre-se de que, se você tiver um script de dados do usuário no modelo de execução ou uma configuração de execução que configure suas instâncias quando forem iniciadas, você não precisa receber notificações para executar ações personalizadas em suas instâncias.

Importante

A EventBridge regra, a função Lambda, o tópico do Amazon SNS e a fila do Amazon SQS que você usa com ganchos de ciclo de vida devem estar sempre na mesma região em que você criou seu grupo de Auto Scaling.

Encaminhe notificações para o Lambda usando EventBridge

Você pode configurar uma EventBridge regra para invocar uma função Lambda quando uma instância entra em um estado de espera. O Amazon EC2 Auto Scaling emite uma notificação de evento do ciclo de vida sobre EventBridge a instância que está sendo iniciada ou encerrada e um token que você pode usar para controlar a ação do ciclo de vida. Para obter exemplos desses eventos, consulte Referência de eventos do Amazon EC2 Auto Scaling.

nota

Quando você usa o AWS Management Console para criar uma regra de evento, o console adiciona automaticamente as permissões do IAM necessárias para conceder EventBridge permissão para chamar sua função Lambda. Caso esteja criando uma regra de evento usando a AWS CLI, você precisa conceder essa permissão explicitamente.

Para obter informações sobre como criar regras de eventos no EventBridge console, consulte Criação de EventBridge regras da Amazon que reagem a eventos no Guia EventBridge do usuário da Amazon.

- ou -

Para um tutorial introdutório direcionado a usuários do console, consulte Tutorial: Configurar um gancho do ciclo de vida que invoca uma função do Lambda. Este tutorial mostra como criar uma função Lambda simples que escuta os eventos de lançamento e os grava em um CloudWatch registro de registros.

Para criar uma EventBridge regra que invoque uma função Lambda
  1. Crie uma função do Lambda usando o console do Lambda e observe seu nome de recurso da Amazon (ARN). Por exemplo, arn:aws:lambda:region:123456789012:function:my-function. Você precisa do ARN para criar um EventBridge destino. Para obter mais informações, consulte Conceitos básicos do Lambda no Guia do desenvolvedor do AWS Lambda .

  2. Para criar uma regra que faça a correspondência com eventos para inicialização de instâncias, use o seguinte comando put-rule.

    aws events put-rule --name my-rule --event-pattern file://pattern.json --state ENABLED

    O exemplo a seguir mostra o pattern.json de uma ação de ciclo de vida de execício ução de instância. Substitua o texto em itálico pelo nome do grupo do Auto Scaling.

    { "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-launch Lifecycle Action" ], "detail": { "AutoScalingGroupName": [ "my-asg" ] } }

    Se o comando for executado com êxito, EventBridge responderá com o ARN da regra. Anote esse ARN. Você vai precisar dele na etapa 4.

    Para criar uma regra que faça a correspondência com outros eventos, modifique o padrão de evento. Para ter mais informações, consulte Usar o EventBridge para lidar com eventos do Auto Scaling.

  3. Para especificar a função do Lambda a ser usada como destino para a regra, use o seguinte comando put-targets.

    aws events put-targets --rule my-rule --targets Id=1,Arn=arn:aws:lambda:region:123456789012:function:my-function

    No comando anterior, my-rule é o nome que você especificou para a regra na etapa 2, enquanto o valor para o parâmetro Arn é o ARN da função que você criou na etapa 1.

  4. Para adicionar permissões que deixem a regra invocar sua função do Lambda, use o seguinte comando add-permission do Lambda. Esse comando confia no EventBridge service principal (events.amazonaws.com) e define o escopo das permissões para a regra especificada.

    aws lambda add-permission --function-name my-function --statement-id my-unique-id \ --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn arn:aws:events:region:123456789012:rule/my-rule

    No comando anterior:

    • my-function é o nome da função do Lambda que deseja que a regra use como destino.

    • my-unique-idé um identificador exclusivo que você define para descrever a declaração na política da função Lambda.

    • source-arné o ARN da regra. EventBridge

    Se o comando for executado com êxito, você receberá um resultado semelhante a este.

    { "Statement": "{\"Sid\":\"my-unique-id\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:events:us-west-2:123456789012:rule/my-rule\"}}}" }

    O valor de Statement é uma versão da string JSON da instrução adicionada à política da função do Lambda.

  5. Depois que você tiver seguido estas instruções, prossiga para Adicionar ganchos do ciclo de vida como próxima etapa.

Receba notificações usando o Amazon SNS

Você pode usar o Amazon SNS para configurar um destino de notificação (um tópico do SNS) para receber notificações quando ocorrer uma ação do ciclo de vida. Em seguida, o Amazon SNS envia as notificações para os destinatários inscritos. Até que a inscrição seja confirmada, nenhuma notificação publicada no tópico é enviada para os destinatários.

Para configurar notificações usando o Amazon SNS
  1. Crie um tópico do Amazon SNS usando o console do Amazon SNS ou o seguinte comando create-topic. Verifique se o tópico está na mesma região do grupo do Auto Scaling que você está usando. Para obter mais informações, consulte Conceitos básicos do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service.

    aws sns create-topic --name my-sns-topic
  2. Observe o nome de recurso da Amazon (ARN) do tópico, por exemplo, arn:aws:sns:region:123456789012:my-sns-topic. Você precisa dele para criar o gancho do ciclo de vida.

  3. Crie uma função de serviço do IAM para dar ao Amazon EC2 Auto Scaling acesso ao seu destino de notificação do Amazon SNS.

    Para dar ao Amazon EC2 Auto Scaling acesso ao seu tópico do SNS

    1. Abra o console IAM em https://console.aws.amazon.com/iam/.

    2. No painel de navegação à esquerda, escolha Roles (Funções).

    3. Selecione Criar função.

    4. Em Select trusted entity (Selecionar entidade confiável), escolha AWS service (serviço).

    5. Para seu caso de uso, em Use cases for other AWS services (Casos de uso de outros produtos), escolha EC2 Auto Scaling e depois EC2 Auto Scaling Notification Access (Acesso à notificação do EC2 Auto Scaling).

    6. Escolha Next (Próximo) duas vezes para ir até a página Name, review, and create (Nomear, revisar e criar).

    7. Em Role name (Nome da função), insira um nome para a função (por exemplo, my-notification-role) e escolha Create role (Criar função).

    8. Na página Roles (Funções), escolha a função recém-criada para abrir a página Summary (Resumo). Anote o Role ARN (ARN da função). Por exemplo, arn:aws:iam::123456789012:role/my-notification-role. Você precisa dele para criar o gancho do ciclo de vida.

  4. Depois que você tiver seguido estas instruções, prossiga para Adicionar ganchos do ciclo de vida (AWS CLI) como próxima etapa.

Receba notificações usando o Amazon SQS

Você pode usar o Amazon SQS para configurar um destino de notificação para receber notificações quando ocorrer uma ação do ciclo de vida. Um consumidor da fila deve sondar uma fila do SQS para agir nessas notificações.

Importante

As filas FIFO não são compatíveis com ganchos do ciclo de vida.

Para configurar notificações usando o Amazon SQS
  1. Crie uma fila do Amazon SQS usando o console do Amazon SQS. Verifique se a fila está na mesma região do grupo do Auto Scaling que você está usando. Para obter mais informações, consulte Conceitos básicos do Amazon SQS no Guia do desenvolvedor do Amazon Simple Queue Service.

  2. Observe o ARN da fila, por exemplo, arn:aws:sqs:us-west-2:123456789012:my-sqs-queue. Você precisa dele para criar o gancho do ciclo de vida.

  3. Crie uma função de serviço do IAM para dar ao Amazon EC2 Auto Scaling acesso ao seu destino de notificação do Amazon SQS.

    Para dar ao Amazon EC2 Auto Scaling acesso à sua fila do SQS

    1. Abra o console IAM em https://console.aws.amazon.com/iam/.

    2. No painel de navegação à esquerda, escolha Roles (Funções).

    3. Selecione Criar função.

    4. Em Select trusted entity (Selecionar entidade confiável), escolha AWS service (serviço).

    5. Para seu caso de uso, em Use cases for other AWS services (Casos de uso de outros produtos), escolha EC2 Auto Scaling e depois EC2 Auto Scaling Notification Access (Acesso à notificação do EC2 Auto Scaling).

    6. Escolha Next (Próximo) duas vezes para ir até a página Name, review, and create (Nomear, revisar e criar).

    7. Em Role name (Nome da função), insira um nome para a função (por exemplo, my-notification-role) e escolha Create role (Criar função).

    8. Na página Roles (Funções), escolha a função recém-criada para abrir a página Summary (Resumo). Anote o Role ARN (ARN da função). Por exemplo, arn:aws:iam::123456789012:role/my-notification-role. Você precisa dele para criar o gancho do ciclo de vida.

  4. Depois que você tiver seguido estas instruções, prossiga para Adicionar ganchos do ciclo de vida (AWS CLI) como próxima etapa.

Exemplo de mensagem de notificação para o Amazon SNS e o Amazon SQS

Enquanto a instância está em um estado de espera, uma mensagem é publicada no destino de notificação do Amazon SNS ou do Amazon SQS. A mensagem inclui as seguintes informações:

  • LifecycleActionToken — O token da ação de ciclo de vida.

  • AccountId— O Conta da AWS ID.

  • AutoScalingGroupName: o nome do grupo do Auto Scaling.

  • LifecycleHookName — O nome do gancho de ciclo de vida.

  • EC2InstanceId — A ID da instância EC2.

  • LifecycleTransition — O tipo de gancho de ciclo de vida.

  • NotificationMetadata: os metadados da notificação.

Veja a seguir um exemplo de mensagem de notificação.

Service: AWS Auto Scaling Time: 2021-01-19T00:36:26.533Z RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a LifecycleActionToken: 71514b9d-6a40-4b26-8523-05e7ee35fa40 AccountId: 123456789012 AutoScalingGroupName: my-asg LifecycleHookName: my-hook EC2InstanceId: i-0598c7d356eba48d7 LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING NotificationMetadata: hook message metadata

Exemplo de mensagem de notificação de teste

Quando você adiciona um gancho de ciclo de vida, uma mensagem de notificação de teste é publicada no destino de notificação. Veja a seguir um exemplo de mensagem de notificação de teste.

Service: AWS Auto Scaling Time: 2021-01-19T00:35:52.359Z RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a Event: autoscaling:TEST_NOTIFICATION AccountId: 123456789012 AutoScalingGroupName: my-asg AutoScalingGroupARN: arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:042cba90-ad2f-431c-9b4d-6d9055bcc9fb:autoScalingGroupName/my-asg
nota

Para obter exemplos dos eventos entregues pelo Amazon EC2 Auto Scaling EventBridge para, consulte. Referência de eventos do Amazon EC2 Auto Scaling