EventBridge para Amazon EBS - Amazon Elastic Compute Cloud

EventBridge para Amazon EBS

Amazon EBS envía eventos a Amazon EventBridge para las acciones hechas en volúmenes e instantáneas. Con EventBridge, puede establecer reglas que activen acciones programáticas en respuesta a estos eventos. Por ejemplo, puede crear una regla que envíe una notificación a su correo electrónico cuando se active una instantánea para la restauración rápida de instantáneas.

Los eventos en EventBridge se representan como objetos JSON. Los campos que son únicos del evento se encuentran en la sección "detail" del objeto JSON. El campo "event" contiene el nombre del evento. El campo "result" contiene el estado completad de la acción que desencadenó el evento. Para obtener más información, consulte Amazon EventBridge event patterns (Patrones de eventos de Amazon EventBridge) en la Guía del usuario de Amazon EventBridge.

Para obtener más información, consulte What Is Amazon EventBridge? (¿Qué es Amazon EventBridge?) en la Guía del usuario de Amazon EventBridge.

Eventos de volumen de EBS

Amazon EBS envía eventos a EventBridge cuando se producen los eventos de volumen siguientes.

Crear volumen (CreateVolume)

El evento createVolume se envía a la cuenta de AWS cuando finaliza una acción para crear un volumen. Sin embargo, no se guarda, registra o archiva. Este evento tiene un resultado de available o failed. La creación fallará si se ha proporcionado una AWS KMS key no válida, como se muestra en los ejemplos a continuación.

Datos de evento

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS para un evento createVolume correcto.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Volume Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:012345678901:volume/vol-01234567" ], "detail": { "result": "available", "cause": "", "event": "createVolume", "request-id": "01234567-0123-0123-0123-0123456789ab" } }

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS después de que un evento createVolume diera error. La causa del error fue una Clave de KMS deshabilitada.

