Sử dụng hàm Lambda với Amazon DynamoDB

DynamoDB có thể kích hoạt AWS Lambda khi dữ liệu được thêm vào bảng, được cập nhật hoặc bị xóa. Trong chương này, chúng ta sẽ làm việc trên một ví dụ đơn giản sẽ thêm các mục vào bảng DynamoDB và AWS Lambda sẽ đọc dữ liệu và gửi thư với dữ liệu được thêm vào.

Yêu cầu

Để sử dụng Amazon DB và AWS Lambda, chúng ta cần làm theo các bước như hình dưới đây:

  • Tạo bảng trong DynamoDB bằng khóa chính

  • Tạo một vai trò sẽ có quyền hoạt động với DynamoDBand AWS Lambda.

  • Tạo hàm trong AWS Lambda

  • AWS Lambda Trigger để gửi thư

  • Thêm dữ liệu trong DynamoDB

Hãy để chúng tôi thảo luận chi tiết từng bước này.

Thí dụ

Chúng tôi sẽ giải quyết ví dụ sau đây cho thấy sự tương tác cơ bản giữa DynamoDB và AWS Lambda. Ví dụ này sẽ giúp bạn hiểu các thao tác sau:

  • Tạo bảng được gọi là khách hàng trong bảng Dynamodb và cách nhập dữ liệu vào bảng đó.

  • Kích hoạt chức năng AWS Lambda khi dữ liệu được nhập và gửi thư bằng dịch vụ Amazon SES.

Sơ đồ khối cơ bản giải thích quy trình của ví dụ như hình dưới đây:

Tạo bảng trong DynamoDB bằng khóa chính

Đăng nhập vào bảng điều khiển AWS. Vào Dịch vụ AWS và chọn DynamoDB như hình dưới đây. Chọn DynamoDB.

DynamoDB hiển thị các tùy chọn như hình dưới đây:

Bây giờ, hãy nhấp vào Create tableđể tạo bảng như hình. Chúng tôi đã đặt tên bảng làcustomer với khóa chính cho bảng đó là cust_id. Bấm vàoCreate để thêm bảng vào dynamicodb.

Bảng được tạo như hình dưới đây -

Chúng ta có thể thêm các mục vào bảng đã tạo như sau:

Nhấp chuột Items và bấm vào Create item nút như hình -

Tạo vai trò với quyền làm việc với DynamoDB và AWS Lambda

Để tạo vai trò, hãy chuyển đến Dịch vụ AWS và nhấp vào IAM.

Hãy để chúng tôi tạo một chính sách chỉ được sử dụng cho bảng DynamoDB đã tạo trước đó -

Bây giờ, hãy chọn một Service. Quan sát rằng dịch vụ chúng tôi đã chọn làDynamoDB. Đối vớiActions chúng tôi đã lấy tất cả Dynamodbcác hành động tức là truy cập vào danh sách, đọc và ghi. Đối vớiresources, chúng tôi sẽ chọn các hành động loại tài nguyên bảng. Khi bạn nhấp vào nó, bạn có thể thấy một màn hình như sau:

Bây giờ, hãy chọn tableAdd ARNvào nó như được hiển thị. Chúng ta sẽ lấyARN chi tiết từ customer table được tạo như hình bên dưới -

Đi vào arn chi tiết tại đây -

Nhấp chuột Addđể lưu các thay đổi. Sau khi hoàn thànhClick on Review policy. Nhập tên của chính sách, mô tả, v.v. như hình dưới đây -

Bấm vào create policyđể lưu nó. Thêm chính sách vào vai trò sẽ được tạo. Lựa chọnRole từ phía bên trái và nhập các chi tiết.

Quan sát rằng các chính sách được thêm vào là newpolicyfordynamdb, awslambdafullaccess, cloudwatchfullaccessamazonsesfullaccess. Thêm vai trò và sẽ sử dụng nó trong khi tạo hàm AWS Lambda.

Tạo hàm trong AWS Lambda

Do đó, chúng ta đã tạo hàm Lambda có tên là newlambdafordynamodb như hình.

Bây giờ, chúng ta hãy thêm trình kích hoạt DynamodDB vào AWS Lambda đã tạo. Thời gian chạy mà chúng tôi sẽ sử dụng là Node.js.

Bạn có thể tìm thấy các chi tiết sau trong trình kích hoạt Dynamodb sẽ được định cấu hình cho AWS Lambda:

Bây giờ, chỉ cần nhấp vào Add để thêm trình kích hoạt vào AWS Lambda.

AWS Lambda Trigger để gửi thư

AWS Lambda sẽ được kích hoạt khi dữ liệu được chèn vàoAWS Lambda. Tham số sự kiện sẽ có dữ liệu động được chèn vào. Thao tác này sẽ đọc dữ liệu từ sự kiện và gửi email.

Gửi một e-mail

Để gửi email, bạn cần thực hiện theo các bước dưới đây -

Bước 1

Đi tới dịch vụ AWS và chọn SES (dịch vụ email đơn giản). Xác thực email mà chúng tôi cần gửi email như hình minh họa -

Bước 2

Nhấn vào nút Verify a New Email Address để thêm địa chỉ email.

Bước 3

Nhập một địa chỉ email để xác minh nó. Địa chỉ email sẽ nhận và kích hoạt thư từ Amazon cần được nhấp vào. Sau khi kích hoạt xong, id email sẽ được xác minh và có thể được sử dụng với các dịch vụ AWS.

Bước 4

Mã AWS Lambda đọc dữ liệu từ sự kiện và gửi email được cung cấp bên dưới:

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

Bây giờ, hãy lưu hàm Lambda và dữ liệu trong bảng DynamoDB.

Thêm dữ liệu trong DynamoDB

Sử dụng trình tự sau để thêm dữ liệu trong DynamoDB.

Bước 1

Đi đến bàn customer được tạo trong Dynamodb.

Bước 2

Nhấp chuột Create item.

Bước 3

Nhấp chuột Save và kiểm tra id email được cung cấp trong AWS Lambda để xem liệu thư đã được AWS Lambda gửi hay chưa.