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

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

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

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

Реквизиты

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

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

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

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

пример

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

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

Создать тему в соцсети

Вам нужно будет выполнить шаги, указанные ниже, чтобы создать тему в SNS -

Шаг 1

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

Шаг 2

Нажмите Simple Notification Сервис и Create topic в этом.

Шаг 3

Затем вам нужно нажать Create new topic кнопка, как показано -

Шаг 4

Введите Topic name а также Display name и нажмите на Create topic. Вы должны увидеть название темы на дисплее следующим образом -

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

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

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

Создать функцию AWS Lambda

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

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

Добавить триггер SNS

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

Затем выберите SNS topic а также Add триггер для функции AWS Lambda, как показано -

Затем добавьте лямбда-код 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. Теперь сохраните лямбда-функцию с требуемой памятью и выделением времени.

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

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

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

Сначала выберите название темы, которую хотите опубликовать. Нажмите наPublish to topic кнопка -

Введите Subject а также Message детали, как показано ниже -

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

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

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

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

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

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

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

Нажмите Publish messageопубликовать сообщение. Вы видите сообщение по номеру телефона, которое выглядит следующим образом -