AWS ChatbotでAWSの障害をSlack通知させる
はじめに
AWSさんお世話になってます。 障害事にPersonal Health Dashboardを見にいくのもいいんですが、小さく使ってるサービスだとエラーや障害に気づかない事もあったりするので、せっかくだし自動で通知して欲しい。
CloudWatchを使ってメール送信させるくらいはやってる人多いと思います。ただ、メールも仕事中だとあまり見ないし、メールをSlackに通知させてもいいんですけど、いかんせん見辛いみたいのもあるので簡単にできるものないかな〜と考えてたらAWS Chatbotがあった。 Betaっぽいですが、Slackにも対応してるしお試しで使ってみました
下準備
Personal Health DashboardがCloudWatch Eventで検知されSNSでメール送信されるという部分が前提となってくるので、まずはそちらを設定します。 まずは、ルールの設定から。Healthサービスの全てのイベントを通知対象に
ターゲットとしては、AWS SNSで自身のメールアドレスをサブスクリプションにしているトピックを指定しました。
ここまでで、障害検知されたらSNSで自身のメールアドレスへ検知通知が飛びますね。
AWS Chatbotの設定
今回の肝である、AWS Chatbotに触れていきます。
チャットクライアントとしてSlackを指定
僕の勉強用Workspaceがあるので、そちらと紐付けました
紐付けを許可させると、ChatBotの設定へと遷移します。名前はお好きなものを、通知チャンネルも紐づいた時点で取得できるのでお好きなチャンネルを指定
CloudWatchにアクセスし、通知アクションに応答できるIAMロールが必要になってくるので今回はテンプレートから作成しただけです。 SNSトピックはCloudWatch Eventで設定したのと同じトピックを使いました。
ここまでで作成は終了です。めちゃ簡単ですね。ただ、障害が本当に起きないとCloudWatch Eventがキックされないので、CloudWatchでルールを作成するページでサンプルイベントを使って検知のテストを実行します。 こんな感じでサンプルイベントを本文に貼り付けて、テスト送信
だーん
awsからの通知になるので、日々流れるslackのタイムラインでも目について良い感じですね〜
期待したい部分
ポチポチもプライベートアカウントならいいんですが、仕事で使おうとするとコード化しておきたい、、、みたいのもあるので、Terraformあたりで書けるようになったら最高だな〜とか思ってました。(現時点でも最高なサービスです) issueを読んでみると、やはりまだBeta版なのでAWS SDKも用意されてなさそうでした。(2020/04/20時点)
PHDの通知意外にも色んな使い道ありそうだし、何よりセットアップに10分かからない手軽さで最高だったので色々考えていきたいですね