Utilisation de la fonction Lambda avec des événements planifiés

Les événements planifiés sont supposés se produire à intervalles réguliers en fonction d'un ensemble de règles. Les événements planifiés sont utilisés pour exécuter la fonction Lambda après un intervalle défini dans les services cloudwatch. Ils sont mieux utilisés pour travailler sur des tâches cron avec AWS Lambda. Ce chapitre explique avec un exemple simple comment envoyer du courrier toutes les 5 minutes à l'aide d'événements planifiés et d'AWS Lambda.

Conditions requises

Les conditions requises pour utiliser la fonction Lambda avec les événements planifiés sont les suivantes:

  • Vérifier l'ID de messagerie à l'aide d'AWS SES
  • Créer un rôle pour utiliser AWS SES, Cloudwatch et AWS Lambda
  • Créer une fonction Lambda pour envoyer un e-mail
  • Ajouter une règle pour les événements planifiés à partir d'AWS CloudWatch

Exemple

L'exemple que nous allons considérer ajoutera l'événement CloudWatch à la fonction AWS Lambda. Cloudwatch déclenchera AWS Lambda en fonction du modèle de temps qui lui est associé. Par exemple, dans l'exemple ci-dessous, nous avons utilisé 5 minutes comme déclencheur. Cela signifie que toutes les 5 minutes, AWS Lambda sera déclenché et AWS Lambda enverra des e-mails chaque fois qu'il sera déclenché.

Le schéma de principe de base pour le même est montré ci-dessous -

Vérifier l'ID de messagerie à l'aide d'AWS SES

Connectez-vous à AWS et accédez au service AWS SES comme indiqué ci-dessous -

Maintenant, cliquez sur Simple Email Service comme indiqué -

Cliquez sur Email Addresses sur le côté gauche comme illustré -

Il affiche un bouton Verify a New Email Address. Cliquez dessus.

Entrer Email Addressvous souhaitez vérifier. Cliquez surVerify This Email Addressbouton. Vous recevrez un e-mail d'AWS sur cet identifiant d'e-mail avec l'objet de l'e-mail: Amazon Web Services - Demande de vérification d'adresse e-mail dans la région USA Est (Virginie du Nord)

Cliquez sur le lien fourni dans l'e-mail pour vérifier l'adresse e-mail. Une fois vérifié, il affichera l'identifiant de l'e-mail comme suit -

Créer un rôle pour utiliser AWS SES, Cloudwatch et AWS Lambda

Vous pouvez également créer un rôle qui autorise l'utilisation des services. Pour cela, accédez à IAM et sélectionnez Rôle. Ajoutez les stratégies requises et créez le rôle. Observez que le rôle créé ici estevents with lambda.

Créer une fonction Lambda pour envoyer un e-mail

Vous devrez suivre les étapes pour créer une fonction Lambda en utilisant le runtime en tant que nodejs.

Maintenant, ajoutez un déclencheur à Lambda comme indiqué -

Ajouter des détails à CloudWatch Events Trigger comme indiqué ci-dessous -

Notez que l'événement sera déclenché toutes les 5 minutes selon le déclencheur de règle créé.

Le code Lambda pour l'envoi d'un e-mail est donné ci-dessous -

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");
      }
   });
};

Maintenant, nous avons besoin du service AWS SES. Vous pouvez l'ajouter en utilisant le code ci-dessous -

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

Pour envoyer des e-mails depuis nodejs, Nous avons créé eParams objet qui a des détails comme le example mail, to mail id et the body with message comme suit -

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]"
};

Le code Lambda pour envoyer un e-mail est le suivant:

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");
   }
});

Maintenant, sauvegardons cette fonction Lambda et vérifions l'identifiant de messagerie pour les e-mails. La capture d'écran ci-dessous montre que le courrier est envoyé depuis AWS Lambda toutes les 5 minutes.