Uso de la función Lambda con eventos programados
Se supone que los eventos programados suceden a intervalos regulares según un conjunto de reglas. Los eventos programados se utilizan para ejecutar la función Lambda después de un intervalo que se define en los servicios de observación en la nube. Se utilizan mejor para trabajar en trabajos cron junto con AWS Lambda. Este capítulo explicará con un ejemplo sencillo cómo enviar correo después de cada 5 minutos utilizando eventos programados y AWS Lambda.
Requisitos
Los requisitos para usar la función Lambda con eventos programados son los siguientes:
- Verifique la identificación del correo electrónico con AWS SES
- Crear rol para usar AWS SES, Cloudwatch y AWS Lambda
- Crear función Lambda para enviar correo electrónico
- Agregar regla para eventos programados desde AWS CloudWatch
Ejemplo
El ejemplo que vamos a considerar agregará el evento CloudWatch a la función AWS Lambda. Cloudwatch activará AWS Lambda según el patrón de tiempo adjunto. Por ejemplo, en el siguiente ejemplo, hemos utilizado 5 minutos como disparador. Significa que por cada 5 minutos, AWS Lambda se activará y AWS Lambda enviará correo siempre que se active.
El diagrama de bloques básico para el mismo se muestra a continuación:
Verifique el ID de correo electrónico con AWS SES
Inicie sesión en AWS y vaya al servicio AWS SES como se muestra a continuación:
Ahora, haga clic en Simple Email Servicio como se muestra -
Hacer clic Email Addresses en el lado izquierdo como se muestra -
Muestra un botón Verify a New Email Address. Pinchalo.
Entrar Email Addressdesea verificar. Hacer clicVerify This Email Addressbotón. Recibirá correo de AWS en esa identificación de correo electrónico con el asunto del correo electrónico: Amazon Web Services - Solicitud de verificación de dirección de correo electrónico en la región Este de EE. UU. (Norte de Virginia)
Haga clic en el enlace proporcionado en el correo para verificar la dirección de correo electrónico. Una vez verificado, mostrará la identificación de correo electrónico de la siguiente manera:
Crear rol para usar AWS SES, Cloudwatch y AWS Lambda
También puede crear un rol que otorgue permiso para utilizar los servicios. Para ello, vaya a IAM y seleccione Rol. Agregue las políticas necesarias y cree el rol. Observe que el rol creado aquí esevents with lambda.
Crear función Lambda para enviar correo electrónico
Deberá seguir los pasos para crear la función Lambda utilizando el tiempo de ejecución como nodejs.
Ahora, agregue el disparador a Lambda como se muestra:
Agregar detalles a CloudWatch Events Trigger como se muestra a continuación -
Tenga en cuenta que el evento se activará cada 5 minutos según el activador de regla creado.
El código Lambda para enviar un correo electrónico se proporciona a continuación:
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");
}
});
};
Ahora, necesitamos el servicio AWS SES. Puede agregar esto usando el código que se muestra a continuación:
var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-east-1'
});
Para enviar correo desde nodejs, hemos creado eParams objeto que tiene detalles como el example mail, to mail id y the body with message como sigue -
var eParams = {
Destination: {
ToAddresses: ["[email protected]gmail.com"]
},
Message: {
Body: {
Text: {
Data: "this mail comes from aws lambda event scheduling"
}
},
Subject: {
Data: "Event scheduling from aws lambda"
}
},
Source: "[email protected]"
};
El código Lambda para enviar correo electrónico es el siguiente:
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");
}
});
Ahora, guardemos esta función Lambda y verifiquemos la identificación del correo electrónico para ver si hay correos. La captura de pantalla que se muestra a continuación muestra que el correo se envía desde AWS Lambda cada 5 minutos.