michimani.net

AWS Chatbot を使って CloudWatch Alarm の通知を Slack に飛ばしてみた

2020-04-23

昨年 7 月に beta として登場した AWS Chatbot がついに一般利用可能 (GA) となりました!今回は、 AWS Chatbot を使って CloudWatch Alarm の通知を Slack に飛ばしてみました。CloudWatch Alarm の通知では、 AWS Chatbot がよしなに内容を整形してくれるので、これまで独自に Lambda で整形していた方にはそれらの処理が不要になります。

目次

AWS Chatbot とは

詳細はサービスページや AWS ブログを見ていただければわかるのですが、簡単に言うと、 CloudWatch (など) からの通知をいい感じに整形して Slack または Amazon Chime Webhook に飛ばしてくれるサービスです。
また、 Slack から特定の AWS CLI コマンドを実行することもできます。

AWS Chatbot 自体の利用には料金は発生せず、付随して利用する Amazon SNS などの料金のみを支払うことになります。

AWS Chatbot の設定

では、実際に AWS Chatbot と Slack を連携してみます。

ワークスペースの作成

まずは ワークスペースの作成です。

マネジメントコンソールで AWS Chatbot のダッシュボードを開きます。

AWS Chatbot dashboard

beta が消えてますね。

チャットクライントを設定 から Slack を選択して進みます。

AWS Chatbot to Slack

Slack の認証画面に遷移するので、内容を確認して Allow ボタンを押します。

AWS Chatbot connected to Slack

Slack との連携が完了し、 ワークスペース が作成されます。

チャンネルの設定

続いて、作成したワークスペース内でチャンネルの設定をします。が、その際に SNS トピックを指定する箇所があるので、先に作成しておきます。もちろん既存の SNS トピックを使用することも可能です。

今回は、 CloudFront のメトリクスに対するアラームを通知したいので、次のようなトピックをバージニア北部リージョンに作成しました。

Amazon SNS Topic

SNS トピックを作成したら、 AWS Chatbot のワークスペースに戻って 新しいチャンネルを設定 を押します。

AWS Chatbot New Channel

入力する項目は次のとおりです。

設定の詳細

設定名

チャンネル設定の名前を入力します。

ログ記録

CloudWatch Logs にログを出力したい場合はチェックします。

Slack チャンネル

連携した Slack ワークスペース内のチャンネルを指定します。パブリック または プライベートを選択し、チャンネルを指定します。

アクセス許可

AWS Chatbot では CloudWatch のメトリクスを取得したり、特定の AWS CLI コマンドを実行することができるので、そのために IAM ロールを作成します。

今回は CloudWatch Alarm の通知をしたいので、 ポリシーテンプレート通知のアクセス許可 を指定しました。

通知

AWS Chatbot は SNS トピックを使用してCloudWatch Alarm を通知するので、任意の SNS トピックを指定します。指定方法は、まずリージョンを指定してから、そのリージョン内のトピックを指定します。
今回は先ほどバージニア北部リージョンに作成した CloudWatchAlarm トピックを指定しました。

この設定をすることで、指定して SNS トピックのサブスクライブに AWS Chatbot エンドポイントが追加されます。

Slack への招待

チャンネル設定で指定した Slack のチャンネルで、 /invite @aws を実行し、 AWS Chatbot を招待します。

Invite AWS Chatbot to Slack Channel

これで準備は完了です。

CloudWatch Alarm を Slack に通知する

では、 AWS Chatbot 経由で CloudWAtch Alarm を Slack に通知してみます。

今回は CloudFront の Alarm 画面から、次のようなアラームを設定しました。

CloudWatch Alarm

ディストリビューションに対して、 5 分間の 4xx エラー率が 10 % を超えたときに通知するような設定です。

設定後、意図的に 404 エラーを発生させ、暫く待つと、次のような通知が Slack に届きました。

CloudWatch Alarm on Slack

アラームの内容は良い感じに整形され、アラーム発生時点のメトリクスのグラフも画像として添付されて通知されます。めちゃくちゃ便利です。

まとめ

昨年 7 月に beta として登場した AWS Chatbot がついに一般利用可能となりました!ということで、 CloudWatch Alarm の通知を Slack に飛ばしてみた話でした。

これまで、通知の内容を Lambda で整形して Slack へ通知していた方も多いと思います。それがなんと、AWS Chatbot を使うと簡単な設定のみで良い感じのメッセージにしてくれます。しかも無料。
これはなんというか、良いですね。(語彙力)

また、最近では Code シリーズからの通知も AWS Chatbot に対応しているので、それらの通知も良い感じに整形されると思うと凄く助かる気がしています。

とりあえず今回は CloudWatch Alarm の通知をやってみたので、その他の通知についても随時試してみたいと思います。


comments powered by Disqus