Учебники

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

Amazon SNS — это сервис, используемый для push-уведомлений. В этой главе мы объясним работу AWS Lambda и Amazon SNS с помощью примера, где будут выполняться следующие действия:

  • Создайте тему в сервисе SNS и используйте AWS Lambda Добавить темы в CloudWatch

  • Отправьте текстовое сообщение SNS на указанный номер телефона.

Создайте тему в сервисе SNS и используйте AWS Lambda Добавить темы в CloudWatch

Отправьте текстовое сообщение SNS на указанный номер телефона.

реквизиты

Чтобы создать тему в сервисе SNS и использовать AWS Lambda Add Topics to CloudWatch, нам не нужно выполнять шаги, указанные ниже:

  • Создать тему в SNS
  • Создать роль для разрешения в IAM
  • Создать лямбда-функцию AWS
  • Опубликовать в теме, чтобы активировать триггер
  • Проверьте детали сообщения в сервисе CloudWatch.

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

  • Добавьте код в AWS Lambda, чтобы отправить сообщение на свой телефон.

пример

В этом примере мы создадим тему в SNS. Когда данные вводятся в тему для публикации, запускается AWS Lambda. Детали темы регистрируются в CloudWatch, и AWS Lambda отправляет сообщение по телефону.

Вот базовая блок-схема, которая объясняет то же самое —

Блок-схема Sns

Создать тему в SNS

Чтобы создать тему в SNS, вам нужно будет выполнить следующие шаги:

Шаг 1

Войдите в консоль AWS и перейдите к сервису SNS в Amazon, как показано ниже —

Сервис Amazon Sns

Шаг 2

Нажмите Simple Notification Service и создайте в нем тему .

Служба уведомлений

Шаг 3

Затем вы должны нажать кнопку Создать новую тему , как показано на рисунке —

Новая тема

Шаг 4

Введите название темы и отображаемое имя и нажмите « Создать тему» . Вы должны увидеть название темы на дисплее следующим образом:

Название темы

Создать роль для разрешения в IAM

Чтобы создать роль для работы с сервисом AWS Lambda и SNS, нам необходимо войти в консоль AWS. Затем выберите IAM из сервисов Amazon и щелкните роль с левой стороны, как показано ниже.

Роль Разрешения

Обратите внимание, что мы добавили политики для SNS, Lambda и CloudWatch. Добавьте rolename и нажмите кнопку Создать роль, чтобы завершить процесс создания роли.

Добавленные Политики

Создать лямбда-функцию AWS

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

Для этого войдите в консоль AWS и выберите AWS Lambda из сервисов AWS. Добавьте имя функции, сведения о роли и т. Д. И создайте лямбда-функцию AWS, как показано на рисунке.

Создать лямбду

Добавить SNS Trigger

Чтобы добавить триггер SNS, введите сведения о конфигурации SNS, как показано на рисунке —

Добавить Sns

Затем выберите тему SNS и добавьте триггер в функцию AWS Lambda, как показано ниже:

Sns Тема

Затем добавьте лямбда-код AWS, указанный ниже:

exports.handler = function(event, context, callback) {
   console.log("AWS lambda and SNS trigger ");
   console.log(event);
   const sns = event.Records[0].Sns.Message;
   console.log(sns)
   callback(null, sns);
};

В приведенном выше коде event.Records [0] .Sns.Message предоставляет добавленные детали сообщения. Мы добавили журналы консоли, чтобы увидеть их в CloudWatch. Теперь сохраните функцию Lambda с необходимой памятью и распределением времени.

Опубликовать в теме, чтобы активировать триггер

Напомним, что мы уже создали тему в SNS на шаге 1. Теперь мы опубликуем эту тему и увидим подробности в CloudWatch, которые будут запущены AWS Lambda.

Опубликовать в теме

Сначала выберите название темы, которую вы хотите опубликовать. Нажмите кнопку « Опубликовать в теме»

Опубликовать тему

Введите тему и детали сообщения, как показано ниже —

Детали сообщения

Вы также можете выбрать формат сообщения JSON для отправки в стиле JSON . Нажмите кнопку Опубликовать сообщение в конце экрана.

Проверьте детали сообщения в сервисе CloudWatch

Войдите в консоль AWS и откройте сервис CloudWatch. Нажмите на журналы с левой стороны и выберите журналы для созданной функции лямбда AWS. Вы можете найти следующий экран для журналов с сообщениями, созданными как показано выше —

Проверьте сообщение

Добавьте код в AWS Lambda, чтобы отправить сообщение на телефон

Здесь будет использоваться обмен текстовыми сообщениями SNS для отправки сообщений на телефон с помощью AWS Lambda. Вы можете использовать следующий код для обновления лямбда-кода AWS следующим образом:

const aws =  require("aws-sdk");
const sns = new aws.SNS({
   region:'us-east-1'
});
exports.handler = function(event, context, callback) {
   console.log("AWS lambda and SNS trigger ");
   console.log(event);
   const snsmessage = event.Records[0].Sns.Message;
   console.log(snsmessage);
   sns.publish({
      Message: snsmessage,
      PhoneNumber: '+911212121212'
   }, function (err, data) {
      if (err) {
         console.log(err);
         callback(err, null);
      } else {
         console.log(data);
         callback(null, data);
      }	
   });
};

Мы добавили AWS SDK и сервис SNS для отправки сообщений. Сообщение о событии от SNS отправляется в виде текстового сообщения на указанный номер телефона.

Обратите внимание на следующий код, например:

sns.publish({
   Message: snsmessage,
   PhoneNumber: '+911212121212'
}, function (err, data) {
   if (err) {
      console.log(err);
      callback(err, null);
   } else {
      console.log(data);
      callback(null, data);
   }	
});

Введите тему сейчас, чтобы увидеть сообщение в cloudwatch и номер телефона, указанный выше.

Введите тему

Нажмите Опубликовать сообщение, чтобы опубликовать сообщение. Вы видите сообщение на номер телефона, указанный ниже —