Usar ganchos do ciclo de vida com um grupo dinâmico no grupo do Auto Scaling
As instâncias em um pool ativo mantêm seu próprio ciclo de vida independente para ajudar você a criar a ação personalizada apropriada para cada transição. Esse ciclo de vida foi desenvolvido para ajudar você a invocar ações em um serviço-alvo (por exemplo, uma função do Lambda) enquanto uma instância ainda está sendo inicializada e antes de ser colocada em serviço.
nota
As operações de API que você usa para adicionar e gerenciar ganchos do ciclo de vida e concluir ações do ciclo de vida não são alteradas. Somente o ciclo de vida da instância é alterado.
Para obter mais informações sobre a adição de um gancho do ciclo de vida, consulte Preparar para adicionar um gancho do ciclo de vida a um grupo do Auto Scaling. Para obter mais informações sobre a conclusão de uma ação do ciclo de vida, consulte Concluir uma ação do ciclo de vida em um grupo do Auto Scaling.
Para instâncias que entram no pool ativo, talvez você precise de um gancho do ciclo de vida por um dos seguintes motivos:
-
Você deseja iniciar instâncias do EC2 via uma AMI que demora muito para concluir a inicialização.
-
Você deseja executar scripts de dados do usuário para inicializar as instâncias do EC2.
Para instâncias que saem do pool ativo, talvez você precise de um gancho do ciclo de vida por um dos seguintes motivos:
-
Você pode usar algum tempo extra para preparar instâncias do EC2 para uso. Por exemplo, você pode ter serviços que devem ser iniciados quando uma instância é reiniciada antes que a aplicação possa funcionar corretamente.
-
Você deseja preencher previamente os dados de cache para que um novo servidor não seja iniciado com um cache vazio.
-
Você deseja registrar novas instâncias como instâncias gerenciadas com seu serviço de gerenciamento de configuração.
Transições de estado do ciclo de vida para instâncias em um pool ativo
Uma instância do Auto Scaling pode fazer a transição por muitos estados como parte de seu ciclo de vida.
O diagrama a seguir mostra a transição entre estados do Auto Scaling quando você usa um pool ativo:
¹ Esse estado varia de acordo com a configuração do estado do pool ativo. Se o estado do grupo estiver definido como Running, então esse estado será Warmed:Running, em vez disso. Se o estado do grupo estiver definido como Hibernated, então esse estado será Warmed:Hibernated, em vez disso.
Ao adicionar ganchos do ciclo de vida, considere o seguinte:
-
Quando um gancho do ciclo de vida é configurado para a ação
autoscaling:EC2_INSTANCE_LAUNCHINGdo ciclo de vida, uma instância recém-iniciada faz uma primeira pausa para realizar uma ação personalizada quando atinge o estadoWarmed:Pending:Waite, novamente, quando a instância for reiniciada e atingir o estadoPending:Wait. -
Quando um gancho do ciclo de vida é configurado para a ação
EC2_INSTANCE_TERMINATINGdo ciclo de vida, uma instância em encerramento faz uma pausa para realizar uma ação personalizada quando atinge o estadoTerminating:Wait. No entanto, se você especificar uma política de reutilização de instâncias para retornar instâncias ao pool ativo na operação de redução da escala horizontalmente em vez de encerrá-las, uma instância que estiver retornando ao pool ativo fará uma pausa para realizar uma ação personalizada no estadoWarmed:Pending:Waitpara a ação do ciclo de vidaEC2_INSTANCE_TERMINATING. -
Se a demanda em sua aplicação esgotar o pool ativo, o Amazon EC2 Auto Scaling poderá iniciar instâncias diretamente no grupo do Auto Scaling se o grupo ainda não tiver atingido sua capacidade máxima. Se as instâncias forem executadas diretamente no grupo, elas só serão pausadas para realizar uma ação personalizada no estado
Pending:Wait. -
Para controlar por quanto tempo uma instância permanece em um estado de espera antes de fazer a transição para o próximo estado, configure sua ação personalizada para usar o comando complete-lifecycle-action. Com os ganchos do ciclo de vida, as instâncias permanecem em estado de espera até que você notifique o Amazon EC2 Auto Scaling de que a ação especificada do ciclo de vida foi concluída, ou até que o período de tempo limite termine (uma hora, por padrão).
A seguir, um resumo do fluxo para um evento de aumento da escala na horizontal.
Quando as instâncias atingem um estado de espera, o Amazon EC2 Auto Scaling envia uma notificação. Exemplos dessas notificações estão disponíveis na seção EventBridge deste guia. Para obter mais informações, consulte Exemplos de eventos e padrões de pool ativo.
Destinos de notificação compatíveis
O Amazon EC2 Auto Scaling oferece suporte para definir qualquer um dos seguintes destinos como destinos de notificação para notificações do ciclo de vida:
-
Regras do EventBridge
-
Tópicos do Amazon SNS
-
Filas do Amazon SQS
-
Funções do AWS Lambda
Importante
Se você tiver um script de dados do usuário (cloud-init) no modelo de execução ou na configuração de execução que configura as instâncias quando elas são iniciadas, você não precisará receber notificações para realizar ações personalizadas nas instâncias que estão sendo iniciadas ou reiniciadas.
As seções a seguir contêm links para a documentação que descreve como configurar destinos de notificação:
Regras do EventBridge: para executar código quando o Amazon EC2 Auto Scaling coloca uma instância em um estado de espera, é possível criar uma regra do EventBridge e especificar uma função do Lambda como destino. Para invocar diferentes funções do Lambda com base em notificações do ciclo de vida diferentes, você pode criar várias regras e associar cada regra a um padrão de evento específico e função do Lambda. Para obter mais informações, consulte Criar regras do EventBridge para eventos de pool ativo.
Tópicos do Amazon SNS: para receber uma notificação quando uma instância é colocada em um estado de espera, você cria um tópico do Amazon SNS e, em seguida, configura a filtragem de mensagens do Amazon SNS para entregar notificações do ciclo de vida de forma diferente com base em um atributo de mensagem. Para obter mais informações, consulte Receba notificações usando o Amazon SNS.
Filas do Amazon SQS: para configurar um ponto de entrega para notificações do ciclo de vida em que um consumidor relevante possa buscá-las e processá-las, é possível criar uma fila do Amazon SQS e um consumidor de fila que processe mensagens da fila SQS. Se você quiser que o consumidor da fila processe notificações do ciclo de vida de forma diferente com base em um atributo da mensagem, você também deverá configurar o consumidor da fila para analisar a mensagem e, em seguida, agir sobre a mensagem quando um atributo específico corresponder ao valor desejado. Para obter mais informações, consulte Receba notificações usando o Amazon SQS.
Funções do AWS Lambda: para executar código personalizado quando o Amazon EC2 Auto Scaling coloca uma instância em um estado de espera, é possível especificar uma função do Lambda como destino da notificação. A função do Lambda é invocada com dados de notificação do ciclo de vida, permitindo que você execute ações personalizadas, como configuração de instância, configuração de aplicações ou integração com outros serviços da AWS. É necessário configurar a política baseada em recursos da função do Lambda para permitir que o perfil vinculado ao serviço do Auto Scaling invoque a função. Para obter mais informações, consulte Encaminhamento de notificações diretamente para AWS Lambda.