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

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

Реквизиты

Чтобы использовать Amazon DB и AWS Lambda, нам нужно выполнить шаги, как показано ниже -

  • Создать таблицу в DynamoDB с первичным ключом

  • Создайте роль, которая будет иметь разрешение на работу с DynamoDBand AWS Lambda.

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

  • AWS Lambda Trigger для отправки почты

  • Добавить данные в DynamoDB

Давайте подробно обсудим каждый из этих шагов.

пример

Мы собираемся поработать на следующем примере, который показывает базовое взаимодействие между DynamoDB и AWS Lambda. Этот пример поможет вам понять следующие операции -

  • Создание таблицы под названием customer в таблице Dynamodb и способ ввода данных в эту таблицу.

  • Запуск функции AWS Lambda после ввода данных и отправка почты с помощью сервиса Amazon SES.

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

Создать таблицу в DynamoDB с первичным ключом

Войдите в консоль AWS. Перейдите в AWS Services и выберите DynamoDB, как показано ниже. Выберите DynamoDB.

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

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

Созданная таблица выглядит так, как показано ниже -

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

Нажмите Items и нажмите Create item кнопка, как показано -

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

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

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

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

Теперь выберите table и Add ARNк нему, как показано. Мы получимARN детали из customer table создан, как показано ниже -

Войти arn подробности здесь -

Нажмите Addкнопку, чтобы сохранить изменения. Когда-то сделалиClick on Review policy. Введите название политики, описание и т. Д., Как показано ниже -

Нажмите на create policyчтобы спасти его. Добавьте политику к создаваемой роли. ВыбратьRole с левой стороны и введите детали.

Обратите внимание, что добавленные политики newpolicyfordynamdb, awslambdafullaccess, cloudwatchfullaccess и amazonsesfullaccess. Добавьте роль и будем использовать ее при создании функции AWS Lambda.

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

Таким образом, мы создали лямбда-функцию с именем newlambdafordynamodb как показано.

Теперь давайте добавим триггер DynamodDB к созданной AWS Lambda. Мы будем использовать среду выполнения - Node.js.

Вы можете найти следующие сведения в триггере Dynamodb, которые необходимо настроить для AWS Lambda:

Теперь просто нажмите Add чтобы добавить триггер в AWS Lambda.

AWS Lambda Trigger для отправки почты

AWS Lambda срабатывает, когда данные вставляются вAWS Lambda. В параметр события будут вставлены данные Dynamodb. Это прочитает данные о мероприятии и отправит электронное письмо.

Отправка электронного письма

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

Шаг 1

Перейдите в сервис AWS и выберите SES (простой почтовый сервис). Подтвердите адрес электронной почты, на который нам нужно отправить электронное письмо, как показано -

Шаг 2

Нажмите кнопку Verify a New Email Address чтобы добавить адрес электронной почты.

Шаг 3

Введите адрес электронной почты, чтобы подтвердить его. На адрес электронной почты будет отправлено письмо с активацией от Amazon, которое необходимо щелкнуть. После завершения активации идентификатор электронной почты проверяется и может использоваться с сервисами AWS.

Шаг 4

Код AWS Lambda, который считывает данные из события и отправляет электронную почту, приведен ниже:

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

Теперь сохраните функцию Lambda и данные в таблице DynamoDB.

Добавить данные в DynamoDB

Используйте следующую последовательность для добавления данных в DynamoDB.

Шаг 1

Иди к столу customer создан в Dynamodb.

Шаг 2

Нажмите Create item.

Шаг 3

Нажмите Save и проверьте идентификатор электронной почты, указанный в AWS Lambda, чтобы узнать, было ли письмо отправлено AWS Lambda.