วิธีแก้ปัญหาเมื่อไม่สามารถใช้ AWS Chatbot เชื่อมต่อกับ Private channel ของ Slack ได้
บทความนี้แปลมาจากบทความที่เป็นภาษาญี่ปุ่นที่ชื่อว่า AWS Chatbotを使ってSlackのプライベートチャンネルに連携できないときの対処方法 โดยเจ้าของบทความนี้คือ คุณ hamada-koji เป็นคนญี่ปุ่นครับ
เมื่อแปลจากภาษาญี่ปุ่นมาเป็นภาษาไทยแล้วผมได้เรียบเรียงเนื้อหาใหม่เพื่อให้เข้าใจง่ายขึ้น เนื่องจากบางครั้งอาจมีการอัปเดตข้อมูลใหม่ จึงมีความจำเป็นต้องอัปเดตให้เป็นข้อมูลปัจจุบัน
AWS Chatbot เป็น GA ที่เผยแพร่สาธารณะ ทุกคนเคยใช้กันไหมครับ?
เป็นบริการที่สะดวกมากที่สามารถเชื่อมโยงเหตุการณ์ต่างๆ บน AWS กับ Slack ได้โดยไม่ต้องเขียนโค้ด เช่น Lambda เป็นต้น ซึ่งผมค่อนข้างติดปัญหาการเชื่อมต่อไปยัง Private channel ของ Slack ดังนั้นจึงจะมาแนะนำในบทความนี้
มันเป็นเรื่องของการ "ให้อ่านเอกสารให้ดี" แต่ค้นหายังไงก็ไม่เจอข้อมูลแบบนั้น ก็เลยจะมาสร้างบทความเพื่อจุดประสงค์ในการจัดทำดัชนี (Index)
ไม่มีใครที่ติดปัญหาเดียวกับผมเลยหรอ? ( ゚д゚) ガタッ / ヾ __L| / ̄ ̄ ̄/_ \/ /
ผมหวังว่าจะเป็นเช่นนั้น
ขั้นตอนการเชื่อมต่อ Slack โดยใช้ AWS Chatbot
ขั้นตอนคร่าวๆมีดังนี้
- สร้าง SNS Topic
- สร้าง Slack channel สำหรับใช้เชื่อมต่อ
- สร้าง Chat Bot
- เชื่อมต่อกับ Slack WorkSpace
- ระบุ Channel ปลายทางที่จะเชื่อมต่อ
- ให้สิทธิ์ IAM Role กับ Chatbot
- แนบ SNS Topic
อย่างไรก็ตาม เมื่อดำเนินการตามขั้นตอนข้างต้นแล้ว จะมีการเชื่อมต่อกับ Public channel ของ Slack แต่ไม่มีการเชื่อมต่อกับ Private channel
AWS Chatbot มีฟังก์ชันที่ส่งออก Log การดำเนินการไปยัง CloudWatch Logs แต่เมื่อดู Error แล้วจะมีลักษณะแบบนี้
Encountered error while sending message to Slack: Slack Web API returned unsuccessful response (HTTP status code: 200, ok: false, error code: channel_not_found, full response body: { "ok": false, "error": "channel_not_found" } ).
ดูเหมือนว่าจะเป็น Error ในการอนุญาต ดังนั้นจึงลองตรวจสอบ IAM Role แต่ดูเหมือนว่าจะไม่มีปัญหาอะไร
วิธีแก้ไขคือ Invite AWS User ไปยัง Slack channel ปลายทางที่จะเชื่อมต่อ
ดูรายละเอียดได้ที่ Document ในเว็บไซต์ทางการ
Getting started with AWS Chatbot - AWS Chatbot
If you configure a private Slack channel, run the /invite @AWS command in Slack to invite the AWS Chatbot to the chat room.
Reference:Getting started with AWS Chatbot - AWS Chatbot
จากเหตุผลที่ว่ามา กรณีที่จะเชื่อมต่อไปยัง Private channel จะต้อง invite AWS User ไปยัง Channel แยกกัน
เมื่อป้อนคำสั่งเช่นแบบนี้ AWS User จะได้รับเชิญไปยัง Channel นั้น
หลังจากนั้นลองย้ายและถ้าได้รับการแจ้งเตือนในลักษณะเดียวกับ Public channel ก็ถือว่า OK
AWS Chatbot สามารถใช้งานได้หลากหลาย ดังนั้นมาลองใช้งานกัน
กรณีของการแจ้งเตือน AWS Chatbot และ CloudWatch Alarm ดูเหมือนว่าจะไม่สามารถตรวจสอบได้ด้วยการเชื่อมต่อกับ Email แต่สามารถดูกราฟ Metric ที่ปลายทางการแจ้งเตือนได้ ซึ่งเป็นการแสดงภาพการแจ้งเตือนที่เหนือข้อดีก็คือไม่ต้องใช้ Lambda เนื่องจากสามารถใช้ได้อย่างสะดวกมากๆ ดังนั้นก็อยากแนะนำให้ทุกคนมาลองใช้กันครับ
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
แปลโดย: POP จากบริษัท Classmethod (Thailand) ครับ !