[アップデート] AWS Chatbot が Microsoft Teams で利用出来るようになりました

2023.03.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

本日のアップデートで AWS Chatbot が遂に Microsoft Teams をサポートしました。

これまでは Slack と Chime が AWS Chatbot のクライアントとしてサポートされてきましたが、今後は Teams に統合して AWS Chatbot を介した ChatOps が利用出来るようになりました。

これまでは Microsoft Teams から AWS リソースを操作したい場合などは、Power Automate の AWS アクションや Webhook を統合することで実現することが出来ていたと思いますが、今後は AWS Chatbot アプリケーションが統合出来るようになったのでより簡単にセットアップと管理ができ、AWS Chatbot を介して AWS に対する操作をサポート出来るようになりました。

本日は Microsoft Teams と AWS Chatbot を統合して EC2 の停止と、SNS 通知、ガードレールの確認を行ってみたので紹介します。

セットアップ

セットアップの流れとしては大きく 2 つで、 まずは Microsoft Teams のチャネルに AWS Chatbot アプリケーションを追加します。
アプリケーション一覧から既に選択出来るようになっているかと思います。

次に AWS マネジメントコンソール上から AWS Chatbot 側でも Microsoft Teams の設定を行います。

Microsoft Teams に AWS Chatbot アプリを追加する

Microsot Teams のアプリ機能から「aws」アプリを追加します。
この時点ではまだ AWS アカウントの準備などは不要です。

対象チームとチャネルを選択します。

チャネルに AWS Chatbot 用のアプリケーションが追加されました。

AWS Chatbot で Microsoft Teams クライアントの設定

続いて、AWS アカウント側で AWS Chatbot の設定を行っていきます。
AWS Chatbot 側で設定したチャネルでのみ AWS Chatbot を介した操作が可能になります。
また、この時点で AWS Chatbot が受け持つ IAM ロールなども設定します。

まず、チャネル情報を AWS Chatbot で設定する必要がありますので、Microsoft Teams のチャネル一覧から対象チャネルを右クリックし「チャネルへのリンクを取得」メニューから URL を取得します。

続いて、AWS マネジメントコンソールにて AWS Chatbot コンソールを開きます。
チャットクライアント設定画面で新たに Microsoft Teams が選択出来るようになっているので、選択します。

先程取得した対象チャネルの URL を設定します。

Microsoft Teams の認可画面へリダイレクトされるのでアクセス許可を設定します。
対象テナントへのアクセス許可を許可出来るユーザーでサインインする必要があります。
アクセス許可の付与状況や Azure AD / Microsoft 365 側の組織設定によってこのあたりで躓きそうな気がしますのでこのあたりの権限が許可されているかはテナント管理者の方へご確認ください。

クライアント設定が完了しました。
しかし、この時点ではまだチャネルが登録されておらず、利用出来ませんので続いてチャネルを登録しましょう。

チャネルを追加しロールを設定

作成したクライアントにチャネルを追加します。
先程と同様に Microsoft Teams 側のチャネル URL が必要になります。

アクセス許可については従来同様にチャネルロールとユーザーレベルのロールがあります。
今回はチャネルロールを使ってみます。
ガードレールも従来と同様でチャネルロールやユーザーロールの上限となるガードレールを設定するものとなります。
今回は EC2 のフルアクセスを設定しました。

チャネル設定が追加されました。
このチャネルに対して対象の IAM ロールでデフォルトで実行されます。
テンプレートからだと EC2 変更権限がなかったので、IAM ロール設定画面でポリシーを追加します。

ここでは後述のガードレール動作を確認するため、意図的に AdministratorAccess を付与しています。
実際には最小権限の法則に従って適切なポリシー設定を行いましょう。

SNS 通知設定

Chatbot の SNS 通知機能も同様に Microsoft Teams で SNS を経由して使用することが出来ます。

チャネル設定からサブスクライブする SNS トピックを設定します。

設定すると自動で Chatbot 用のエンドポイントが SNS トピックのサブスクリプションに追加されています。

使ってみる

では使ってみましょう。

@awsメンションでコマンドを実行することが出来ます。
ヘルプをまず見てみます。

ec2 のヘルプも見てみましょう。

良いですね。
コマンド実行となるとリファレンス必要になりそうですが Teams で完結出来そうです。

EC2 停止

次のように適当な EC2 インスタンスを起動してそれを Microsoft Teams から停止してみます。

次のように停止コマンドを含むメッセージを送信してみました。
すると、実行するかどうか確認ダイアログが開始されます。

[Run] command を選択し、コマンドの実行を確定させます。

実行結果が表示されています。
Stopping が表示されているのでうまくいっていそうです。マネジメントコンソールも確認してみましょう。

EC2 が停止中になっていますね。

SNS 通知

今回は CloudFormation のスタック操作イベントを SNS 経由で Microsoft Teams へ通知してみました。

次のようにイベント通知を受信することが出来ました。

今回は簡易的な確認で CloudFormation の通知を使用しましたが、CloudWatch アラームなどの通知先としてももちろん設定出来ます。

ガードレールポリシーの動作確認

続いてガードレールの確認をしてみます。
対象チャネルのガードレールポリシーの設定は「EC2フルアクセス」となっています。
一方で AWS Chatbot で実行される際の IAM ロールは AdministratorAccess マネージドポリシーが付与されています。

この状態で次のように Amazon S3 バケットを作成するメッセージを送信してみましょう。

この場合は、次のようにアクセス許可がされていないということで実行エラーになりました。

チャネルのガードレールを適切に設定しておくことで、ユーザーレベルでポリシーがバラバラになる場合などでもガードレールとして機能するのでこれはとても良い機能ですね。

さいごに

本日は AWS Chatbot が Microsoft Teams で利用出来るようになったので試してみました。

今まで Microsot Teams で色々な仕組みを構築して AWS リソースへアクセスしていた方、AWS からの通知を転送していた方には朗報ではないでしょうか。
是非使ってみてください。