当数据添加到表中,更新或删除时,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服务发送邮件.
解释示例流程的基本框图如下所示 :
登录AWS控制台.转到AWS Services并选择DynamoDB,如下所示.选择DynamoDB.
DynamoDB显示如下所示的选项&减去;
现在,点击创建表格如图所示创建表.我们已将该表命名为 customer ,并将该表的主键设置为 cust_id .单击 创建 按钮将表格添加到dynamodb.
创建的表如下所示 :
我们可以将项目添加到创建的表中,如下所示;
点击项目,然后点击创建项目按钮,如下所示&减去;
要创建角色,请转到AWS服务并单击IAM.
让我们创建ap olicy仅用于之前创建的DynamoDB表 :
现在,选择服务.注意我们选择的服务是 DynamoDB .对于操作,我们采取了所有 Dynamodb 操作,即访问列表,读取和写入.对于资源,我们将选择表资源类型操作.单击它时,您可以看到如下屏幕;
现在,选择表和添加ARN ,如图所示.我们将从客户表获取 ARN 详细信息,如下所示创建 :
在此输入 arn 详细信息 :
单击添加按钮保存更改.完成后点击查看政策.输入政策名称,说明等,如下所示 :
单击创建策略进行保存.将策略添加到要创建的角色.从左侧选择角色并输入详细信息.
观察添加的策略是 newpolicyfordynamdb,awslambdafullaccess,cloudwatchfullaccess 和 amazonsesfullaccess .添加角色并在创建AWS Lambda函数时使用它.
因此,我们创建了名为
现在,让我们将DynamodDB触发器添加到创建的AWS Lambda.我们将使用的运行时是Node.js.
您可以在Dynamodb触发器中找到要为AWS Lambda&minus配置的以下详细信息;
现在,只需单击添加即可将触发器添加到AWS Lambda.
将数据插入到WARS Lambda中时,将触发AWS Lambda. event参数将插入dynamodb数据.这将从事件中读取数据并发送电子邮件.
要发送电子邮件,您需要按照下面给出的步骤进行操作;
转到AWS服务并选择SES(简单电子邮件服务).验证我们需要发送电子邮件的电子邮件,如下所示;
点击验证新电子邮件地址按钮添加电子邮件地址.
输入要验证的电子邮件地址它.电子邮件地址将从亚马逊接收和激活需要点击的邮件.激活完成后,将验证电子邮件ID,并可与AWS服务一起使用.
读取数据的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中创建.
点击创建项目.
单击保存按钮并检查AWS Lambda中提供的电子邮件ID以查看如果邮件已由AWS Lambda发送.