การใช้ฟังก์ชัน Lambda กับ Amazon SNS

Amazon SNS เป็นบริการที่ใช้สำหรับการแจ้งเตือนแบบพุช ในบทนี้เราจะอธิบายการทำงานของ AWS Lambda และ Amazon SNS ด้วยความช่วยเหลือของตัวอย่างที่จะดำเนินการต่อไปนี้ -

  • สร้างหัวข้อในบริการ SNS และใช้ AWS Lambda Add Topics ไปยัง CloudWatch

  • ส่งข้อความ SNS ตามหมายเลขโทรศัพท์ที่ระบุ

ข้อกำหนด

ในการสร้างหัวข้อในบริการ SNS และใช้ AWS Lambda Add Topics ไปยัง CloudWatch เราไม่จำเป็นต้องทำตามขั้นตอนด้านล่างนี้ -

  • สร้างหัวข้อใน SNS
  • สร้างบทบาทสำหรับสิทธิ์ใน IAM
  • สร้างฟังก์ชัน AWS Lambda
  • เผยแพร่ไปยังหัวข้อเพื่อเปิดใช้งานทริกเกอร์
  • ตรวจสอบรายละเอียดข้อความในบริการ CloudWatch

ในการส่งข้อความ SNS ตามหมายเลขโทรศัพท์ที่ให้ไว้เราต้องดำเนินการดังต่อไปนี้ -

  • เพิ่มรหัสใน AWS Lambda เพื่อส่งข้อความไปยังโทรศัพท์ของคุณ

ตัวอย่าง

ในตัวอย่างนี้เราจะสร้างหัวข้อใน SNS เมื่อป้อนรายละเอียดในหัวข้อเพื่อเผยแพร่ AWS Lambda จะถูกทริกเกอร์ รายละเอียดหัวข้อถูกบันทึกใน CloudWatch และ AWS Lambda จะส่งข้อความทางโทรศัพท์

นี่คือแผนภาพบล็อกพื้นฐานซึ่งอธิบายเหมือนกัน -

สร้างหัวข้อใน SNS

คุณจะต้องทำตามขั้นตอนด้านล่างเพื่อสร้างหัวข้อใน SNS -

ขั้นตอนที่ 1

เข้าสู่ระบบ AWS Console และไปที่บริการ SNS ใน Amazon ดังที่แสดงด้านล่าง -

ขั้นตอนที่ 2

คลิก Simple Notification บริการและ Create topic ในนั้น.

ขั้นตอนที่ 3

จากนั้นคุณต้องคลิก Create new topic ปุ่มดังรูป -

ขั้นตอนที่ 4

ป้อนไฟล์ Topic name และ Display name และคลิกที่ Create topic. คุณควรเห็นชื่อหัวข้อในจอแสดงผลดังนี้ -

สร้างบทบาทสำหรับสิทธิ์ใน IAM

ในการสร้างบทบาทเพื่อทำงานกับบริการ AWS Lambda และ SNS เราจำเป็นต้องเข้าสู่ระบบคอนโซล AWS จากนั้นเลือก IAM จากบริการของ Amazon และคลิกบทบาทจากด้านซ้ายดังที่แสดงด้านล่าง

สังเกตว่าเราได้เพิ่มนโยบายสำหรับ SNS, Lambda และ CloudWatch เพิ่มชื่อเล่นแล้วคลิกปุ่มสร้างบทบาทเพื่อทำขั้นตอนการสร้างบทบาทให้เสร็จสิ้น

สร้างฟังก์ชัน AWS Lambda

ในส่วนนี้ให้เราเข้าใจวิธีสร้างฟังก์ชัน AWS Lambda โดยใช้ nodejs เป็นรันไทม์

เพื่อจุดประสงค์นี้ให้เข้าสู่ระบบคอนโซล AWS และเลือก AWS Lambda จากบริการของ AWS เพิ่มชื่อฟังก์ชันรายละเอียดบทบาทและอื่น ๆ และสร้างฟังก์ชัน AWS Lambda ดังที่แสดง

เพิ่ม SNS Trigger

ในการเพิ่มทริกเกอร์ SNS ให้ป้อนรายละเอียดการกำหนดค่า SNS ดังที่แสดง -

จากนั้นเลือก SNS topic และ Add ทริกเกอร์ไปยังฟังก์ชัน AWS Lambda ดังที่แสดง -

จากนั้นเพิ่มโค้ด AWS lambda ที่ระบุด้านล่าง -

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

ในโค้ดด้านบน event.Records[0].Sns.Messageให้เพิ่มรายละเอียดข้อความ เราได้เพิ่มบันทึกคอนโซลเพื่อดูใน CloudWatch ตอนนี้บันทึกฟังก์ชัน Lambda ด้วยหน่วยความจำที่จำเป็นและการจัดสรรเวลา

เผยแพร่ไปยังหัวข้อเพื่อเปิดใช้งานทริกเกอร์

โปรดจำไว้ว่าเราได้สร้างหัวข้อใน SNS แล้วในขั้นตอนที่ 1 ตอนนี้เราจะเผยแพร่ในหัวข้อและดูรายละเอียดใน CloudWatch ซึ่ง AWS Lambda จะเรียกใช้ -

เผยแพร่ในหัวข้อ

ขั้นแรกเลือกชื่อหัวข้อที่คุณต้องการเผยแพร่ คลิกที่Publish to topic ปุ่ม -

ป้อนไฟล์ Subject และ Message รายละเอียดตามภาพด้านล่าง -

คุณยังสามารถเลือก JSON รูปแบบข้อความที่จะส่ง JSONสไตล์. คลิกPublish the message ที่ด้านท้ายของหน้าจอ

ตรวจสอบรายละเอียดข้อความในบริการ CloudWatch

ลงชื่อเข้าใช้คอนโซล AWS และเปิดบริการ CloudWatch คลิกที่บันทึกทางด้านซ้ายและเลือกบันทึกสำหรับฟังก์ชัน AWS Lambda ที่สร้างขึ้น คุณสามารถค้นหาการแสดงผลต่อไปนี้สำหรับบันทึกพร้อมข้อความที่สร้างขึ้นดังที่แสดงด้านบน -

เพิ่มรหัสใน AWS Lambda เพื่อส่งข้อความไปยังโทรศัพท์ของคุณ

ที่นี่จะใช้การส่งข้อความ SNS เพื่อส่งข้อความทางโทรศัพท์โดยใช้ AWS Lambda คุณสามารถใช้รหัสต่อไปนี้เพื่ออัปเดตโค้ด AWS Lambda ได้ดังนี้ -

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

เราได้เพิ่ม AWS SDK และบริการ SNS เพื่อใช้ในการส่งข้อความ ข้อความจากกิจกรรมที่มาจาก SNS จะถูกส่งเป็นข้อความตามหมายเลขโทรศัพท์ที่ให้ไว้

สังเกตรหัสต่อไปนี้เช่น -

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

เข้าสู่หัวข้อทันทีเพื่อดูข้อความใน cloudwatch และหมายเลขโทรศัพท์ที่ระบุไว้ด้านบน

คลิก Publish messageเพื่อเผยแพร่ข้อความ คุณเห็นข้อความบนหมายเลขโทรศัพท์ที่ระบุดังนี้ -