Configで検知した異常をAWS ChatbotでSlack通知できるようになったってよ
以前自分が書いた記事の最後に,AWS Config(以降Config)で検知した異常をAWS Chatbot(以降Chatbot)を使ってSlackへ通知できるようになったことについて触れたので実際に試してみた.
前提
今回も以前の記事と同様にAmazon Simple Notification Service(以降SNS)とConfigを使うが,それらについては設定済みとする.また,Configで検知するルールは,インバウンドのsshを設定しているセキュリティグループでIPをフルオープンにしていないかをチェックするrestricted-ssh
を使う.SNSやConfigの設定については上記の記事に書いてあるので参考までにご覧いただけたらと思う.
今回使用するChatbotについて公式を引用して説明しておく.公式によるとまだBeta版だそう.
AWS Chatbot は、Slack チャンネルや Amazon Chime チャットルームで AWS のリソースを簡単にモニタリングおよび操作できるようにしてくれるインタラクティブエージェントです。 https://aws.amazon.com/jp/chatbot/
構成
今回の登場人物はConfigとSNS,Chatbot,Slack,Amazon CloudWatch(以降CloudWatch)である. 流れとしてはまずChatbotでSNSとSlackを紐づける.そしてCloudWatchで「Configで検知した異常」をトリガーとして「SNSへ通知する」ルールを設定.以上の設定によりConfigで検知した異常をSlackまで届けることができる.また,今回の構成は以下のように1つのアカウント内で完結する.なお構成図のChatbotがAWS提供のアイコンではないのは,ChatbotがBeta版だからかアイコンを公式からダウンロードできなかったからである...ご了承願いたい.
ChatbotによるSNSとSlackの紐づけ
さっそくChatbotのページで,Slackを選んでchat clientを作成.Slackへのログインが求められるのでログインする.
ここからchat clientの設定に入る.chat clientでは主にSNSに届いたリクエストをどのSlackチャンネルに転送するかを定義する.まずは,最終的に通知するSlackチャンネルを選択する.
次にchat clientに割り当てるロールを設定する.特にこだわらなければデフォルトで設定されている新規作成でOK.
最後に,Slackへ転送されるSNSトピックを選択する.
chat clientを作成が成功した時点でSNSのサブスクリプションにもchat clientが追加されていると思うので,これでSlackとSNS間の設定は終了.
CloudWatchの設定
次に,Configの異常をSNSへ通知するためにCloudWatchを設定する.Configの異常イベントをトリガーにSNSへ通知するCloudWatchのルールを作成する.画面左側では,Configで設定済みのルールに違反したイベントを監視するよう設定している.画面右側では,通知先SNSトピックを設定している.
テスト
ここまでで設定は終わったので実際にテストしてみる.試しにセキュリティグループを任意の場所からsshできるよう設定してみると,少し経ってからSlackへ通知が届く.
まとめ
- ChatbotとSNS,CloudWatchを使ってConfigで検知した異常をSlackへ通知してみた
- Lambdaを使ってもできるがChatbotならコードを書かなくてすむ
- Chatbotは無料だしLambdaを使わない分料金が安くなるかと思ったが,ChatbotだとCloudWatchを使わなければならないので料金はあまり変わらないかもしれない
- Slackへの通知をカスタマイズしたいならLambdaを使った方法,とにかく通知がまずしたいならChatbotを使う方法がいいかもしれない