DynamoDB может запускать AWS Lambda, когда данные добавляются в таблицы, обновляются или удаляются. В этой главе мы будем работать над простым примером, который будет добавлять элементы в таблицу DynamoDB и AWS Lambda, которые будут считывать данные и отправлять почту с добавленными данными.
реквизиты
Чтобы использовать Amazon DB и AWS Lambda, нам нужно выполнить следующие шаги:
-
Создать таблицу в DynamoDB с первичным ключом
-
Создайте роль, которая будет иметь разрешение на работу с DynamoDB и AWS Lambda.
-
Создать функцию в AWS Lambda
-
AWS Lambda Trigger для отправки почты
-
Добавить данные в DynamoDB
Создать таблицу в DynamoDB с первичным ключом
Создайте роль, которая будет иметь разрешение на работу с DynamoDB и AWS Lambda.
Создать функцию в AWS Lambda
AWS Lambda Trigger для отправки почты
Добавить данные в DynamoDB
Давайте обсудим каждый из этих шагов подробно.
пример
Мы собираемся поработать над следующим примером, который показывает базовое взаимодействие между DynamoDB и AWS Lambda. Этот пример поможет вам понять следующие операции —
-
Создание таблицы с именем customer в таблице Dynamodb и способ ввода данных в эту таблицу.
-
Запуск функции AWS Lambda после ввода данных и отправка почты с помощью сервиса Amazon SES.
Создание таблицы с именем customer в таблице Dynamodb и способ ввода данных в эту таблицу.
Запуск функции AWS Lambda после ввода данных и отправка почты с помощью сервиса Amazon SES.
Основная блок-схема, поясняющая последовательность действий, показана ниже:
Создать таблицу в DynamoDB с первичным ключом
Войдите в консоль AWS. Перейдите в Сервисы AWS и выберите DynamoDB, как показано ниже. Выберите DynamoDB.
DynamoDB показывает параметры, как показано ниже —
Теперь нажмите « Создать таблицу», чтобы создать таблицу, как показано на рисунке. Мы назвали таблицу как клиент с первичным ключом для этой таблицы как cust_id . Нажмите кнопку Создать , чтобы добавить таблицу в DynamodB.
Созданная таблица, как показано ниже —
Мы можем добавить элементы в таблицу, созданную следующим образом:
Нажмите « Элементы» и нажмите кнопку « Создать элемент» , как показано на рисунке —
Создание роли с разрешениями для работы с DynamoDB и AWS Lambda
Чтобы создать роль, перейдите в сервисы AWS и нажмите IAM.
Давайте создадим политику, которая будет использоваться только для таблицы DynamoDB, созданной ранее —
Теперь выберите сервис . Обратите внимание, что выбранный нами сервис — DynamoDB . Для действий мы предприняли все действия Dynamodb, то есть доступ к списку, чтение и запись. Для ресурсов мы выберем тип ресурсов таблицы действий. Когда вы нажимаете на нее, вы можете увидеть экран следующим образом —
Теперь выберите таблицу и добавьте к ней ARN, как показано. Мы получим данные ARN из таблицы клиентов, созданной, как показано ниже —
Введите подробности арн здесь —
Нажмите кнопку Добавить , чтобы сохранить изменения. После этого нажмите на Политику просмотра . Введите название политики, описание и т. Д., Как показано ниже —
Нажмите на создать политику, чтобы сохранить ее. Добавьте политику к создаваемой роли. Выберите роль с левой стороны и введите детали.
Обратите внимание, что добавлены следующие политики: policyfordynamdd, awslambdafullaccess, cloudwatchfullaccess и amazonsesfullaccess . Добавьте роль и будете использовать ее при создании лямбда-функции AWS.
Создать функцию в AWS Lambda
Таким образом, мы создали лямбда-функцию newlambdafordynamodb, как показано на рисунке.
Теперь давайте добавим триггер DynamodDB к созданной AWS Lambda. Время выполнения, которое мы будем использовать, — Node.js.
В триггере Dynamodb вы можете найти следующие подробности, которые нужно настроить для AWS Lambda:
Теперь просто нажмите кнопку Добавить, чтобы добавить триггер в AWS Lambda.
AWS Lambda Trigger для отправки почты
AWS Lambda будет срабатывать при вставке данных в AWS Lambda. В параметре события будут вставлены данные DynamodB. Это будет читать данные с мероприятия и отправлять электронную почту.
Отправка электронной почты
Чтобы отправить электронное письмо, вам необходимо выполнить следующие шаги:
Шаг 1
Перейдите в сервис AWS и выберите SES (простой почтовый сервис). Подтвердите адрес электронной почты, на который нам нужно отправить сообщение, как показано на рисунке —
Шаг 2
Нажмите кнопку Подтвердить новый адрес электронной почты, чтобы добавить адрес электронной почты.
Шаг 3
Введите адрес электронной почты, чтобы подтвердить это. На адрес электронной почты будет получено и письмо активации от Amazon, на которое нужно нажать. После завершения активации идентификатор электронной почты проверяется и может использоваться с сервисами AWS.
Шаг 4
Лямбда-код AWS, который считывает данные с мероприятия и отправляет электронную почту, приведен ниже —
var aws = require('aws-sdk'); var ses = new aws.SES({ region: 'us-east-1' }); exports.handler = function(event, context, callback) { console.log(event); let tabledetails = JSON.parse(JSON.stringify(event.Records[0].dynamodb)); console.log(tabledetails.NewImage.address.S); let customerid = tabledetails.NewImage.cust_id.S; let name = tabledetails.NewImage.name.S; let address = tabledetails.NewImage.address.S; var eParams = { Destination: { ToAddresses: ["[email protected]"] }, Message: { Body: { Text: { Data: "The data added is as follows:\n CustomerId:"+customerid+"\n Name:"+name+"\nAddress:"+address } }, Subject: { Data: "Data Inserted in Dynamodb table customer" } }, 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"); } }); }
Теперь сохраните лямбда-функцию и данные в таблице DynamoDB.
Добавить данные в DynamoDB
Используйте следующую последовательность для добавления данных в DynamoDB.
Шаг 1
Перейти к таблице клиентов, созданной в Dynamodb.
Шаг 2
Нажмите Создать элемент .
Шаг 3
Нажмите кнопку Сохранить и проверьте идентификатор электронной почты, указанный в AWS Lambda, чтобы узнать, было ли письмо отправлено AWS Lambda.