{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "EBS Volume Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "sa-east-1", "resources": [ "arn:aws:ec2:sa-east-1:0123456789ab:volume/vol-01234567", ], "detail": { "event": "createVolume", "result": "failed", "cause": "arn:aws:kms:sa-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab is disabled.", "request-id": "01234567-0123-0123-0123-0123456789ab", } }

A continuación se ofrece un ejemplo de un objeto JSON emitido por EBS después de que un evento createVolume diera error. La causa del error fue una importación pendiente de una Clave de KMS.

{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "EBS Volume Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "sa-east-1", "resources": [ "arn:aws:ec2:sa-east-1:0123456789ab:volume/vol-01234567", ], "detail": { "event": "createVolume", "result": "failed", "cause": "arn:aws:kms:sa-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab is pending import.", "request-id": "01234567-0123-0123-0123-0123456789ab", } }

Eliminar volumen (deleteVolume)

El evento deleteVolume se envía a la cuenta de AWS cuando finaliza una acción para eliminar un volumen. Sin embargo, no se guarda, registra o archiva. Este evento da como resultado deleted. Si la eliminación no se completa, el evento no se enviará nunca.

Datos de evento

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS para un evento deleteVolume correcto.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Volume Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:012345678901:volume/vol-01234567" ], "detail": { "result": "deleted", "cause": "", "event": "deleteVolume", "request-id": "01234567-0123-0123-0123-0123456789ab" } }

Asociar o volver a asociar volumen (attachVolume, reattachVolume)

El evento attachVolume o reattachVolume se envía a la cuenta de AWS cuando no se logra asociar o volver a asociar un volumen a una instancia. Sin embargo, no se guarda, registra o archiva. Si utiliza una Clave de KMS para cifrar un volumen de EBS y la Clave de KMS deja de ser válida, EBS emitirá un evento si esa Clave de KMS se utiliza posteriormente para asociar o volver a asociar a una instancia, como se muestra en los ejemplos a continuación.

Datos de evento

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS después de que un evento attachVolume diera error. La causa del error fue una eliminación pendiente de una Clave de KMS.

nota

AWS puede intentar volver a adjuntarse a un volumen después del mantenimiento de rutina del servidor.

{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "EBS Volume Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:0123456789ab:volume/vol-01234567", "arn:aws:kms:us-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab" ], "detail": { "event": "attachVolume", "result": "failed", "cause": "arn:aws:kms:us-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab is pending deletion.", "request-id": "" } }

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS después de que un evento reattachVolume diera error. La causa del error fue una eliminación pendiente de una Clave de KMS.

{ "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "EBS Volume Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:0123456789ab:volume/vol-01234567", "arn:aws:kms:us-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab" ], "detail": { "event": "reattachVolume", "result": "failed", "cause": "arn:aws:kms:us-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab is pending deletion.", "request-id": "" } }

Eventos de modificación del volumen de EBS

Amazon EBS envía eventos modifyVolume a EventBridge cuando se modifica un volumen. Sin embargo, no se guarda, registra o archiva.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Volume Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:012345678901:volume/vol-03a55cf56513fa1b6" ], "detail": { "result": "optimizing", "cause": "", "event": "modifyVolume", "request-id": "01234567-0123-0123-0123-0123456789ab" } }

Eventos de instantánea de EBS

Amazon EBS envía eventos a EventBridge cuando se producen los eventos de volumen siguientes.

Crear instantánea (createSnapshot)

El evento createSnapshot se envía a la cuenta de AWS cuando se completa una acción para crear una instantánea. Sin embargo, no se guarda, registra o archiva. Este evento tiene un resultado de succeeded o failed.

Datos de evento

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS para un evento createSnapshot correcto. En la sección detail, el campo source contiene el ARN del volumen de origen. Los campos startTime y endTime indican el inicio y la finalización de la creación de la instantánea.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Snapshot Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2::us-west-2:snapshot/snap-01234567" ], "detail": { "event": "createSnapshot", "result": "succeeded", "cause": "", "request-id": "", "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567", "source": "arn:aws:ec2::us-west-2:volume/vol-01234567", "startTime": "yyyy-mm-ddThh:mm:ssZ", "endTime": "yyyy-mm-ddThh:mm:ssZ" } }

Crear instantáneas (createSnapshots)

El evento createSnapshots se envía a la cuenta de AWS cuando se completa una acción para crear una instantánea de varios volúmenes. Este evento tiene un resultado de succeeded o failed.

Datos de evento

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS para un evento createSnapshots correcto. En la sección detail, el campo source contiene los ARN de los volúmenes de origen del conjunto de instantáneas de varios volúmenes. Los campos startTime y endTime indican el inicio y la finalización de la creación de la instantánea.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Multi-Volume Snapshots Completion Status", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2::us-east-1:snapshot/snap-01234567", "arn:aws:ec2::us-east-1:snapshot/snap-012345678" ], "detail": { "event": "createSnapshots", "result": "succeeded", "cause": "", "request-id": "", "startTime": "yyyy-mm-ddThh:mm:ssZ", "endTime": "yyyy-mm-ddThh:mm:ssZ", "snapshots": [ { "snapshot_id": "arn:aws:ec2::us-east-1:snapshot/snap-01234567", "source": "arn:aws:ec2::us-east-1:volume/vol-01234567", "status": "completed" }, { "snapshot_id": "arn:aws:ec2::us-east-1:snapshot/snap-012345678", "source": "arn:aws:ec2::us-east-1:volume/vol-012345678", "status": "completed" } ] } }

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS después de que un evento createSnapshots diera error. La causa del error fue que no se pudieron completar una o varias instantáneas para el conjunto de instantáneas de varios volúmenes. Los valores de snapshot_id son los ARN de las instantáneas erróneas. startTime y endTime representan la hora de inicio y de fin de la acción create-snapshots.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Multi-Volume Snapshots Completion Status", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2::us-east-1:snapshot/snap-01234567", "arn:aws:ec2::us-east-1:snapshot/snap-012345678" ], "detail": { "event": "createSnapshots", "result": "failed", "cause": "Snapshot snap-01234567 is in status error", "request-id": "", "startTime": "yyyy-mm-ddThh:mm:ssZ", "endTime": "yyyy-mm-ddThh:mm:ssZ", "snapshots": [ { "snapshot_id": "arn:aws:ec2::us-east-1:snapshot/snap-01234567", "source": "arn:aws:ec2::us-east-1:volume/vol-01234567", "status": "error" }, { "snapshot_id": "arn:aws:ec2::us-east-1:snapshot/snap-012345678", "source": "arn:aws:ec2::us-east-1:volume/vol-012345678", "status": "error" } ] } }

Copiar instantánea (copySnapshot)

El evento copySnapshot se envía a la cuenta de AWS cuando se completa una acción para copiar una instantánea. Sin embargo, no se guarda, registra o archiva. Este evento tiene un resultado de succeeded o failed.

Datos de evento

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS tras un evento copySnapshot correcto. El valor de snapshot_id es el ARN de la instantánea recién creada. En la sección detail, el valor de source es el ARN de la instantánea de origen. startTime y endTime representan la hora de inicio y de fin de la acción copy-snapshot.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Snapshot Notification", "source": "aws.ec2", "account": "123456789012", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2::us-west-2:snapshot/snap-01234567" ], "detail": { "event": "copySnapshot", "result": "succeeded", "cause": "", "request-id": "", "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567", "source": "arn:aws:ec2::eu-west-1:snapshot/snap-76543210", "startTime": "yyyy-mm-ddThh:mm:ssZ", "endTime": "yyyy-mm-ddThh:mm:ssZ", "Incremental": "true" } }

