Usar o AWS Lambda para lidar com eventos do EventBridge
É possível usar o Amazon EBS e o Amazon EventBridge para automatizar o fluxo de trabalho de backup de dados. Fazer isso exige a criação de uma política do IAM, uma função do AWS Lambda para lidar com o evento e uma regra do EventBridge que corresponda aos eventos de entrada e os roteie para a função do Lambda.
O procedimento a seguir usa o evento createSnapshot para copiar automaticamente um snapshot concluído em outra região para recuperação de desastres.
Como copiar um snapshot concluído em outra região
-
Crie uma política do IAM, como a mostrada no exemplo a seguir, para fornecer permissões para usar a ação
CopySnapshote gravá-la no log do EventBridge. Atribua a política ao usuário que lidará com o evento do EventBridge. -
Defina uma função no Lambda que estará disponível no console do EventBridge. O exemplo de função do Lambda abaixo, escrito em Node.js, é invocado pelo EventBridge quando um evento
createSnapshotcorrespondente é emitido pelo Amazon EBS (significando que um snapshot foi concluído). Quando invocada, a função copia o snapshot deus-east-2emus-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 garantir que a sua função do Lambda esteja disponível no console do EventBridge, crie-a na região onde o evento do EventBridge ocorrerá. Para obter mais informações, consulte o Guia do desenvolvedor do AWS Lambda.
Abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/
. -
No painel de navegação, escolha Rules (Regras) e Create rule (Criar regras).
-
Em Step 1: Define rule detail (Etapa 1: definir detalhe da regra), faça o seguinte:
-
Insira valores para Name (Nome) e Description (Descrição).
-
Em Event bus (Barramento de eventos), mantenha o valor default (padrão).
-
Certifique-se de que Enable the rule on the selected event bus (Habilitar a regra nos barramentos de eventos selecionados) esteja ativada.
-
Em Rule type (Tipo de regra), escolha Rule with an event pattern (Regra com um padrão de evento).
-
Escolha Próximo.
-
-
Em Step 2: Build event pattern (Etapa 2: criar padrão de evento), faça o seguinte:
-
Em Origem dos eventos, selecione Eventos da AWS ou eventos de parceiro do EventBridge.
-
Na seção Padrão dos eventos, em Origem dos eventos, certifique-se de que a opção Serviço da AWS esteja selecionada e, em Serviço da AWS, selecione EC2.
-
Em Event type (Tipo de evento), selecione EBS Snapshot Notification (Notificação de snapshot de EBS), selecione Specific event(s) (Eventos específicos) e, em seguida, selecione createSnapshot.
-
Selecione Specific result(s) (Resultados específicos) e depois escolha succeeded (com êxito).
-
Escolha Próximo.
-
-
Em Etapa 3: Select targets (Etapa 3: selecionar destinos), faça o seguinte:
-
Em Tipos de destino, escolha Serviço da AWS.
-
Em Select target (Selecionar destino), escolha Lambda function (Função do Lambda) e, em Function (Função), selecione a função criada anteriormente.
-
Escolha Next (Avançar).
-
-
Em Step 4: Configure tags (Etapa 4: configurar etiquetas), especifique as etiquetas para a regra, se necessário e, em seguida, escolha Next (Avançar).
-
Em Step 5: Review and create (Etapa 5: revisar e criar), revise a regra e escolha Create rule (Criar regra).
A regra agora deve aparecer na guia Rules (Regras). No exemplo mostrado, o evento que você configurou deve ser emitido pelo EBS na próxima vez você copiar um snapshot.