Utilizzo della funzione Lambda con eventi pianificati
Si suppone che gli eventi pianificati si verifichino a intervalli regolari in base a una serie di regole. Gli eventi pianificati vengono utilizzati per eseguire la funzione Lambda dopo un intervallo definito nei servizi cloudwatch. Sono utilizzati al meglio per lavorare su cron job insieme ad AWS Lambda. Questo capitolo spiegherà con un semplice esempio come inviare posta ogni 5 minuti utilizzando eventi pianificati e AWS Lambda.
Requisiti
I requisiti per l'utilizzo della funzione Lambda con eventi pianificati sono i seguenti:
- Verifica l'ID e-mail utilizzando AWS SES
- Crea un ruolo per utilizzare AWS SES, Cloudwatch e AWS Lambda
- Crea funzione Lambda per inviare email
- Aggiungi regola per eventi pianificati da AWS CloudWatch
Esempio
L'esempio che prenderemo in considerazione aggiungerà l'evento CloudWatch alla funzione AWS Lambda. Cloudwatch attiverà AWS Lambda in base al modello temporale ad esso associato. Ad esempio, nell'esempio seguente abbiamo utilizzato 5 minuti come trigger. Significa che ogni 5 minuti AWS Lambda verrà attivato e AWS Lambda invierà posta ogni volta che viene attivato.
Lo schema a blocchi di base per lo stesso è mostrato di seguito:
Verifica l'ID e-mail utilizzando AWS SES
Accedi ad AWS e vai al servizio AWS SES come mostrato di seguito:
Ora fai clic su Simple Email Servizio come mostrato -
Clic Email Addresses sul lato sinistro come mostrato -
Visualizza un pulsante Verify a New Email Address. Cliccalo.
accedere Email Addressvuoi verificare. ClicVerify This Email Addresspulsante. Riceverai posta da AWS su quell'ID e-mail con oggetto: Amazon Web Services - Richiesta di verifica dell'indirizzo e-mail nella regione Stati Uniti orientali (Virginia settentrionale)
Fare clic sul collegamento fornito nella posta per verificare l'indirizzo e-mail. Una volta verificato, mostrerà l'ID e-mail come segue:
Crea un ruolo per utilizzare AWS SES, Cloudwatch e AWS Lambda
È inoltre possibile creare un ruolo che dia il permesso di utilizzare i servizi. Per questo, vai su IAM e seleziona Ruolo. Aggiungi i criteri richiesti e crea il ruolo. Osserva che il ruolo creato qui èevents with lambda.
Crea funzione Lambda per inviare e-mail
Dovrai seguire i passaggi per creare la funzione Lambda utilizzando il runtime come nodejs.
Ora aggiungi il trigger a Lambda come mostrato -
Aggiungi dettagli a CloudWatch Events Trigger come mostrato di seguito -
Tieni presente che l'evento verrà attivato ogni 5 minuti in base al trigger della regola creato.
Di seguito è riportato il codice Lambda per l'invio di un'e-mail:
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");
}
});
};
Ora abbiamo bisogno del servizio AWS SES. Puoi aggiungerlo usando il codice mostrato come segue:
var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-east-1'
});
Per inviare posta da nodejs, abbiamo creato eParams oggetto che ha dettagli come il example mail, to mail id e the body with message come 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]"
};
Il codice Lambda per inviare la posta elettronica è il seguente:
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");
}
});
Ora, salviamo questa funzione Lambda e controlliamo l'ID email per le email. Lo screenshot mostrato di seguito mostra che la posta viene inviata da AWS Lambda ogni 5 minuti.