Usar o AWS Lambda para lidar com eventos do EventBridge - Amazon EBS

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
  1. Crie uma política do IAM, como a mostrada no exemplo a seguir, para fornecer permissões para usar a ação CopySnapshot e gravá-la no log do EventBridge. Atribua a política ao usuário que lidará com o evento do EventBridge.

    JSON
    { "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 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 createSnapshot correspondente é emitido pelo Amazon EBS (significando que um snapshot foi concluído). Quando invocada, a função copia o snapshot de us-east-2 em 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 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.

  3. Abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/.

  4. No painel de navegação, escolha Rules (Regras) e Create rule (Criar regras).

  5. Em Step 1: Define rule detail (Etapa 1: definir detalhe da regra), faça o seguinte:

    1. Insira valores para Name (Nome) e Description (Descrição).

    2. Em Event bus (Barramento de eventos), mantenha o valor default (padrão).

    3. Certifique-se de que Enable the rule on the selected event bus (Habilitar a regra nos barramentos de eventos selecionados) esteja ativada.

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

    5. Escolha Próximo.

  6. Em Step 2: Build event pattern (Etapa 2: criar padrão de evento), faça o seguinte:

    1. Em Origem dos eventos, selecione Eventos da AWS ou eventos de parceiro do EventBridge.

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

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

    4. Selecione Specific result(s) (Resultados específicos) e depois escolha succeeded (com êxito).

    5. Escolha Próximo.

  7. Em Etapa 3: Select targets (Etapa 3: selecionar destinos), faça o seguinte:

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

    2. Em Select target (Selecionar destino), escolha Lambda function (Função do Lambda) e, em Function (Função), selecione a função criada anteriormente.

    3. Escolha Next (Avançar).

  8. 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).

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