การใช้ฟังก์ชัน 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เพื่อเผยแพร่ข้อความ คุณเห็นข้อความบนหมายเลขโทรศัพท์ที่ระบุดังนี้ -