Monitorar eventos da AMI usando o Amazon EventBridge
Quando o estado de uma imagem de máquina da Amazon (AMI) muda, o Amazon EC2 gera um evento que é enviado para o Amazon EventBridge (anteriormente conhecido como Amazon CloudWatch Events). É possível usar o Amazon EventBridge para detectar e reagir a esses eventos. Você faz isso criando regras no EventBridge que acionem uma ação em resposta a um evento. Por exemplo, é possível criar uma regra do EventBridge que detecte quando o processo de criação da AMI foi concluído e, em seguida, invoque um tópico do Amazon SNS para enviar uma notificação por email para você.
O Amazon EC2 gera um evento quando uma AMI entra em qualquer um dos seguintes estados:
-
available
-
failed
-
deregistered
-
disabled
A tabela abaixo mostra as operações da AMI e os estados que podem ser atribuídos a ela. Na tabela, Sim indica os estados que podem ser atribuídos à AMI ao executar a operação correspondente.
Operações da AMI | available | failed | deregistered | disabled |
---|---|---|---|---|
CopyImage |
Sim |
Sim |
||
CreateImage |
Sim |
Sim |
||
CreateRestoreImageTask |
Sim |
Sim |
||
DeregisterImage |
Sim |
|||
DisableImage |
Sim |
|||
EnableImage |
Sim |
|||
RegisterImage |
Sim |
Sim |
Os eventos são gerados com base no melhor esforço.
Eventos da AMI
Existem quatro eventos de EC2 AMI State Change:
Os eventos são enviados para o barramento de eventos do EventBridge padrão no formato JSON.
Os campos a seguir no evento podem ser usados para criar regras que acionem uma ação:
"source": "aws.ec2"
-
Identifica que o evento é do Amazon EC2.
"detail-type": "EC2 AMI State Change"
-
Identifica o nome do evento.
"detail": { "ImageId": "ami-0123456789example", "State": "available", }
-
Fornece as seguintes informações:
-
O ID da AMI: se você quiser rastrear uma AMI específica.
-
O estado da AMI (
available
,failed
,deregistered
oudisabled
).
-
available
Veja a seguir um exemplo de um evento que o Amazon EC2 gera quando a AMI entra no estado available
após uma operação de CreateImage
, CopyImage
, RegisterImage
, CreateRestoreImageTask
ou EnableImage
com êxito.
"State": "available"
indica que a operação teve êxito.
{ "version": "0", "id": "example-9f07-51db-246b-d8b8441bcdf0", "detail-type": "EC2 AMI State Change", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": ["arn:aws:ec2:us-east-1::image/ami-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "available", "ErrorMessage": "" } }
failed
Veja a seguir um exemplo de um evento que o Amazon EC2 gera quando a AMI entra no estado failed
após uma operação de CreateImage
, CopyImage
, RegisterImage
ou CreateRestoreImageTask
com êxito.
Os campos a seguir fornecem informações pertinentes:
-
"State": "failed"
: indica que a operação falhou. -
"ErrorMessage": ""
: Fornece o motivo da operação com falha.
{ "version": "0", "id": "example-9f07-51db-246b-d8b8441bcdf0", "detail-type": "EC2 AMI State Change", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": ["arn:aws:ec2:us-east-1::image/ami-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "failed", "ErrorMessage": "Description of failure" } }
deregistered
Veja a seguir um exemplo de um evento que o Amazon EC2 gera quando a AMI entra no estado deregistered
após uma operação de DeregisterImage
com êxito. Se a operação falhar, nenhum evento será gerado. Qualquer falha será conhecida imediatamente, pois DeregisterImage
é uma operação síncrona.
"State": "deregistered"
indica que a operação DeregisterImage
teve êxito.
{ "version": "0", "id": "example-9f07-51db-246b-d8b8441bcdf0", "detail-type": "EC2 AMI State Change", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": ["arn:aws:ec2:us-east-1::image/ami-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "deregistered", "ErrorMessage": "" } }
disabled
Veja a seguir um exemplo de um evento que o Amazon EC2 gera quando a AMI entra no estado disabled
após uma operação de DisableImage
com êxito. Se a operação falhar, nenhum evento será gerado. Qualquer falha será conhecida imediatamente, pois DisableImage
é uma operação síncrona.
"State": "disabled"
indica que a operação DisableImage
teve êxito.
{ "version": "0", "id": "example-9f07-51db-246b-d8b8441bcdf0", "detail-type": "EC2 AMI State Change", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": ["arn:aws:ec2:us-east-1::image/ami-0123456789example"], "detail": { "RequestId": "example-9dcc-40a6-aa77-7ce457d5442b", "ImageId": "ami-0123456789example", "State": "disabled", "ErrorMessage": "" } }
Criar uma regra do Amazon EventBridge
Você é possível uma regra do Amazon EventBridge que especifique uma ação a ser executada quando o EventBridge receber um evento que corresponda ao padrão de evento na regra. Quando um evento corresponde, o EventBridge envia o evento para o destino especificado e aciona a ação definida na regra.
Os padrões de eventos têm a mesma estrutura que os eventos aos quais correspondem. Um padrão de evento corresponde a um evento ou não corresponde.
Ao criar uma regra para um evento de alteração de estado da AMI, é possível incluir os seguintes campos no padrão de evento:
"source": "aws.ec2“
-
Identifica que o evento é do Amazon EC2.
"detail-type": "EC2 AMI State Change"
-
Identifica o nome do evento.
"detail": { "ImageId": "ami-0123456789example", "State": "available", }
-
Fornece as seguintes informações:
-
O ID da AMI: se você quiser rastrear uma AMI específica.
-
O estado da AMI (
available
,failed
,deregistered
oudisabled
).
-
Exemplo: Criar uma regra de EventBridge para enviar uma notificação
O exemplo a seguir cria uma regra de EventBridge para enviar um e-mail, mensagem de texto ou notificação por push para dispositivo móvel quando qualquer AMI estiver no estado available
após a operação CreateImage
ter sido concluída com êxito.
Antes de criar a regra EventBridge, você deve criar o tópico do Amazon SNS para e-mail, mensagem de texto ou notificação por push móvel.
Para criar uma regra do EventBridge para enviar uma notificação quando uma AMI for criada e estiver no estado available
-
Abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/
. -
Selecione Criar regra.
-
Em Define rule detail (Definir detalhe da regra), faça o seguinte:
-
Informe um Name (Nome) para a regra e, opcionalmente, uma descrição.
Uma regra não pode ter o mesmo nome que outra regra na mesma região e no mesmo barramento de eventos.
-
Em Event Bus (Barramento de eventos), escolha default (padrão). Quando um serviço da AWS em sua conta gerar um evento, ele sempre irá para o barramento de eventos padrão da sua conta.
-
Em Rule type (Tipo de regra), escolha Rule with an event pattern (Regra com um padrão de evento).
-
Escolha Next (Próximo).
-
-
Em Build event pattern (Criar padrão de evento), faça o seguinte:
-
Em Event source (Origem do evento), escolha Eventos da AWS ou eventos de parceiro do EventBridge.
-
Em Event pattern (Padrão de evento), para este exemplo, você especificará o seguinte padrão de evento para corresponder a qualquer evento
EC2 AMI State Change
gerado quando uma AMI entra no estadoavailable
:{ "source": ["aws.ec2"], "detail-type": ["EC2 AMI State Change"], "detail": {"State": ["available"]} }
Para adicionar o padrão de evento, é possível usar um modelo escolhendo Event pattern form (Formulário de padrão de evento), ou especifique seu próprio padrão escolhendo Custom pattern (JSON editor) (Padrão personalizado (editor JSON)), como segue:
-
Para usar um modelo para criar o padrão de evento, faça o seguinte:
-
Escolha Event pattern form (Formulário de evento).
-
Em Event source (Origem do evento), escolha AWS services (Serviços da ).
-
Em AWS Service (Serviço da ), escolha EC2.
-
Em Event type (Tipo de evento), escolha EC2 AMI State Change (Alteração do estado da AMI do EC2).
-
Para personalizar o modelo, escolha Edit pattern (Editar padrão) e faça as alterações para corresponder ao padrão de evento de exemplo.
-
-
Para especificar um padrão de evento personalizado, faça o seguinte:
-
Escolha Custom pattern (JSON editor) (Padrão personalizado (editor JSON)).
-
Na caixa Event pattern (Padrão de evento), adicione o padrão de evento para este exemplo.
-
-
-
Escolha Próximo.
-
-
Em Select target(s) (Selecionar destino(s)), faça o seguinte:
-
Em Tipos de destino, escolha Serviço da AWS.
-
Em Select a target (Selecione um destino), escolha SNS topic (Tópico do SNS) para enviar um email, mensagem de texto ou notificação por push móvel quando o evento ocorrer.
-
Em Topic (Tópico), escolha um tópico existente. Para fazer isso, você precisa criar um tópico do Amazon SNS usando o console do Amazon SNS. Para obter mais informações, consulte Usar o Amazon SNS para mensagens de aplicação para pessoa (A2P) no Guia do desenvolvedor do Amazon Simple Notification Service.
-
(Opcional) Em Additional settings (Configurações adicionais), é possível, opcionalmente, definir configurações adicionais. Para obter mais informações, consulte Criar regras do Amazon EventBridge que reajam a eventos (etapa 16) no Guia do usuário do Amazon EventBridge.
-
Escolha Próximo.
-
-
(Opcional) Em Tags (Etiquetas), é possível atribuir, opcionalmente, uma ou mais etiquetas à sua regra e, em seguida, escolher Next (Próximo).
-
Em Review and create (Revisar e criar), faça o seguinte:
-
Revise os detalhes da regra e modifique-os conforme necessário.
-
Escolha a opção Criar regra.
-
Para obter mais informações, consulte os seguintes tópicos no Guia do usuário do Amazon EventBridge:
Para obter um tutorial sobre como criar uma função do Lambda e uma regra do EventBridge que execute a função do Lambda, consulte Tutorial: Registrar em log o estado de uma instância do Amazon EC2 usando o EventBridge no Guia do desenvolvedor do AWS Lambda.