Amazon SNS คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS
สวัสดีครับทุกคน inomaso ครับ
รายการนี้จะเขียนเกี่ยวกับ AWS ปี 2022 ฉบับเบื้องต้น โดยฝ่าย Consulting ของบริษัทเราเอง นี่เป็นบทความที่จะมาเล่าเกี่ยวกับเนื้อหา AWS Service มาเล่าใหม่อีกครั้งว่ามีอะไรถูกอัพเดทอะไรบ้างแล้ว แบบละเอียด/เจาะลึกตั้งแต่เบสิกพร้อมคำอธิบาย โดยเหล่าสมาชิกที่เคยเขียนบทความเหล่านี้มาแล้ว
เหมาะสำหรับผู้ที่ต้องการเริ่มเรียนเกี่ยวกับ AWS หรือผู้ที่ใช้งาน AWS อยู่แล้ว แต่ต้องการหาความรู้ใหม่ว่าปี 2022 มีการอัพเดทอะไรบ้าง หากคุณใช่บุคคลเหล่านี้ ทางผู้เขียนก็หวังว่าบทความนี้จะเป็นประโยชน์สำหรับคุณครับ
งั้นก็ไปเริ่มกันเลยครับ Theme ในวันนี้คือ "Amazon SNS" ครับ
Amazon SNS คือ?
บริการนี้มีชื่อเรียกเต็มๆว่า Amazon Simple Notification Service (Amazon SNS) หรือ บริการข้อความแบบเต็มระบบ ของ AWS ครับ
บริการนี้จะรองรับ multi protocol ต่างๆ เช่น Email หรือ HTTPS เป็นต้น โดยสามารถเชื่อมต่อหรือส่งข้อความแจ้งเตือนไปยัง endpoint ต่างๆได้ไม่ว่าจะเป็น Application-to-Application (A2A) หรือ Application-to-Person(A2P)
ซึ่งทํางานในรูปแบบของ Publisher-Subscriber
USE CASE ในการใช้งาน
ส่งการแจ้งเตือนเหตุการณ์ Fanout ด้วย SQS และ SNS
ข้อความที่ผลิตจาก SNS สามารถ Parallel / asynchronous processing ได้ที่ SQS
ด้วยการวาง SNS ไว้หน้า SQS ทำให้สามารถเปลี่ยนปลายทางที่จะส่งได้ และ สามารถตรวจสอบข้อความได้อย่างง่ายดาย
รายละเอียดเพิ่มเติมทางด้านล่างครับ
ข้อความแจ้งเตือน
เราสามารถส่งข้อความไปถึงผู้ดูแลในส่วนงานนั้นๆได้โดยตรงจาก CloudWatch , GuardDuty เป็นต้น
นอกจากการแจ้งเตือนผ่าน email แล้ว บริการนี้ยังสามารถใช้ร่วมกับ AWS Chatbot เพื่อส่งการแจ้งเตือนไปยังบริการแชทต่างๆอย่างเช่น Slack หรือ Amazon Chime ได้อีกด้วยโดยในกรณีที่ใช้งานผ่าน AWS Chatbot นอกจากจะส่งการแจ้งเตือนแล้วยังทำให้ข้อความดูง่ายขึ้นอีกด้วย
รายละเอียดเพิ่มเติมทางด้านล่างครับ
ส่งข้อความโทรศัพท์มือถือ (SMS)
สามารถส่งข้อความไปยังโทรศัพท์มือถือ (SMS) ได้
ในอัพเดทของปี 2021 มีการเพิ่ม sandbox เพิ่มเข้ามา หากมีการใช้งานสามารถอ้างอิงบทความทางนี้ได้ครับ
การแจ้งเตือนแบบพุช (Push Notification)
ใช้งานการแจ้งเตือนแบบพุช และสามารถส่งข้อความไปยังแอพพลิเคชั่นได้โดยตรง
โดยปัจจุบันรองรับแอพพลิเคชั่นมือถือ และ พีซี ตามด้านล่างนี้
- Amazon Device Messaging (ADM)
- Apple Push Notification Service (APNs) for both iOS and Mac OS X
- Baidu Cloud Push (Baidu)
- Firebase Cloud Messaging (FCM) ( เป็น push notification ของ Android)
- Microsoft Push Notification Service for Windows Phone (MPNS)
- Windows Push Notification Services (WNS)
สิ่งที่ควรระวังในการ ออกแบบ / สร้างโครงสร้าง
การเรียงลำดับและลดความซ้ำซ้อนของข้อความ
ใน Amazon SNS จะใช้ FIFO เพื่อให้สามารถรักษาลำดับของข้อความไว้และป้องกันไม่ให้เกิดความซ้ำซ้อน
แต่ทว่า FIFO Topic ของ Amazon SNS ที่ subscribe ได้ในปัจจุบันมีเพียง Amazon SQS FIFO เท่านั้น
อย่างเช่นใน Amazon SES ถ้าต้องการให้แจ้งเตือนเกี่ยวกับการ bounce จะไม่สามารถเลือก FIFO ได้ ตามรายละเอียดทางด้านล่างนี้ครับ
กรณีที่ใช้งาน Amazon SNS แล้วสร้าง topic ต้องเลือก type เป็น standard (เพราะ SES ไม่รองรับ topic ที่เป็น FIFO ครับ)
ด้วยเหตุนี้ ถ้าในงานที่เราใช้ไม่จำเป็นต้องใช้ FIFO ก็ให้ใช้ topic ของ SNS ที่เป็นตัว standard ครับ
การเข้ารหัสในขณะบันทึกข้อมูล
ในการเข้ารหัสฝั่ง server (SSE) เมื่อใช้ AWS KMS จะสามารถเข้ารหัสข้อความในคิวของ Amazon SNS ได้ แต่มีจุดที่ต้องระวังตามนี้
ขอบเขตในการเข้ารหัส
ใน SSE สามารถเข้ารหัสเนื้อหาข้อความได้ แต่จะมีส่วนที่ไม่รองรับการเข้ารหัสตามนี้
- meta data ที่เป็น topic (ชื่อ topic และ คุณลักษณะ (attribute) )
- meta data ที่เป็น ข้อความ (ชื่อเรื่อง, Message ID, timestamp, คุณลักษณะ (attribute) )
- ข้อมูล metric ในแต่ละ topic
คีย์เข้ารหัส
ในกรณีที่ใช้ SSE จำเป็นต้องตั้งค่าการเข้าถึง Key policies ของ AWS KMS โดยหากต้องการใช้ในการส่งแจ้งเตือนแบบ Alarm ของ cloudwatch ให้สร้าง CMK สำหรับจัดการข้อมูลลูกค้า โดยไม่ใช่ CMK ของ AWS (เช่น alias/aws/sns)
การยกเลิกการ subscribe
เมื่อมีการการส่งเมล์จาก Amazon SNS ในอีเมล์จะมีระบุลิงค์สำหรับยกเลิกการ subscibeอยู่ ด้วยเหตุนี้เองบางท่านอาจเผลอไปคลิ้กโดยไม่ตั้งใจทำให้อาจอาจถูกยกเลิกการติดตาม
ทางด้านบนเป็นสาเหตุของถูกยกเลิกการติดตามผ่านอีเมล์ครับ
แต่หากดำเนินการผ่าน AWS console จะสามารถปิดการแสดงลิ้งค์ดังกล่าวได้ครับ หากมีการใช้งานสามารถอ้างอิงบทความด้านล่างนี้ได้ครับ
เกี่ยวกับการอัพเดท
ในช่วง1ปีมานี้ มีการอัพเดทด้านฟังก์ชั่นขึ้นมาคือการรองรับ ABAC (Amazon SNS now supports Attribute-based access controls) แล้วครับ
อยากให้อ่านเพิ่มเติมกันครับ
สุดท้ายนี้
หวังว่าทุกท่านจะได้ความรู้ไปจากบล้อคนี้ไม่มากก็น้อยนะครับ ขอบคุณมากครับ