Supervisión de los eventos de las AMI con Amazon EventBridge - Amazon Elastic Compute Cloud

Supervisión de los eventos de las AMI con Amazon EventBridge

Cuando cambia el estado de una imagen de máquina de Amazon (AMI), Amazon EC2 genera un evento que se envía a Amazon EventBridge (antes conocido como Eventos de Amazon CloudWatch). Puede utilizar Amazon EventBridge para detectar y reaccionar a estos eventos. Para ello, cree reglas en EventBridge que activen una acción como respuesta a un evento. Por ejemplo, puede crear una regla de EventBridge que detecte cuándo se ha completado el proceso de creación de la AMI y, a continuación, invoque un tema de Amazon SNS para que envíe una notificación por email.

Amazon EC2 genera un evento cuando una AMI entra en alguno de los siguientes estados:

  • available

  • failed

  • deregistered

  • disabled

En la siguiente tabla se enumeran las operaciones de la AMI y los estados que puede adoptar una AMI. En la tabla, indica los estados que la AMI puede adoptar cuando se ejecuta la operación correspondiente.

Operaciones de AMI available failed deregistered disabled

CopyImage

CreateImage

CreateRestoreImageTask

DeregisterImage

DisableImage

EnableImage

RegisterImage

Los eventos se envían en la medida de lo posible.

Eventos de la AMI

Hay cuatro eventos de EC2 AMI State Change:

Los eventos se envían al bus de eventos en EventBridge en formato JSON de manera predeterminada.

Los siguientes campos del evento se pueden utilizar para crear reglas que activen una acción:

"source": "aws.ec2"

Identifica que el evento es de Amazon EC2.

"detail-type": "EC2 AMI State Change"

Identifica el nombre del evento.

"detail": { "ImageId": "ami-0123456789example", "State": "available", }

Proporciona la siguiente información:

  • ID de AMI: si desea realizar el seguimiento de una AMI específica.

  • El estado de la AMI (available, failed, deregistered o disabled).

available

A continuación, se muestra un ejemplo de un evento que Amazon EC2 genera cuando la AMI adopta el estado available tras una operación CreateImage, CopyImage, RegisterImage, CreateRestoreImageTask o EnableImage correcta.

"State": "available" indica que la operación se ha realizado correctamente.

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

A continuación, se muestra un ejemplo de un evento que Amazon EC2 genera cuando la AMI adopta el estado failed tras una operación CreateImage, CopyImage, RegisterImage, CreateRestoreImageTask con errores.

En los campos siguientes, se muestra información pertinente:

  • "State": "failed" indica que se ha producido un error en una operación.

  • "ErrorMessage": "": proporciona el motivo de la operación fallida.

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

A continuación, se muestra un ejemplo de un evento que Amazon EC2 genera cuando la AMI adopta el estado deregistered tras una operación DeregisterImage correcta. Si la operación falla, no se genera ningún evento. Cualquier error se conoce inmediatamente porque DeregisterImage es una operación sincrónica.

"State": "deregistered" indica que la operación DeregisterImage se ha realizado correctamente.

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

A continuación, se muestra un ejemplo de un evento que Amazon EC2 genera cuando la AMI adopta el estado disabled tras una operación DisableImage correcta. Si la operación falla, no se genera ningún evento. Cualquier error se conoce inmediatamente porque DisableImage es una operación sincrónica.

"State": "disabled" indica que la operación DisableImage se ha realizado correctamente.

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

Crear reglas de Amazon EventBridge

Puede crear una Regla de Amazon EventBridge que especifique una acción que se debe realizar cuando EventBridge recibe un evento que coincide con el Patrón de eventos en la regla. Cuando un evento coincide, EventBridge envía el evento al destino especificado y activa la acción definida en la regla.

Los patrones de eventos tienen la misma estructura que los eventos con los que coinciden. Un patrón de evento coincide con un evento o no lo hace.

Cuando crea una regla para un evento de cambio de estado de una AMI, puede incluir los siguientes campos en el patrón de eventos:

"source": "aws.ec2“

Identifica que el evento es de Amazon EC2.

"detail-type": "EC2 AMI State Change"

Identifica el nombre del evento.

"detail": { "ImageId": "ami-0123456789example", "State": "available", }

Proporciona la siguiente información:

  • ID de AMI: si desea realizar el seguimiento de una AMI específica.

  • El estado de la AMI (available, failed, deregistered o disabled).

