Учебники

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

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

DynamoDB показывает параметры, как показано ниже —

Опция Dynamodb

Теперь нажмите « Создать таблицу», чтобы создать таблицу, как показано на рисунке. Мы назвали таблицу как клиент с первичным ключом для этой таблицы как cust_id . Нажмите кнопку Создать , чтобы добавить таблицу в DynamodB.

Создать Dynamodb

Созданная таблица, как показано ниже —

Детали таблицы

Мы можем добавить элементы в таблицу, созданную следующим образом:

Недавние оповещения

Нажмите « Элементы» и нажмите кнопку « Создать элемент» , как показано на рисунке —

Создать предмет

Создать Item2

Создание роли с разрешениями для работы с DynamoDB и AWS Lambda

Чтобы создать роль, перейдите в сервисы AWS и нажмите IAM.

Создание роли

Давайте создадим политику, которая будет использоваться только для таблицы DynamoDB, созданной ранее —

Создать политику Динамо

Теперь выберите сервис . Обратите внимание, что выбранный нами сервис — DynamoDB . Для действий мы предприняли все действия Dynamodb, то есть доступ к списку, чтение и запись. Для ресурсов мы выберем тип ресурсов таблицы действий. Когда вы нажимаете на нее, вы можете увидеть экран следующим образом —

Dynamodb Action

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