La lista siguiente es un ejemplo de un objeto JSON emitido por EBS después de que un evento copySnapshot diera error. La causa del error fue un ID de instantánea de origen no válido. El valor de snapshot_id es el ARN de la instantánea con errores. En la sección detail, el valor de source es el ARN de la instantánea de origen. startTime y endTime representan la hora de inicio y de fin de la acción copy-snapshot.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Snapshot Notification", "source": "aws.ec2", "account": "123456789012", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2::us-west-2:snapshot/snap-01234567" ], "detail": { "event": "copySnapshot", "result": "failed", "cause": "Source snapshot ID is not valid", "request-id": "", "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567", "source": "arn:aws:ec2::eu-west-1:snapshot/snap-76543210", "startTime": "yyyy-mm-ddThh:mm:ssZ", "endTime": "yyyy-mm-ddThh:mm:ssZ" } }

Compartir instantánea (shareSnaphot)

El evento shareSnapshot se envía a la cuenta de AWS cuando otra cuenta comparte una instantánea con ella. Sin embargo, no se guarda, registra o archiva. El resultado siempre es succeeded.

Datos de evento

A continuación se muestra un ejemplo de un objeto JSON emitido por EBS tras la finalización de un evento shareSnapshot. En la sección detail, el valor de source es el número de cuenta de AWS del usuario que compartió la instantánea con usted. startTime y endTime representan cuándo se inició y finalizó la acción de instantánea compartida. El evento shareSnapshot solo se activa cuando se comparte una instantánea privada con otro usuario. Si se comparte una instantánea pública, no se desencadena el evento.

