Учебники

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

Предполагается, что запланированные события происходят через регулярные промежутки времени на основе набора правил. Запланированные события используются для выполнения лямбда-функции после интервала, определенного в сервисах cloudwatch. Их лучше всего использовать для работы на 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 Service, как показано на рисунке —

Простая электронная почта

Нажмите Адреса электронной почты слева, как показано на рисунке —

Адрес электронной почты

Он отображает кнопку Подтвердить новый адрес электронной почты . Нажмите на это.

подтвердите адрес электронной почты

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

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

Отображение электронной почты

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

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

Событие с лямбдой

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

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

Лямбда-события

Теперь добавьте триггер к лямбде, как показано на рисунке —

Добавить триггеры лямбда

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

События Cloudwatch

Обратите внимание, что событие будет запускаться через каждые 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'
});

Чтобы отправить почту с узлаjjs , мы создали объект eParams, который имеет такие детали, как пример почты, идентификатор почты и тело с сообщением следующим образом:

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 минут.