Ejemplo: creación de una regla de EventBridge para enviar una notificación

En el siguiente ejemplo, se crea una regla de EventBridge para enviar un correo electrónico, un mensaje de texto o una notificación push móvil cuando hay una AMI en estado available después de que la operación CreateImage se haya completado correctamente.

Antes de crear la regla de EventBridge, debe crear el tema de Amazon SNS para el email, el mensaje de texto o la notificación push móvil.

Para crear una regla de EventBridge para enviar una notificación cuando se crea una AMI y se encuentra en estado available
  1. Abra la consola de Amazon EventBridge en https://console.aws.amazon.com/events/.

  2. Elija Crear regla.

  3. En Definir detalle de la regla, haga lo siguiente:

    1. Ingrese un Nombre para la regla y, opcionalmente, una descripción.

      Una regla no puede tener el mismo nombre que otra regla de la misma región y del mismo bus de eventos.

    2. En Bus de eventos, elija Predeterminado. Cuando un servicio de AWS en su cuenta emite un evento, siempre se dirige al bus de eventos predeterminado de su cuenta.

    3. En Tipo de regla, elija Regla con un patrón de evento.

    4. Elija Siguiente.

  4. En Crear patrón de evento, realice una de las siguientes acciones:

    1. En Origen del evento, elija Eventos o eventos de socios de EventBridge de AWS.

    2. En Event pattern (Patrón de evento), en este ejemplo, especificará el siguiente patrón de evento para que coincida con cualquier evento EC2 AMI State Change que se genere cuando una AMI ingresa al estado available:

      { "source": ["aws.ec2"], "detail-type": ["EC2 AMI State Change"], "detail": {"State": ["available"]} }

      Para agregar el patrón de evento, puede utilizar una plantilla por medio de la opción Event pattern form (Formulario de patrón de evento) o puede especificar su propio patrón por medio de la opción Custom pattern (JSON editor) (Patrón personalizado [editor de JSON]), de la siguiente manera:

      1. Para utilizar una plantilla con el objetivo de crear el patrón de evento, haga lo siguiente:

        1. Seleccione Formulario de patrón de evento.

        2. En Origen del evento, elija Servicios de AWS.

        3. En Servicio de AWS, elija EC2.

        4. En Tipo de evento, elija Cambio de estado de la AMI de EC2.

        5. Para personalizar la plantilla, elija Editar patrón y realice los cambios para que coincidan con el patrón de evento de ejemplo.

      2. Para especificar un patrón de evento personalizado, haga lo siguiente:

        1. Elija Custom pattern (JSON editor) (Patrón personalizado [editor de JSON]).

        2. En el casillero Patrón de evento, agregue el patrón de eventos de este ejemplo.

    3. Elija Siguiente.

  5. En Seleccionar destino, realice una de las siguientes acciones:

    1. En Tipos de destino, elija Servicio de AWS.

    2. En Seleccionar un destino, elija Tema de SNS para enviar un email, un mensaje de texto o una notificación push móvil cuando se produzca el evento.

    3. En Tema, elija un tema existente. Primero debe crear un tema de Amazon SNS mediante la consola de Amazon SNS. A fin de obtener más información, consulte Uso de Amazon SNS para mensajería de aplicación a persona (A2P) en Guía para desarrolladores de Amazon Simple Notification Service.

    4. (Opcional) En Configuración adicional, puede configurar opciones adicionales. Para obtener más información, consulte Creación de reglas de EventBridge que reaccionan a eventos (paso 16) en la Guía del usuario de Amazon EventBridge.

    5. Elija Siguiente.

  6. (Opcional) En Etiquetas, puede asignar una o varias etiquetas a la regla y, a continuación, elija Siguiente.

  7. En Revisar y crear, realice una de las siguientes acciones:

    1. Revise los detalles de la regla y modifíquelos según sea necesario.

    2. Seleccione Crear regla.

Para obtener más información, consulte los siguientes temas en la Guía del usuario de Amazon EventBridge:

Para obtener un tutorial sobre cómo crear una función de Lambda y una regla de EventBridge que ejecute la función de Lambda, consulte Tutorial: registrar el estado de una instancia de Amazon EC2 mediante EventBridge en la Guía para desarrolladores de AWS Lambda.