Usando a função Lambda com eventos programados

Os eventos programados devem acontecer em intervalos regulares com base em um conjunto de regras. Os eventos programados são usados ​​para executar a função Lambda após um intervalo definido nos serviços do Cloudwatch. Eles são mais usados ​​para trabalhar em tarefas cron junto com o AWS Lambda. Este capítulo explicará com um exemplo simples como enviar e-mail a cada 5 minutos usando eventos programados e AWS Lambda.

Requisitos

Os requisitos para usar a função Lambda com eventos programados são os seguintes -

  • Verifique a id do e-mail usando AWS SES
  • Criar função para usar AWS SES, Cloudwatch e AWS Lambda
  • Criar função Lambda para enviar e-mail
  • Adicionar regra para eventos programados do AWS CloudWatch

Exemplo

O exemplo que vamos considerar adicionará o evento CloudWatch à função AWS Lambda. O Cloudwatch irá acionar o AWS Lambda com base no padrão de tempo anexado a ele. Por exemplo, no exemplo abaixo, usamos 5 minutos como gatilho. Isso significa que a cada 5 minutos, o AWS Lambda será acionado e o AWS Lambda enviará e-mail sempre que acionado.

O diagrama de blocos básico para o mesmo é mostrado abaixo -

Verifique a ID de e-mail usando AWS SES

Faça login no AWS e vá para o serviço AWS SES conforme mostrado abaixo -

Agora clique Simple Email Serviço conforme mostrado -

Clique Email Addresses no lado esquerdo como mostrado -

Ele exibe um botão Verify a New Email Address. Clique.

Entrar Email Addressvocê deseja verificar. CliqueVerify This Email Addressbotão. Você receberá um e-mail da AWS nesse id de e-mail com o assunto: Amazon Web Services - Solicitação de verificação de endereço de e-mail na região Leste dos EUA (Norte da Virgínia)

Clique no link fornecido no e-mail para verificar o endereço de e-mail. Depois de verificado, ele exibirá o id do e-mail da seguinte forma -

Criar função para usar AWS SES, Cloudwatch e AWS Lambda

Você também pode criar uma função que conceda permissão para usar os serviços. Para isso, vá para IAM e selecione Função. Adicione as políticas necessárias e crie a função. Observe que a função criada aqui éevents with lambda.

Criar função Lambda para enviar e-mail

Você terá que seguir as etapas para criar a função Lambda usando o tempo de execução como nodejs.

Agora, adicione o gatilho ao Lambda como mostrado -

Adicionar detalhes a CloudWatch Events Trigger como mostrado abaixo -

Observe que o evento será acionado a cada 5 minutos de acordo com o acionador de regra criado.

O código Lambda para enviar um e-mail é fornecido abaixo -

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
   var eParams = {
      Destination: {
         ToAddresses: ["[email protected]"]
      },
      Message: {
         Body: {
            Text: {
               Data: "this mail comes from aws lambda event scheduling"
            }
         },
         Subject: {
            Data: "Event scheduling from aws lambda"
         }
      },
      Source: "[email protected]"
   };
   console.log('===SENDING EMAIL===');
   var email = ses.sendEmail(eParams, function(err, data) {
      if (err) console.log(err);
      else {
         console.log("===EMAIL SENT===");
         console.log("EMAIL CODE END");
         console.log('EMAIL: ', email);
         context.succeed(event);
         callback(null, "email is send");
      }
   });
};

Agora, precisamos do serviço AWS SES. Você pode adicionar isso usando o código mostrado a seguir -

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});

Para enviar e-mail de nodejs, nós criamos eParams objeto que tem detalhes como o example mail, to mail id e the body with message como segue -

var eParams = {
   Destination: {
      ToAddresses: ["[email protected]"]
   },
   Message: {
      Body: {
         Text: {
            Data: "this mail comes from aws lambda event scheduling"
         }
      },
      Subject: {
         Data: "Event scheduling from aws lambda"
      }
   },
   Source: "[email protected]"
};

O código Lambda para enviar e-mail é o seguinte -

var email = ses.sendEmail(eParams, function(err, data) {
   if (err) console.log(err);
   else {
      console.log("===EMAIL SENT===");
      console.log("EMAIL CODE END");
      console.log('EMAIL: ', email);
      context.succeed(event);
      callback(null, "email is send");
   }
});

Agora, vamos salvar esta função Lambda e verificar o id do e-mail para mensagens. A captura de tela mostrada abaixo mostra que o e-mail é enviado do AWS Lambda a cada 5 minutos.