現在携わらせていただいているプロジェクト。
EC2サーバーの負荷が上がった際やサーバーダウンしてしまった際に、CloudWatchのアラームが発砲するようになっているのですが、現状だと指定のメールアドレス宛にしか届かないうえに、そのメールボックスはPCを開いてないと受信に気づけず...
Slackであれば自分のスマホにも入っているので、そこに通知させよう!ということになりました。
事前知識
使っていくサービスになります。
すでに知っている場合はこの章は飛ばしちゃってください。
-
CloudWatchアラーム
Amazon CloudWatchの機能の一つで、RDSなどの状態を監視し、閾値超過などの異常を検知してアラームを発報します。
今回はすでに作成されたものがあるので、「アラームの作成」については割愛します。 -
Amazon SNS(Simple Notification Service)
AWSが提供するメッセージサービスです。
今回はCloudWatchアラームの通知を受け取り、後続(Amazon Q Developer)へ配信するための「トピック」を作成します。 -
Amazon Q Developer(旧AWS Chatbot)
SNSトピック経由で受け取ったCloudWatchアラームの通知を、MicrosoftのTeamsやSlackに投稿する連携サービスです。
実際に作ってみる
まずはAmazon Qで新しいクライアントを設定します。
Amazon Q Developerの「チャットクライアントの設定」で「Slack」を選択。

「許可する」ボタンを押すとSlackワークスペースが作成されます。

これで設定はOK。
次にSNSトピックを設定していきます。
一番最初にトピックのタイプとして「FIFO」と「スタンダード」という2つのどちらかを選択します。
この2つがどういったものなのかはこちら。
厳密な順序や重複が許容できるかというのが決め手になるみたい。
今回はアラート通知なのでスタンダードを選択。
そのほかオプションとして以下が用意されていますが、今回は特に変更したりせずに作成しました。
- 暗号化
- アクセスポリシー
- 配信ポリシー (HTTP/S)
- 配信ステータスのログ記録
- タグ
- アクティブトレース
最後に作成したトピックをアラームに設定します。
今回は既存のアラームに紐づけるので、CloudWatch > アラームから設定したいアラームを選択し「アクション」の「編集」へ。

「ステップ2 - オプション アクションの設定」にトピックの設定するところがあるので、ここで先ほど作成したトピックを選択してください。

※もし表示されない場合は一度作成をキャンセルして初めから作り直すかリロードしてみてください。
これで全ての設定の完了です!
アラートの動作確認
ここまでの設定でアラートが出るはず!と思い、一旦テスト的に閾値を下げて確認したところ、無事アラートが発砲されました。
しかし、よく見ると2つ目以降のアラートが1つ目のアラートのスレッドにつづけてきていることがわかりました。
どういうわけか調べてみたところ、「一定時間内に何度か通知をさせるとスレッドに通知が投稿される」というのがデフォルトの設定のようでした。
今回自分が設定したアラートは特にスレッドに通知となっても問題がないものなので設定しませんでしたが、気になる方は設定を変えてみてもいいかもしれないですね。
今回やってみて
「Amazon Qってなに...?」「トピックってなんだっけ??」みたいな状態から始めたのでいろいろ調べたりしながら進めたんですが、やってみると特別難しいものはなくコンソールから設定していけたなって思いました。
思い通り通知が出せた時は嬉しかったです。
この記事がSlack通知を出したい誰かの参考になればいいなと思います。
参考にさせていただいた記事



