AWS Chatbot で実現する DevOps 通知 - Slack ・ Teams への AWS イベント連携
CloudWatch アラームや CodePipeline の通知を Slack・Teams に配信し、チャットから @aws コマンドで AWS を操作する ChatOps 環境を構築する手法を紹介します。
Chatbot の仕組みと対応サービス
AWS Chatbot は Slack と Microsoft Teams に AWS の通知を配信し、チャットチャネルから AWS を操作する ChatOps サービスです。SNS トピックをチャットチャネルに関連付けることで、そのトピックに発行されたメッセージがチャットに通知されます。対応する AWS サービスは、CloudWatch アラーム、AWS Health、Security Hub、Budgets、CodePipeline、CodeBuild、GuardDuty、Systems Manager、Config など多岐にわたります。通知メッセージはサービスごとに最適化されたフォーマットで表示され、アラームの状態遷移グラフやパイプラインのステージ進行状況が視覚的に把握できます。
通知の設定と ChatOps
設定は 3 ステップで完了します。Slack ワークスペースまたは Teams テナントを Chatbot に接続し、チャネルを選択し、SNS トピックを関連付けます。CloudWatch アラームの通知では、アラームが ALARM 状態に遷移した際に Slack チャネルにメッセージが投稿され、メトリクスのグラフが添付されます。ChatOps 機能では、チャットチャネルから @aws コマンドで AWS CLI を実行できます。例えば @aws lambda invoke --function-name my-function で Lambda 関数を呼び出したり、@aws cloudwatch describe-alarms --state-value ALARM でアラーム状態のアラームを一覧できます。インシデント対応時にチャットチャネル上で状況確認と対応操作を完結でき、コンテキストスイッチを削減します。
セキュリティとアクセス制御
Chatbot のチャネル設定には IAM ロールを関連付け、そのチャネルから実行可能な AWS 操作を制御します。本番環境の操作は専用の ops チャネルからのみ許可し、一般の開発チャネルでは読み取り専用の操作のみ許可する構成が推奨されます。ガードレールポリシーでチャネルごとに許可する IAM アクションを制限でき、誤操作による本番環境への影響を防止します。 Chatbot の操作ログは CloudTrail に記録されるため、誰がいつどのコマンドを実行したかを監査できます。 Chatbot 自体の利用料金は無料で、 SNS の配信料金のみが発生します。 Slack 通知の運用ノウハウを深めるには、専門書籍 (Amazon)が役立ちます。
Chatbot の料金
AWS Chatbot は無料で利用できます。Slack や Teams への通知配信、チャットからの AWS CLI 実行に追加料金は発生しません。コストが発生するのは、通知のトリガーとなる SNS トピック (100 万リクエストあたり約 0.50 ドル) と、ChatOps で実行した AWS 操作の結果として作成・変更されるリソースの料金のみです。無料で導入でき、運用の可視性と対応速度を大幅に向上させるため、全チームでの導入を推奨します。
まとめ
AWS Chatbot は Slack と Teams を AWS の運用ハブにする ChatOps サービスです。アラーム通知でインシデントの即時検知、チャットからの AWS 操作で迅速な対応、IAM ロールによるアクセス制御で安全な運用を実現します。無料で利用でき、導入のハードルが低い点も魅力です。