TeamsでAWS Chatbotからのアラートを受け取りたかった
2024年01月15日 月曜日
CONTENTS
はじめに
はじめまして。クラウドソリューション部の荒木です。2023年にIIJに入社し、クラウドソリューションの開発や、クラウド導入力の向上に関する活動などに携わっています。
今回はAWSの数あるサービスの中でも、アイコンと紹介動画が特にかわいい、AWS Chatbotをご紹介します。
※なお、この記事の検証部分については「できなかった」ナレッジの共有になりますので、はじめにその点をご了承ください。
AWS Chatbotとは
AWS ChatbotはAWS環境の運用をサポートするサービスです。AWS環境とチャットスペースをインタラクティブに連携させ、ChatOpsを実現させます。Slackなどのチャットスペースで、AWS環境からユーザへのアラート通知を受け取るだけでなく、ユーザ側からAWS環境へチャットを送信するようにAWS CLIコマンドを実行し、その返信でリソースやコストの状況を受け取るなど、双方向の連携を行うことができます。
また、通知内容も文字列のメッセージから可読性の高い表現に加工されて届くため、複数人で運用しているチームチャネルと連携することで、AWS環境の状況やトラブルシューティング状況の共有をスムーズに行うことができます。
AWS ChatbotがMicrosoft Teamsをサポート
AWS Chatbotの一般提供が開始された当初は、連携先のチャットツールとしてSlackチャネルとAmazon Chime チャットルームがサポートされていましたが、2023年にはMicrosoft Teams(以降、Teamsと表記します)のサポートが追加されました。リンク先のブログには設定手順も詳細に説明されていますので、今回はその設定方法を検証してみました。
AWS Chatbot が Microsoft Teams で利用可能に | Amazon Web Services ブログ
検証
構成図
全体の構成図は次の通りです。
Amazon EC2のCPU使用率をAmazon CloudWatchアラームで監視します。CPU使用率が閾値を超えると、アラーム内容がAmazon SNSを経由してAWS Chatbotへ送信されます。最後に、AWS Chatbotと予め連携しておいたTeamsチャネルに通知が送信されます。
AWS側の各リソースを作成し、AWS ChatbotとTeamsのセットアップを行います。Teamsに検証用のチームチャネルを作成し、チャネルにAWS Chatbot アプリケーションを追加します。
Teams側に制限が…!
しかし、ここで今回の検証が頓挫します。
セキュリティガバナンスの観点からTeamsへのアプリケーション追加が制限されており、セットアップに必要なAWS Chatbotアプリケーションを導入することができませんでした。個別に許可する対応も難しいようなので、残念ながら今回の検証はここまでとなりました。
おまけ:どうしてもTeamsで受信したい場合
AWS Chatbotではないのですが、Teamsへ通知を送信するほかの方法をご紹介します。WebhookというアプリケーションをTeamsへ追加すると、チャネル固有のURLを作成することができます。このURLをターゲットに、Amazon SNSメッセージをAWS Lambdaで転送する、というものです。この方法の設定手順についても、AWSの公式ナレッジスペースで紹介されています。なお、この方式はAWS環境からTeamsへの一方通行な連携であるため、TeamsからAWS環境へのアクセスは含まれていません。
ウェブフックを使用して Amazon SNS メッセージを発行する | AWS re:Post (repost.aws)
構成図は以下のようになります。先ほどの構成から、Amazon SNSの送信先をAWS Lambdaに置き換えています。
この場合、JSON形式のメッセージ内容が直接Teamsに送信されます。
おわりに
普段、各種検証のためにAWSアカウント環境で強めの権限で作業をすることが多いこともあり、連携先サービスの管理権限の考慮が盲点となってしまいました。次回はちゃんと「できました!」な記事をご紹介します。