使用 Lambda 函式與 Amazon DynamoDB



當資料新增到表中、更新或刪除時,DynamoDB 可以觸發 AWS Lambda。在本章中,我們將研究一個簡單的示例,該示例將專案新增到 DynamoDB 表中,以及一個將讀取資料併發送包含新增資料的郵件的 AWS Lambda 函式。

先決條件

要使用 Amazon DB 和 AWS Lambda,我們需要按照以下步驟操作:

  • 在 DynamoDB 中建立一個帶主鍵的表

  • 建立一個具有使用 DynamoDB 和 AWS Lambda 許可權的角色。

  • 在 AWS Lambda 中建立函式

  • AWS Lambda 觸發器傳送郵件

  • 在 DynamoDB 中新增資料

讓我們詳細討論每個步驟。

示例

我們將對以下示例進行操作,該示例顯示了 DynamoDB 和 AWS Lambda 之間的基本互動。此示例將幫助您瞭解以下操作:

  • 在 Dynamodb 表中建立名為 customer 的表以及如何在該表中輸入資料。

  • 在輸入資料後觸發 AWS Lambda 函式,並使用 Amazon SES 服務傳送郵件。

解釋示例流程的基本框圖如下所示:

Block Diagram

在 DynamoDB 中建立帶主鍵的表

登入到 AWS 控制檯。轉到 AWS 服務並選擇 DynamoDB,如下所示。選擇 DynamoDB。

Dynamodb

DynamoDB 顯示如下所示的選項:

Dynamodb Option

現在,單擊建立表以建立表,如所示。我們將表命名為customer,該表的primaryKey 為cust_id。單擊建立按鈕將表新增到 dynamodb。

Create Dynamodb

建立的表如下所示:

Table Details

我們可以如下所示向建立的表中新增專案:

Recent Alerts

單擊專案,然後單擊建立專案按鈕,如所示:

Create Item

Create Item2

建立具有 DynamoDB 和 AWS Lambda 許可權的角色

要建立角色,請轉到 AWS 服務並單擊 IAM。

Creating Role

讓我們建立一個僅用於之前建立的 DynamoDB 表的策略:

Create Policy Dynamo

現在,選擇一個服務。注意,我們選擇的服務是DynamoDB。對於操作,我們採用了所有Dynamodb操作,即訪問列表、讀取和寫入。對於資源,我們將選擇表資源型別操作。當您單擊它時,您會看到如下所示的螢幕:

Dynamodb Action

現在,選擇並向其新增 ARN,如所示。我們將從建立的customer 表中獲取ARN詳細資訊,如下所示:

Table Created

在此處輸入arn詳細資訊:

Specify Arn

單擊新增按鈕儲存更改。完成後,單擊檢視策略。輸入策略名稱、描述等,如下所示:

Add Button

單擊建立策略以儲存它。將策略新增到要建立的角色中。從左側選擇角色並輸入詳細資訊。

Create Role

注意,新增的策略為newpolicyfordynamdb、awslambdafullaccess、cloudwatchfullaccessamazonsesfullaccess。新增角色,並在建立 AWS Lambda 函式時使用它。

在 AWS Lambda 中建立函式

因此,我們建立了一個名為newlambdafordynamodb的 Lambda 函式,如所示。

New Lambda

現在,讓我們將 DynamodDB 觸發器新增到建立的 AWS Lambda 中。我們將使用的執行時是 Node.js。

Designer Trigger

您可以在 Dynamodb 觸發器中找到以下需要為 AWS Lambda 配置的詳細資訊:

Dynamo Trigger

現在,只需單擊新增即可將觸發器新增到 AWS Lambda。

AWS Lambda 觸發器傳送郵件

當資料插入 AWS Lambda 時,AWS Lambda 將被觸發。事件引數將包含插入的 dynamodb 資料。這將從事件中讀取資料併發送電子郵件。

傳送電子郵件

要傳送電子郵件,您需要按照以下步驟操作:

步驟 1

轉到 AWS 服務並選擇 SES(簡單電子郵件服務)。驗證我們需要向其傳送電子郵件的電子郵件,如所示:

Verify Email

步驟 2

單擊驗證新電子郵件地址按鈕以新增電子郵件地址。

Verify a New Email

步驟 3

輸入要驗證的電子郵件地址。電子郵件地址將從 Amazon 接收啟用郵件,需要單擊該郵件。啟用完成後,電子郵件 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表。

Customer Created

步驟 2

單擊建立專案

Create Item Dynamo

步驟 3

單擊儲存按鈕並檢查 AWS Lambda 中提供的電子郵件 ID,以檢視 AWS Lambda 是否已傳送郵件。

Gmail
廣告