Использование лямбда-функции с запланированными событиями

Предполагается, что запланированные события должны происходить через определенные промежутки времени в соответствии с набором правил. Запланированные события используются для выполнения лямбда-функции после интервала, определенного в службах облачного наблюдения. Их лучше всего использовать для работы с заданиями cron вместе с AWS Lambda. В этой главе на простом примере объясняется, как отправлять почту через каждые 5 минут с использованием запланированных событий и AWS Lambda.

Реквизиты

Требования для использования лямбда-функции с запланированными событиями следующие:

  • Подтвердите адрес электронной почты с помощью AWS SES
  • Создайте роль для использования AWS SES, Cloudwatch и AWS Lambda
  • Создайте лямбда-функцию для отправки электронной почты
  • Добавить правило для запланированных событий из AWS CloudWatch

пример

Пример, который мы собираемся рассмотреть, добавит событие CloudWatch в функцию AWS Lambda. Cloudwatch запустит AWS Lambda в зависимости от привязанного к нему временного шаблона. Например, в приведенном ниже примере мы использовали 5 минут в качестве триггера. Это означает, что каждые 5 минут AWS Lambda будет запускаться, а AWS Lambda будет отправлять почту при каждом запуске.

Базовая блок-схема для того же показана ниже -

Подтвердите идентификатор электронной почты с помощью AWS SES

Войдите в AWS и перейдите в сервис AWS SES, как показано ниже -

Теперь нажмите Simple Email Сервис, как показано -

Нажмите Email Addresses с левой стороны, как показано -

На нем отображается кнопка Verify a New Email Address. Щелкните по нему.

Войти Email Addressвы хотите проверить. НажмитеVerify This Email Addressкнопка. Вы получите письмо от AWS на этот идентификатор электронной почты с темой электронной почты: Amazon Web Services - запрос проверки адреса электронной почты в регионе Восток США (Северная Вирджиния)

Щелкните ссылку в письме, чтобы подтвердить адрес электронной почты. После проверки он отобразит идентификатор электронной почты следующим образом:

Создайте роль для использования AWS SES, Cloudwatch и AWS Lambda

Вы также можете создать роль, которая дает разрешение на использование служб. Для этого перейдите в IAM и выберите Роль. Добавьте необходимые политики и создайте роль. Обратите внимание, что здесь создана рольevents with lambda.

Создайте лямбда-функцию для отправки электронной почты

Вам нужно будет выполнить шаги, чтобы создать функцию Lambda, используя среду выполнения как nodejs.

Теперь добавьте триггер в Lambda, как показано -

Добавить детали в CloudWatch Events Trigger как показано ниже -

Обратите внимание, что событие будет запускаться каждые 5 минут в соответствии с созданным триггером правила.

Лямбда-код для отправки электронного письма приведен ниже -

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

Теперь нам нужен сервис AWS SES. Вы можете добавить это, используя код, показанный ниже -

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

Для отправки почты от nodejs, мы создали eParams объект, который имеет такие детали, как example mail, to mail id и the body with message следующим образом -

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

Лямбда-код для отправки электронной почты выглядит следующим образом:

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

Теперь давайте сохраним эту функцию Lambda и проверим идентификатор электронной почты на наличие писем. На приведенном ниже снимке экрана показано, что письмо отправляется из AWS Lambda каждые 5 минут.