Sử dụng Hàm Lambda với Amazon SNS

Amazon SNS là một dịch vụ được sử dụng để thông báo đẩy. Trong chương này, chúng tôi sẽ giải thích hoạt động của AWS Lambda và Amazon SNS với sự trợ giúp của một ví dụ nơi sẽ thực hiện các hành động sau:

  • Tạo chủ đề trong Dịch vụ SNS và sử dụng AWS Lambda Thêm chủ đề vào CloudWatch

  • Gửi tin nhắn văn bản SNS trên số điện thoại đã cho.

Yêu cầu

Để tạo Chủ đề trong Dịch vụ SNS và sử dụng AWS Lambda Thêm Chủ đề vào CloudWatch, chúng tôi không cần thực hiện theo các bước được cung cấp bên dưới -

  • Tạo chủ đề trong SNS
  • Tạo vai trò để có quyền trong IAM
  • Tạo hàm AWS Lambda
  • Xuất bản lên chủ đề để kích hoạt trình kích hoạt
  • Kiểm tra chi tiết tin nhắn trong dịch vụ CloudWatch.

Để gửi tin nhắn văn bản SNS theo số điện thoại đã cho, chúng ta cần thực hiện như sau:

  • Thêm mã trong AWS Lambda để gửi tin nhắn đến điện thoại của bạn.

Thí dụ

Trong ví dụ này, chúng tôi sẽ tạo một chủ đề trong SNS. Khi thông tin chi tiết được nhập vào chủ đề để xuất bản, AWS Lambda sẽ được kích hoạt. Các chi tiết về chủ đề được đăng nhập trong CloudWatch và một tin nhắn được gửi qua điện thoại bởi AWS Lambda.

Đây là một sơ đồ khối cơ bản giải thích tương tự -

Tạo chủ đề trong SNS

Bạn sẽ phải làm theo các bước dưới đây để tạo chủ đề trong SNS -

Bước 1

Đăng nhập vào Bảng điều khiển AWS và truy cập dịch vụ SNS trong Amazon như hình dưới đây -

Bước 2

Nhấp chuột Simple Notification Dịch vụ và Create topic trong đó.

Bước 3

Sau đó, bạn phải nhấp vào Create new topic nút như hình -

Bước 4

Nhập Topic nameDisplay name và nhấp vào Create topic. Bạn sẽ thấy tên chủ đề trong màn hình như sau:

Tạo vai trò cho quyền trong IAM

Để tạo Vai trò hoạt động với AWS Lambda và dịch vụ SNS, chúng ta cần đăng nhập vào bảng điều khiển AWS. Sau đó, chọn IAM từ các dịch vụ của Amazon và nhấp vào role từ phía bên trái như hình dưới đây.

Quan sát rằng chúng tôi đã thêm các chính sách cho SNS, Lambda và CloudWatch. Thêm tên vai trò và nhấp vào nút Tạo vai trò để hoàn tất quá trình tạo vai trò.

Tạo hàm AWS Lambda

Trong phần này, chúng ta hãy hiểu cách tạo hàm AWS Lambda bằng cách sử dụng nodejs làm thời gian chạy.

Với mục đích này, hãy đăng nhập vào bảng điều khiển AWS và chọn AWS Lambda từ các dịch vụ AWS. Thêm tên hàm, chi tiết vai trò, v.v. và tạo hàm AWS Lambda như hình minh họa.

Thêm trình kích hoạt SNS

Để thêm trình kích hoạt SNS, hãy nhập chi tiết cấu hình SNS như minh họa -

Sau đó, chọn SNS topicAdd trình kích hoạt cho chức năng AWS Lambda như được hiển thị -

Sau đó, thêm mã AWS lambda được cung cấp bên dưới -

exports.handler = function(event, context, callback) {
   console.log("AWS lambda and SNS trigger ");
   console.log(event);
   const sns = event.Records[0].Sns.Message;
   console.log(sns)
   callback(null, sns);
};

Trong đoạn mã trên, event.Records[0].Sns.Messagecung cấp thông tin chi tiết được thêm vào. Chúng tôi đã thêm nhật ký bảng điều khiển để xem chúng trong CloudWatch. Bây giờ, hãy lưu hàm Lambda với bộ nhớ và thời gian cần thiết.

Xuất bản lên chủ đề để kích hoạt trình kích hoạt

Nhớ lại rằng chúng tôi đã tạo chủ đề trong SNS ở Bước 1. Bây giờ chúng tôi sẽ xuất bản chủ đề này và xem chi tiết trong CloudWatch sẽ được kích hoạt bởi AWS Lambda -

Xuất bản lên chủ đề

Đầu tiên Chọn tên của chủ đề bạn muốn xuất bản. Bấm vàoPublish to topic nút -

Nhập SubjectMessage chi tiết như hình bên dưới -

Bạn cũng có thể chọn JSON định dạng tin nhắn để gửi JSONPhong cách. Nhấp chuộtPublish the message ở cuối màn hình.

Kiểm tra chi tiết tin nhắn trong Dịch vụ CloudWatch

Đăng nhập vào bảng điều khiểnAWS và mở dịch vụ CloudWatch. Nhấp vào nhật ký ở bên trái và chọn nhật ký cho chức năng AWS Lambda đã tạo. Bạn có thể tìm thấy màn hình hiển thị sau cho các bản ghi với các thông báo được tạo như hình trên -

Thêm mã trong AWS Lambda để gửi tin nhắn đến điện thoại của bạn

Tại đây sẽ sử dụng tính năng nhắn tin SNS Text để gửi tin nhắn trên điện thoại bằng AWS Lambda. Bạn có thể sử dụng mã sau để cập nhật mã AWS Lambda như sau:

const aws =  require("aws-sdk");
const sns = new aws.SNS({
   region:'us-east-1'
});
exports.handler = function(event, context, callback) {
   console.log("AWS lambda and SNS trigger ");
   console.log(event);
   const snsmessage = event.Records[0].Sns.Message;
   console.log(snsmessage);
   sns.publish({
      Message: snsmessage,
      PhoneNumber: '+911212121212'
   }, function (err, data) {
      if (err) {
         console.log(err);
         callback(err, null);
      } else {
         console.log(data);
         callback(null, data);
      }	
   });
};

Chúng tôi đã thêm AWS SDK và dịch vụ SNS để sử dụng để gửi tin nhắn. Tin nhắn từ sự kiện đến từ SNS được gửi dưới dạng tin nhắn văn bản trên số điện thoại đã cho.

Hãy quan sát đoạn mã sau để làm ví dụ:

sns.publish({
   Message: snsmessage,
   PhoneNumber: '+911212121212'
}, function (err, data) {
   if (err) {
      console.log(err);
      callback(err, null);
   } else {
      console.log(data);
      callback(null, data);
   }	
});

Nhập chủ đề ngay bây giờ để xem tin nhắn trong đồng hồ điện toán đám mây và số điện thoại đã cho ở trên.

Nhấp chuột Publish messageđể xuất bản tin nhắn. Bạn thấy một thông báo trên số điện thoại được đưa ra như sau: