こんばんは、CX事業本部のmorimorikochanです。最近yaml
ばっかり触ってるので完全にyaml
エンジニアになってます。
AWS SNS と AWS Chatbot を連携させて、AWS SNSで受信したメッセージをAWS Chat botを経由してSlackに送信させたい状況 ってよくありますよね!。これの前段にさらに Amazon Event Bridge が配置されることもあると思いますが、そうなると疎通確認でうまくいかなかった場合にどこ(Amazon EventBridgeかAWS SNSか)で失敗したかが見えにくくなると思います。
今回は、そのような場合にまず AWS SNS と AWS Chatbot(Slack) との接続を確かめるために、 AWS SNS から手動でメッセージを送る方法を見つけたので、共有したいと思います。
結論
- 1.AWS SNS のトピック詳細画面から「メッセージの送信」を押下
- 2.メッセージ本文の「エンドポイントに送信するメッセージ本文」に対して、以下をペースト
{
"version": "1.0",
"source": "custom",
"content": {
"description": ":warning: EC2 auto scaling refresh failed for ASG *OrderProcessorServiceASG*! \ncc: @SRE-Team"
}
}
- 3.「メッセージの発行」を押下すると、以下のようなメッセージが届いていると思います
背景・説明
AWS Chatbot は、Amazon SNS トピックに手動で発行されるメッセージをサポートしていません。Amazon SNS 通知は、AWS Chatbot でサポートされているサービスのいずれかを介してのみ AWS Chatbot に送信するようにしてください。
AWS Chatbot が Amazon SNS メッセージを受信しない問題をトラブルシューティングする | AWS re:Post
と記載があったので当初は手動での送信は無理かなぁと思っていたのですが、AWS Chatbot でサポートされているサービスを見ると、サービスの中にCustom notificationsという種類がありました。
そして、 Custom notifications のミニマムのサンプルがこちらです。
{
"version": "1.0",
"source": "custom",
"content": {
"description": ":warning: EC2 auto scaling refresh failed for ASG *OrderProcessorServiceASG*! \ncc: @SRE-Team"
}
}
また、リッチなメッセージのサンプルはこちらです。
{
"version": "1.0",
"source": "custom",
"id": "c-weihfjdsf",
"content": {
"textType": "client-markdown",
"title": ":warning: Banana Order processing is down!",
"description": "Banana Order processor application is no longer processing orders. OnCall team has beeen paged.",
"nextSteps": [
"Refer to <http://www.example.com|*diagnosis* runbook>",
"@googlie: Page Jane if error persists over 30 minutes",
"Check if instance i-04d231f25c18592ea needs to receive an AMI rehydration"
],
"keywords": [
"BananaOrderIntake",
"Critical",
"SRE"
]
},
"metadata": {
"threadId": "OrderProcessing-1",
"summary": "Order Processing Update",
"eventType": "BananaOrderAppEvent",
"relatedResources": [
"i-04d231f25c18592ea",
"i-0c8c31affab6078fb"
],
"additionalContext": {
"priority": "critical"
}
}
}
Slackではこんな感じで見えます
いずれも、AWS Chatbot の公式ドキュメントの以下の部分に記載があります。
まとめ
- AWS SNS から AWS Chatbot(Slack) への疎通確認ができるようになりました。
- EventBridgeの問題かAWS SNSの問題か切り分けができます。
- うまく送信されているということは、 AWS Chatbot のIAMロールが不足している、AWSのアプリがSlackにインストールされていない、トピックの設定が間違えている、というような問題は発生していないということになりますね
- 公式ドキュメントはしっかり読み込みましょう👀