Использование лямбда-функции в 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опубликовать сообщение. Вы видите сообщение по номеру телефона, которое выглядит следующим образом -