AWS ChatbotでAWSの障害をSlack通知させる

はじめに

AWSさんお世話になってます。 障害事にPersonal Health Dashboardを見にいくのもいいんですが、小さく使ってるサービスだとエラーや障害に気づかない事もあったりするので、せっかくだし自動で通知して欲しい。

CloudWatchを使ってメール送信させるくらいはやってる人多いと思います。ただ、メールも仕事中だとあまり見ないし、メールをSlackに通知させてもいいんですけど、いかんせん見辛いみたいのもあるので簡単にできるものないかな〜と考えてたらAWS Chatbotがあった。 Betaっぽいですが、Slackにも対応してるしお試しで使ってみました

下準備

Personal Health DashboardがCloudWatch Eventで検知されSNSでメール送信されるという部分が前提となってくるので、まずはそちらを設定します。 まずは、ルールの設定から。Healthサービスの全てのイベントを通知対象に f:id:keisuke_t:20200420233308p:plain

ターゲットとしては、AWS SNSで自身のメールアドレスをサブスクリプションにしているトピックを指定しました。 f:id:keisuke_t:20200420233313p:plain

ここまでで、障害検知されたらSNSで自身のメールアドレスへ検知通知が飛びますね。

AWS Chatbotの設定

今回の肝である、AWS Chatbotに触れていきます。

チャットクライアントとしてSlackを指定

f:id:keisuke_t:20200420233621p:plain

僕の勉強用Workspaceがあるので、そちらと紐付けました f:id:keisuke_t:20200420233625p:plain

紐付けを許可させると、ChatBotの設定へと遷移します。名前はお好きなものを、通知チャンネルも紐づいた時点で取得できるのでお好きなチャンネルを指定 f:id:keisuke_t:20200420233630p:plain

CloudWatchにアクセスし、通知アクションに応答できるIAMロールが必要になってくるので今回はテンプレートから作成しただけです。 SNSトピックはCloudWatch Eventで設定したのと同じトピックを使いました。 f:id:keisuke_t:20200420233634p:plain

ここまでで作成は終了です。めちゃ簡単ですね。ただ、障害が本当に起きないとCloudWatch Eventがキックされないので、CloudWatchでルールを作成するページでサンプルイベントを使って検知のテストを実行します。 こんな感じでサンプルイベントを本文に貼り付けて、テスト送信 f:id:keisuke_t:20200420234941p:plain

だーん

f:id:keisuke_t:20200420233639p:plain

awsからの通知になるので、日々流れるslackのタイムラインでも目について良い感じですね〜

期待したい部分

ポチポチもプライベートアカウントならいいんですが、仕事で使おうとするとコード化しておきたい、、、みたいのもあるので、Terraformあたりで書けるようになったら最高だな〜とか思ってました。(現時点でも最高なサービスです) issueを読んでみると、やはりまだBeta版なのでAWS SDKも用意されてなさそうでした。(2020/04/20時点)

github.com

PHDの通知意外にも色んな使い道ありそうだし、何よりセットアップに10分かからない手軽さで最高だったので色々考えていきたいですね

参考

aws.amazon.com