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
-
Cree una política de IAM, como la que se muestra en el ejemplo siguiente, para proporcionar permisos para utilizar la acción
CopySnapshoty escribir en el registro de EventBridge. Asigne la política al usuario que controlará el evento de EventBridge. -
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
createSnapshotcoincidente (lo que significa que la instantánea se completó). Cuando se le llama, la función copia la instantánea deus-east-2enus-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 la Guía para desarrolladores de AWS Lambda.
Abra la consola de Amazon EventBridge en https://console.aws.amazon.com/events/
. -
En el panel de navegación, elija Rules (Reglas) y, a continuación, elija Create rule (Crear regla).
-
En Step 1: Define rule detail (Paso 1: definición de detalles de reglas), haga lo siguiente:
-
Introduzca valores para Name (Nombre) y Description (Descripción).
-
En Event bus (Bus de eventos), mantenga la opción de default (Valor predeterminado).
-
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.
-
En Event type (Tipo de evento), seleccione Rule with an event pattern (Regla con un patrón de evento).
-
Elija Siguiente.
-
-
En Step 2: Build event pattern (Paso 2: crear patrón de eventos), haga lo siguiente:
-
En Origen del evento, seleccione Eventos de AWS o Eventos de socios de EventBridge.
-
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.
-
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.
-
Seleccione Specific result(s) (Resultados específicos) y luego elija succeeded.
-
Elija Siguiente.
-
-
En Step 3: Select targets (Paso 3: seleccionar destinos), haga lo siguiente:
-
En Tipos de destino, seleccione Servicio de AWS.
-
En Select target (Seleccionar destino), elija Lambda function (Función Lambda) y, en Function (Función), seleccione la función creada anteriormente.
-
Elija Next (Siguiente).
-
-
En Step 4: Configure tags (Paso 4: configurar etiquetas), especifique las etiquetas para la regla si es necesario y, a continuación, seleccione Next.
-
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.