Monitorar eventos da AMI usando o Amazon EventBridge - Amazon Elastic Compute Cloud

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 ou disabled).

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 ou disabled).

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
  1. Abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/.

  2. Selecione Criar regra.

  3. Em Define rule detail (Definir detalhe da regra), faça o seguinte:

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

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

    3. Em Rule type (Tipo de regra), escolha Rule with an event pattern (Regra com um padrão de evento).

    4. Escolha Next (Próximo).

  4. Em Build event pattern (Criar padrão de evento), faça o seguinte:

    1. Em Event source (Origem do evento), escolha Eventos da AWS ou eventos de parceiro do EventBridge.

    2. 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 estado available:

      { "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:

      1. Para usar um modelo para criar o padrão de evento, faça o seguinte:

        1. Escolha Event pattern form (Formulário de evento).

        2. Em Event source (Origem do evento), escolha AWS services (Serviços da ).

        3. Em AWS Service (Serviço da ), escolha EC2.

        4. Em Event type (Tipo de evento), escolha EC2 AMI State Change (Alteração do estado da AMI do EC2).

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

      2. Para especificar um padrão de evento personalizado, faça o seguinte:

        1. Escolha Custom pattern (JSON editor) (Padrão personalizado (editor JSON)).

        2. Na caixa Event pattern (Padrão de evento), adicione o padrão de evento para este exemplo.

    3. Escolha Próximo.

  5. Em Select target(s) (Selecionar destino(s)), faça o seguinte:

    1. Em Tipos de destino, escolha Serviço da AWS.

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

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

    4. (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.

    5. Escolha Próximo.

  6. (Opcional) Em Tags (Etiquetas), é possível atribuir, opcionalmente, uma ou mais etiquetas à sua regra e, em seguida, escolher Next (Próximo).

  7. Em Review and create (Revisar e criar), faça o seguinte:

    1. Revise os detalhes da regra e modifique-os conforme necessário.

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