将Lambda函数与Amazon DynamoDB一起使用

当数据添加到表中,更新或删除时,DynamoDB可以触发AWS Lambda.在本章中,我们将介绍一个简单的示例,它将向DynamoDB表和AWS Lambda添加项目,它将读取数据并发送添加了数据的邮件.

必需品

要使用Amazon DB和AWS Lambda,我们需要按照下面显示的步骤和减去;

  • 使用主键在DynamoDB中创建表

  • 创建一个有权使用DynamoDB和AWS Lambda的角色.

  • 在AWS Lambda中创建功能

  • AWS Lambda Trigger发送邮件

  • 在DynamoDB中添加数据

让我们详细讨论每一步.

示例

我们将在下面的示例中进行说明,该示例显示了DynamoDB与AWS Lambda之间的基本交互.此示例将帮助您了解以下操作 :

  • 在Dynamodb表中创建名为customer的表以及如何输入该表中的数据.

  • 输入数据后触发AWS Lambda函数并使用Amazon SES服务发送邮件.

解释示例流程的基本框图如下所示 :

Block Diagram

使用主键在DynamoDB中创建表

登录AWS控制台.转到AWS Services并选择DynamoDB,如下所示.选择DynamoDB.

Dynamodb

DynamoDB显示如下所示的选项&减去;

Dynamodb Option

现在,点击创建表格如图所示创建表.我们已将该表命名为 customer ,并将该表的主键设置为 cust_id .单击 创建 按钮将表格添加到dynamodb.

Create Dynamodb

创建的表如下所示 :

表详细信息

我们可以将项目添加到创建的表中,如下所示;

最近提醒

点击项目,然后点击创建项目按钮,如下所示&减去;

创建项目


创建Item2

创建具有使用DynamoDB和AWS Lambda的权限的角色

要创建角色,请转到AWS服务并单击IAM.

创建角色

让我们创建ap olicy仅用于之前创建的DynamoDB表 :

Create Policy Dynamo

现在,选择服务.注意我们选择的服务是 DynamoDB .对于操作,我们采取了所有 Dynamodb 操作,即访问列表,读取和写入.对于资源,我们将选择表资源类型操作.单击它时,您可以看到如下屏幕;

Dynamodb Action

现在,选择添加ARN ,如图所示.我们将从客户表获取 ARN 详细信息,如下所示创建 :

表创建

在此输入 arn 详细信息 :

指定Arn

单击添加按钮保存更改.完成后点击查看政策.输入政策名称,说明等,如下所示 :

添加按钮

单击创建策略进行保存.将策略添加到要创建的角色.从左侧选择角色并输入详细信息.

创建角色

观察添加的策略是 newpolicyfordynamdb,awslambdafullaccess,cloudwatchfullaccess amazonsesfullaccess .添加角色并在创建AWS Lambda函数时使用它.

在AWS Lambda中创建函数

因此,我们创建了名为

New Lambda

现在,让我们将DynamodDB触发器添加到创建的AWS Lambda.我们将使用的运行时是Node.js.

Designer Trigger

您可以在Dynamodb触发器中找到要为AWS Lambda&minus配置的以下详细信息;

Dynamo Trigger

现在,只需单击添加即可将触发器添加到AWS Lambda.

AWS Lambda触发器发送邮件

将数据插入到WARS Lambda中时,将触发AWS Lambda. event参数将插入dynamodb数据.这将从事件中读取数据并发送电子邮件.

发送电子邮件

要发送电子邮件,您需要按照下面给出的步骤进行操作;

步骤1

转到AWS服务并选择SES(简单电子邮件服务).验证我们需要发送电子邮件的电子邮件,如下所示;

验证电子邮件

第2步

点击验证新电子邮件地址按钮添加电子邮件地址.

验证新电子邮件

第3步

输入要验证的电子邮件地址它.电子邮件地址将从亚马逊接收和激活需要点击的邮件.激活完成后,将验证电子邮件ID,并可与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: ["xxxxx@gmail.com"]
      },
      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: "xxxxx@gmail.com"
   };
   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

转到表客户在Dynamodb中创建.

Customer Created

第2步

点击创建项目.

创建项目发电机

步骤3

单击保存按钮并检查AWS Lambda中提供的电子邮件ID以查看如果邮件已由AWS Lambda发送.

Gmail