EC2 等のメンテナンススケジュールを AWS Chatbot で Slack に通知する

記事タイトルとURLをコピーする

CI部 佐竹です。
今回は、以前記載した Slack へのメンテナンススケジュールの通知を AWS Chatbot へ置き換えるというブログです。

はじめに

以前「EC2やRDSのメンテナンス通知をSlackに連携する」という題名で以下のブログを記載しました。

blog.serverworks.co.jp

この時の処理の流れは以下の流れでした。

[CloudWatch Events]→[SNS topic]→[SlackのE-mail Adress]→[Slack]

今回はこの経路を AWS Chatbot 経由に変更します。

aws.amazon.com

きっかけなのですが、上記アナウンスを受けてとなります。Amazon EventBridge (旧CloudWatch Event)の通知先として AWS Chatbot が対応したことにより、可読性の高い Slack 通知が可能となりました。

これにより先ほどご紹介した流れは

[CloudWatch Events]→[SNS topic]→[AWS Chatbot]→[Slack]

と変更になります。これによってもたらされる効果は、以前のブログにも記載しました「可読性の悪さの解消」です。

変更する作業はとても簡単でして、これから詳細をご説明します。

なお、AWS Health 自体の通知方法は先にご紹介しましたブログをご参考ください。

AWS Health の通知先を Email から AWS Chatbot へ変更する

まず、AWS Chatbot をキックするには仕様として SNS Topic が必要になります。そして AWS Chatbot の設定において、SNS Topic の指定を行いますので、実装の順番としては SNS Topic の作成、その後に AWS Chatbot の設定となります。前回設定した SNS Topic を使いまわすことが可能であり、また新規に SNS Topic を作成頂いてもどちらでも問題ありません。

今回は、既に SNS Topic が作成済である前提で進めていきます。

AWS Chatbot を Slack のワークスペースと連携する

f:id:swx-satake:20210423182353p:plain

AWS Chatbot ⇒ Configured clients から画面右上にある「Configure new client」を押下します。

f:id:swx-satake:20210423182442p:plain

Slack を選択し「Configure」を押下します。

f:id:swx-satake:20210423182644p:plain

画面が Slack へと遷移し、ログインしているワークスペースにおいて AWS Chatbot の Apps を許可するかどうか問われるので「Allow」します。なお、この設定は Slack の権限が絡みますので、本設定が継続できない場合は Slack の管理者へとご連携頂く必要があります。

f:id:swx-satake:20210423182947p:plain

Allow を押下すると Slack successfully authorized AWS Chatbot. と表示され Slack workspace: Serverworks が AWS Chatbot のワークスペース一覧へと追加されます。

ワークスペースが認識されましたので、次は「Configure new channel」から通知先の Slack チャンネルを登録します。

Slack チャンネルを登録する

f:id:swx-satake:20210512161547p:plain

Configuration name を設定します。今回はわかりやすく、チャンネル名にしました。

Logging - optional は、オプションですので設定は必須ではありません。これを設定しておくと、Chatbot が正しく動作しなかった場合に CloudWatch Logs のログから追跡調査が可能になりますので、もしうまく動作しない場合はこちらをオンにしてみてください。

Slack channel ⇒ Channel ID(https://workspace.slack.com/messages/C1111122233). となっている各 Slack チャンネルの ID である C1111122233 となっている箇所を記載します。

f:id:swx-satake:20210512161946p:plain

Permissions では Chatbot が動作する IAM Role を指定します。この画面で新規に作成することもできます。今回は既存の IAM Role を指定しました。

f:id:swx-satake:20210512162051p:plain

最後に SNS topics を指定します。東京リージョン以外の Topic を指定しても問題ありません。この画面で登録を行うと、SNS Topic に Chatbot が紐づきます。「Configure」を押下して進みます。

SNS Topic で設定が追加されていることを確認する

f:id:swx-satake:20210512163022p:plain

設定した Topic を確認すると、上画像の通り Subscriptions に https://global.sns-api.chatbot.amazonaws.com が追加されていることがわかります。これで SNS と Chatbot の連携設定は完了です。

Amazon EventBridge (旧CloudWatch Event)の Rule を修正する

f:id:swx-satake:20210512163359p:plain

既存に設定されている AWS Health Event でトリガーされる Rule の Target となっている SNS Topic を差し替えるため、画面右上の Actions から Edit します。

f:id:swx-satake:20210512163631p:plain

画面右側の Topic を変更すれば、設定を保存して完了です。

なお、今回は SNS Topic を差し替えていますが、既存の SNS Topic に AWS Chatbot を追加するだけでも対応が完了します。

対応方法まとめ

今回は、Slack への EC2 や DX 等のメンテナンススケジュールの通知を AWS Chatbot へ置き換える方法を記載しました。対応は非常に簡単で、具体的には以下の作業のどちらかで差し替え可能です。

EventBridge に指定されている SNS Topic をそのまま使いまわす場合

  1. Chatbot を Slack と連携させる
  2. Chatbot の設定で、連携したい Channel と既存の SNS Topic を指定する
  3. 必要があればメール通知の設定を SNS Topic から削除する

EventBridge に指定する SNS Topic を差し替えて Chatbot に切り替える場合

※本ブログはこちらの作業手順です

  1. SNS Topic を新たに作成する
  2. Chatbot を Slack と連携させる
  3. Chatbot の設定で、連携したい Channel と作成した SNS Topic を指定する
  4. EventBridge の Rule において SNS Topic の指定を変更する

実際の通知

f:id:swx-satake:20210512165514p:plain

実際に、上画像の通りの通知が Slack に表示されました。かなり視認性が向上したかと考えています。

表示内容は変わらず Instance ID だけとなっていますので、Name タグ等はなくそのあたりまでを同時に取得するには Lambda 等での実装が必要になりますが、検知にはこれで十分だと考えています。皆様も是非通知先を AWS Chatbot に切り替えてみてください。

それではまたお会いしましょう。

佐竹 陽一 (Yoichi Satake) 記事一覧はコチラ

SRE3課所属。AWS資格12冠。2010年1月からAWSを利用してきました。
AWSのコスト削減、最適化を得意としています。