{ "version": "0", "id": "01234567-01234-0123-0123-012345678901", "detail-type": "EBS Snapshot Notification", "source": "aws.ec2", "account": "012345678901", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2::us-west-2:snapshot/snap-01234567" ], "detail": { "event": "shareSnapshot", "result": "succeeded", "cause": "", "request-id": "", "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567", "source": 012345678901, "startTime": "yyyy-mm-ddThh:mm:ssZ", "endTime": "yyyy-mm-ddThh:mm:ssZ" } }

Eventos del archivo de instantáneas de EBS

Amazon EBS emite eventos relacionados con acciones de archivo de instantáneas. Para obtener más información, consulte Monitorear el archivo de instantáneas.

Eventos de restauración rápida de instantáneas de EBS

Amazon EBS envía eventos a EventBridge cuando cambia el estado de restauración rápida de una instantánea. Los eventos se emiten en la medida de lo posible.

El siguiente es un ejemplo de los datos de este evento.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "EBS Fast Snapshot Restore State-change Notification", "source": "aws.ec2", "account": "123456789012", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1::snapshot/snap-03a55cf56513fa1b6" ], "detail": { "snapshot-id": "snap-1234567890abcdef0", "state": "optimizing", "zone": "us-east-1a", "message": "Client.UserInitiated - Lifecycle state transition", } }

Los valores posibles de state son enabling, optimizing, enabled, disabling y disabled.

Los valores posibles para message son los siguientes:

Client.InvalidSnapshot.InvalidState - The requested snapshot transitioned to an invalid state (Error)

Falló una solicitud para habilitar la restauración rápida de instantáneas y el estado pasó a disabling o disabled. La restauración rápida de instantáneas no se puede habilitar para esta instantánea.

Client.UserInitiated

El estado cambió satisfactoriamente a enabling o disabling.

Client.UserInitiated - Lifecycle state transition

El estado cambió satisfactoriamente a optimizing, enabled o disabled.

Server.InsufficientCapacity - There was insufficient capacity available to satisfy the request

Falló una solicitud para habilitar la restauración rápida de instantáneas por capacidad insuficiente y el estado pasó adisabling o disabled. Espere e inténtelo de nuevo.

Server.InternalError - An internal error caused the operation to fail

Falló una solicitud para habilitar la restauración rápida de instantáneas por un error interno y el estado pasó adisabling o disabled. Espere e inténtelo de nuevo.

Client.InvalidSnapshot.InvalidState - The requested snapshot was deleted or access permissions were revoked

El estado de restauración rápida de la instantánea ha pasado a disabling o disabled porque el propietario de la instantánea eliminó o dejó de compartir la instantánea. La restauración rápida de instantáneas no se puede habilitar para una instantánea que se ha eliminado o que ya no se comparte con usted.

Uso de AWS Lambda para controlar eventos de EventBridge

Puede usar Amazon EBS y Amazon EventBridge para automatizar el flujo de trabajo de copia de seguridad de datos. Para ello, debe crear una política de IAM, una función de AWS Lambda para controlar el evento y una regla de EventBridge que coincida con los eventos entrantes y los dirija a la función de Lambda.

En el procedimiento siguiente se usa el evento createSnapshot para copiar automáticamente una instantánea completada en otra región para la recuperación de desastres.

Para copiar una instantánea completada en otra región
  1. Cree una política de IAM, como la que se muestra en el ejemplo siguiente, para proporcionar permisos para utilizar la acción CopySnapshot y escribir en el registro de EventBridge. Asigne la política al usuario que controlará el evento de EventBridge.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:CopySnapshot" ], "Resource": "*" } ] }
  2. Defina una función en Lambda que estará disponible desde la consola de EventBridge. EventBridge llama a la función de Lambda de ejemplo que se muestra a continuación, escrita en Node.js, cuando Amazon EBS desencadena un evento createSnapshot coincidente (lo que significa que la instantánea se completó). Cuando se le llama, la función copia la instantánea de us-east-2 en us-east-1.

    // Sample Lambda function to copy an EBS snapshot to a different Region var AWS = require('aws-sdk'); var ec2 = new AWS.EC2(); // define variables var destinationRegion = 'us-east-1'; var sourceRegion = 'us-east-2'; console.log ('Loading function'); //main function exports.handler = (event, context, callback) => { // Get the EBS snapshot ID from the event details var snapshotArn = event.detail.snapshot_id.split('/'); const snapshotId = snapshotArn[1]; const description = `Snapshot copy from ${snapshotId} in ${sourceRegion}.`; console.log ("snapshotId:", snapshotId); // Load EC2 class and update the configuration to use destination Region to initiate the snapshot. AWS.config.update({region: destinationRegion}); var ec2 = new AWS.EC2(); // Prepare variables for ec2.modifySnapshotAttribute call const copySnapshotParams = { Description: description, DestinationRegion: destinationRegion, SourceRegion: sourceRegion, SourceSnapshotId: snapshotId }; // Execute the copy snapshot and log any errors ec2.copySnapshot(copySnapshotParams, (err, data) => { if (err) { const errorMessage = `Error copying snapshot ${snapshotId} to Region ${destinationRegion}.`; console.log(errorMessage); console.log(err); callback(errorMessage); } else { const successMessage = `Successfully started copy of snapshot ${snapshotId} to Region ${destinationRegion}.`; console.log(successMessage); console.log(data); callback(null, successMessage); } }); };

    Para asegurarse de que la función de Lambda está disponible en la consola de EventBridge, créela en la región en la que se producirá el evento de EventBridge. Para obtener más información, consulte AWS Lambda Developer Guide.

  3. Abra la consola de Amazon EventBridge en https://console.aws.amazon.com/events/.

  4. En el panel de navegación, elija Rules (Reglas) y, a continuación, elija Create rule (Crear regla).

  5. En Step 1: Define rule detail (Paso 1: definición de detalles de reglas), haga lo siguiente:

    1. Introduzca valores para Name (Nombre) y Description (Descripción).

    2. En Event bus (Bus de eventos), mantenga la opción de default (Valor predeterminado).

    3. Asegúrese de que la opción Enable the rule on the selected event bus (Habilitar la regla en el bus de eventos seleccionado) esté activada.

    4. En Event type (Tipo de evento), seleccione Rule with an event pattern (Regla con un patrón de evento).

    5. Elija Next (Siguiente).

  6. En Step 2: Build event pattern (Paso 2: crear patrón de eventos), haga lo siguiente:

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

    2. En la sección Patrón de eventos, en Origen del evento, asegúrese de que la opción Servicio de AWS esté seleccionada y, en Servicio de AWS, seleccione EC2.

    3. En Event type, seleccione EBS Snapshot Notification (Notificación de instantáneas de EBS), seleccione Specific event(s) (Eventos específicos) y, a continuación, elija createSnapshot.

    4. Seleccione Specific result(s) (Resultados específicos) y luego elija succeeded.

    5. Elija Next (Siguiente).

  7. En Step 3: Select targets (Paso 3: seleccionar destinos), haga lo siguiente:

    1. En Target types (Tipos de destino), elija AWS service.

    2. En Select target (Seleccionar destino), elija Lambda function (Función Lambda) y, en Function (Función), seleccione la función creada anteriormente.

    3. Elija Next (Siguiente).

  8. En Step 4: Configure tags (Paso 4: configurar etiquetas), especifique las etiquetas para la regla si es necesario y, a continuación, seleccione Next.

  9. En Step 5: Review and create (Paso 5: revisar y crear), revise la regla y, a continuación, elija Create rule.

La regla debería aparecer ahora en la pestaña Rules (Reglas). En el ejemplo mostrado, el evento que ha configurado debería activarlo EBS la próxima vez que copie una instantánea.