AWS ChatbotでSlackに簡単に通知

2020年4月22日にAWS Chatbotが一般利用開始になりました。

SlackまたはAmazon Chimeに通知を送るのが簡単になります。
これまでSlackに通知するときはLambdaなどを別途で設定して使わないとダメだったので、助かります。 対応してるサービスは現時点で以下の通りです。

出典: https://docs.aws.amazon.com/chatbot/latest/adminguide/related-services.html

  • AWS Billing and Cost Management
  • AWS CloudFormation
  • AWS Developer Tools
    • AWS CodeBuild
    • AWS CodeCommit
    • AWS CodeDeploy
    • AWS CodePipeline
  • Amazon CloudWatch Alarms
  • Amazon CloudWatch Events
    • AWS Config
    • Amazon GuardDuty
    • AWS Health
    • AWS Security Hub
    • AWS Systems Manager

設定の仕方

Amazon SNSとAWS Chatbotさえ設定してしまえば、通知先でChatbotを指定しているSNSを選択すればokです。

Amazon SNSの設定

SNSはトピックを作成するだけです。
リージョンをまたいで使うことは出来ないので、自分が使用したいリージョンごとに設定する必要があります。

AWS Chatbotの設定

チャットクライアントにSlackを設定して、クライアントを設定をクリックします。

ワークスペースにアクセスする権限を許可します。


(別に社名とアイコンを隠す必要なかったんじゃないかと思いますが一応)

Chatbotでの名前を設定名にいれます。
わかりやすい名前が良いでしょう。
あとは、チャンネルを選択します。

あとは、IAMを作成して、SNSトピックに先程作成したSNSトピックを指定するだけです。

プライベートチャンネルの場合はAWS Chatbotをチャンネルに招く必要があります。

/invite @aws

インスタンスが使われていないのに起動していることを通知

ここではCloudWatchでEC2が使用されていない時、それをアラートとして検出してAWS Chatbotを通してSlackに通知します。
今回使用されていないというのをCPU使用率が2%以下というものにしました。
Chatbotの結果を見るために今回は5分でアラートをかけましたが、実際に運用するときは1時間など、時間単位でかけたほうが使いやすいと思います。

EC2のコンソールから設定したいインスタンスを選択し、モニタリング タブからアラームの作成をクリックします。

以下のように設定します。

実際のアラートはこのようにSlackにきます。

おわりに

メールよりSlackのほうが早く気づくことが出来る(私の場合)ので、ありがたいです。
今まではLambdaを使ってSlackに送るということをしていましたが、これで簡単にSlackに通知出来そうです。
Slackに送る際のメッセージをカスタム出来るととても良いのですが、、、