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.