AWS Chatbot
Slack や Microsoft Teams で AWS リソースの通知と操作を行うインタラクティブエージェント
何ができるか
AWS Chatbot は、Slack や Microsoft Teams のチャンネルに AWS の通知を配信し、チャットから AWS リソースを操作できるインタラクティブエージェントです。CloudWatch アラーム、AWS Health イベント、Security Hub の検出結果などの通知をチャットチャンネルに自動配信します。さらに、チャットから AWS CLI コマンドを実行してリソースの状態確認や操作を行うこともできます。
どのような場面で使うか
本番環境のアラートをチームの Slack チャンネルにリアルタイム通知、インシデント発生時のチャットからの迅速な状況確認と対応、AWS のコスト異常の即時通知、デプロイ完了やパイプライン失敗の通知などに活用されています。ChatOps (チャットベースの運用) の実現に最適です。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
会社の連絡係に例えるとわかりやすいでしょう。サーバールーム (AWS) で何か問題が起きると、連絡係 (Chatbot) がすぐにチームの会議室 (Slack チャンネル) に駆けつけて報告します。さらに、会議室から「サーバーの状態を見せて」と頼めば、連絡係がサーバールームに行って情報を持ち帰ってくれます。
AWS Chatbot とは
AWS Chatbot は、Slack や Microsoft Teams と AWS を連携させるサービスです。AWS の運用では、アラートの確認やリソースの状態チェックのために AWS コンソールにログインする必要があります。Chatbot を使えば、普段使っているチャットツールで AWS の通知を受け取り、簡単な操作まで行えます。チームメンバー全員がリアルタイムで状況を共有できます。
通知の配信
Chatbot は、SNS トピックを経由して AWS の各種通知をチャットチャンネルに配信します。CloudWatch アラーム (CPU 使用率の急上昇など)、AWS Health イベント (サービス障害情報)、Security Hub の検出結果、Budgets のコストアラートなどを自動的にチャットに投稿します。通知はリッチフォーマットで表示され、アラームの詳細やグラフへのリンクが含まれます。
チャットからの AWS 操作
Chatbot では、チャットチャンネルから AWS CLI コマンドを実行できます。たとえば、@aws cloudwatch describe-alarms と入力すると、アラームの一覧が表示されます。実行できるコマンドは IAM ロールで制御されるため、読み取り専用の権限だけを付与して安全に運用できます。Lambda 関数の呼び出しや ECS サービスの状態確認なども可能です。
はじめかた
AWS Chatbot コンソールで「新しいクライアントを設定」から Slack または Microsoft Teams を選択し、ワークスペースを認証します。チャンネルを選択し、Chatbot が使用する IAM ロールを設定します。通知を受け取るには、SNS トピックを作成して Chatbot チャンネルに紐づけ、CloudWatch アラームなどの通知先にその SNS トピックを指定します。
注意点
- AWS Chatbot 自体は無料で利用でき、通知の配信やコマンド実行に追加料金は発生しない (SNS の料金は別途)
- チャットから実行できる AWS CLI コマンドは IAM ロールの権限に依存するため、最小権限の原則に従って適切な権限を設定すること
- Chatbot は Slack のパブリックチャンネルとプライベートチャンネルの両方に対応しているが、DM (ダイレクトメッセージ) には対応していない
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。