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, вам нужно будет выполнить следующие шаги:
Шаг 1
Войдите в консоль AWS и перейдите к сервису SNS в Amazon, как показано ниже —
Шаг 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 и добавьте триггер в функцию 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. Теперь сохраните функцию 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 и номер телефона, указанный выше.
Нажмите Опубликовать сообщение, чтобы опубликовать сообщение. Вы видите сообщение на номер телефона, указанный ниже —