Amazon Web Services ブログ

AWS Chatbot が Microsoft Teams で利用可能に

2023年3月16日より、AWS Chatbot を使用して Microsoft Teams から AWS リソースのトラブルシューティングと運用が可能になりました。

チャットチャネルを通じた IT 運用タスクのコミュニケーションと共同作業を、ChatOps と呼びます。これにより、インフラストラクチャとアプリケーションの管理を一元化し、ワークフローを自動化および合理化できます。 使い慣れたチャットインターフェイスを通じて同僚とリアルタイムでコミュニケーションを取り、作業を進めることができるため、よりインタラクティブな共同作業が可能になります。

Amazon ChimeSlack を統合した AWS Chatbot を 2020 年にリリースしました。 それ以来、チャットプラットフォームの状況は急速に進化しており、多くの方が現在 Microsoft Teams を使用しています。

AWS Chatbot のメリット

AWS Chatbot を Microsoft Teams またはその他のチャットプラットフォームで使用すると、AWS サービスからの通知をチャットチャネルで直接受け取り、別のツールに切り替えることなく、コマンドを入力することでインフラストラクチャに対するアクションを実行できます。

通常、システムの状態、予算、新たなセキュリティ脅威やリスク、CI/CD パイプラインのステータスに関するアラートを受け取る必要があります。 チャットチャネルへのメッセージの送信は、Amazon Simple Notification Service (Amazon SNS) トピックでメッセージを送信するのと同じくらい簡単です。 Amazon CloudWatch アラームと Amazon SNS が統合されているため、アラームは追加の設定手順なしでチャットチャネルに自動的に配信されます。 同様に、Amazon EventBridge と Amazon SNS が統合されているため、EventBridge にイベントを送信するシステムやサービスはすべて、チャットチャネルに情報を送信できます。

しかし、ChatOps は、問題が発生したときにそれを発見する能力だけではありません。 AWS Chatbot では、定義済みの CloudWatch ダッシュボードをインタラクティブに受け取り、Logs Insights のログを取得して、チャットスレッドから直接問題をトラブルシューティングできます。 また、チャットチャネルにほとんどの AWS Command Line Interface (AWS CLI) コマンドを直接入力して、追加のテレメトリデータやリソース情報を取得したり、問題を解決するためのランブックを実行したりすることもできます。

長いコマンドを覚えたり、入力するのは難しいです。 AWS Chatbot では、頻繁に使用するコマンドとそのパラメータを参照する独自のエイリアスを定義できます。これにより、タスクを完了するまでの作業が減ります。エイリアスは柔軟性があり、クエリ時に挿入される 1 つ以上のカスタムパラメータを含めることができます。

また、チャットチャネルは会話用に設計されているため、自然な言葉で質問したり、AWS のドキュメントやサポート記事から関連する抜粋を AWS Chatbot に回答させたりすることもできます。 自然言語理解により、「show me my ec2 instances in eu-west-3. (2023年3月時点でベータ機能で、日本語では動作しません)」などのクエリを実行することもできます。

AWS Chatbot と Microsoft Teams のセットアップ

使い始めるには、2つの作業が必要です。 まず、Microsoft Teams でチームを構成します。Teams 管理者として、AWS Chatbot アプリケーションをチームに追加し、通知を受け取ったり、Microsoft Teams チャネルから AWS リソースを操作したりするために使用するチャネルの URL をメモします。


次に、Microsoft Teams のチャネルを AWS Chatbot に登録します。 また、チャネルメンバーがこのチャネルで何ができるかについて IAM 権限を割り当て、SNS トピックを関連付けて通知を受け取ります。 AWS Chatbot は、AWS マネジメントコンソールAWS CloudFormation テンプレート、または AWS Cloud Development Kit (AWS CDK) を使用して設定できます。 このデモでは、コンソールを使用します。

マネジメントコンソールを開き、AWS Chatbot セクションに移動します。 画面右上のチャットクライアントを設定ボックスで、Microsoft Teams を選択し、クライアントを設定を選択します。

Teams アプリで書き留めた Microsoft Teams チャネル URL を入力します。

設定を選択すると、AWS Chatbot はブラウザを Microsoft Teams にリダイレクトして認証を行います。 すでに認証されている場合は、すぐに AWS コンソールにリダイレクトされます。 それ以外の場合は、Microsoft Teams の資格情報とワンタイムパスワードを入力し、リダイレクトされるのを待ちます。
この段階で、Microsoft Teams チームが AWS Chatbot に登録され、Microsoft Teams チャネルを追加する準備が整いました。 新しいチャネルを設定を選択します。

設定の詳細を入力するセクションは 4 つあります。 最初のセクションでは、チャネルの設定名を入力します。 オプションで、ログ記録の詳細も定義します。 2 番目のセクションでは、Microsoft Teams チャネル URL をもう一度貼り付けます。

3 番目のセクションでは、アクセス許可を設定します。 チーム内のすべての Microsoft Teams ユーザーに同じ権限を設定することも、ユーザーレベルのロール権限を設定してチャネルでユーザー固有の権限を有効にすることもできます。 このデモでは、チャネルロールを選択し、そのチャネルに IAM ロールを割り当てます。 ロールは、チャネル内のすべてのユーザーが共有する権限を定義します。 たとえば、ユーザーが Amazon EC2 の設定データにはアクセスできるが、Amazon S3 からはアクセスできないようにするロールを割り当てることができます。 チャネルロールで、既存の IAM ロールを使用するを選択します。 既存のロールで、2019 年の re: Invent の ChatOps に関するトーク: chatbot-demo 用に作成したロールを選択します。 このロールではすべての AWS サービスへの読み取り専用アクセス権が付与されますが、AWS Chatbot ユーザーが自分の AWS リソースに対してアクションを実行できるようにする他のロールを割り当てることもできます。

チーム内の他のユーザーがチャネルやユーザーレベルの役割に必要以上の権限を誤って付与してしまうリスクを軽減するために、チャネルガードレールポリシーを含めることもできます。 これらは、チャネルを使用するときにユーザーが持つことができる最大権限です。 実行時には、実際の権限は、チャネルまたはユーザーレベルのポリシーとガードレールポリシーの共通部分になります。 ガードレールポリシーは、チャネルユーザーが決して逃れることのできない境界線のようなものです。 この概念は、IAM エンティティの権限境界AWS Organizations の Service control policies (SCP) に似ています。 この例では、ReadOnlyAccess 管理ポリシーをアタッチします。

最後の 4 番目のセクションでは、チームのチャネルに送信される通知のソースとなる SNS トピックを指定できます。 アプリケーションまたは AWS サービス (CloudWatch アラームなど) はこのトピックにメッセージを送信でき、AWS Chatbot はすべてのメッセージを設定済みの Microsoft Teams チャネルに中継します。 Amazon EventBridge と Amazon SNS が統合されているため、EventBridge にメッセージを送信できるアプリケーションであれば、どのアプリケーションでも Microsoft Teams にメッセージを送信できます。

このデモでは、既存の SNS トピック、us-east-1 リージョンの alarmme を選択します。 複数の SNS トピックを設定して、さまざまなリージョンからアラームを受信できます。 次に、設定を選択します。

テスト

これで、セットアップができました。
AWS Chatbot の設定ページで、まずテストメッセージを送信を選択します。また、請求予定額が $500 を超えたときのアラームも定義しています。マネジメントコンソールの CloudWatch セクションで、Microsoft Teams と共有されている SNS トピックにメッセージを投稿するようにアラームを設定します。
数秒以内に、Microsoft Teams チャネルでテストメッセージとアラームメッセージが届きます。

次に、請求アラームの送信元を理解するためのコマンドを入力します。 私は実行中の EC2 インスタンスの数を把握したいと考えました。
チャットのクライアントチャネルで、@awsと入力して AWS Chatbot を宛先として選択し、ターミナルで行う場合と同じように CLI コマンドの残りの部分を選択します。
ec2 describe-instances --region us-east-1 --filters "Name=architecture,Values=arm64_mac" --query "Reservations[].Instances[].InstanceId"
チャットボットは数秒以内に応答します。

よく使うコマンドのエイリアスを作成できます。 エイリアスには、たとえば地域名など、実行時に指定できるプレースホルダーパラメーターが含まれている場合があります。
次のコマンドでエイリアスを作成して macOS インスタンス ID のリストを取得します。
aws alias create mac ec2 describe-instances --region $region --filters "Name=architecture,Values=arm64_mac" --query "Reservations[].Instances[].InstanceId"
これで、@aws alias run mac us-east-1 をショートカットとして実行すると、上記と同じ結果が得られます。 @aws alias list@aws alias get@aws alias delete コマンドでエイリアスを管理することもできます。
皆さんはどうかわかりませんが、私にとってコマンドを覚えるのは大変なことです。ターミナルを使うときは、様々なコマンドとそのオプションを思い出すためにオートコンプリートに頼っています。AWS Chatbot にも同様のコマンド補完機能があり、不足しているパラメータを収集するように案内してくれます。

AWS Chatbot を使っていると、自然な英語を使って質問することもできます。 @aws how can I tag my EC2 instances?@aws how do I configure Lambda concurrency setting? などの質問を入力すると、AWS ドキュメントやサポート記事から回答を見つけるのに役立ちます (2023年3月時点でベータ機能で、日本語では動作しません)。
また、AWS Resource Explorer がアクティブになると、アカウント内のリソースを検索できます。 たとえば、ボットに次のように尋ねました。@aws what are the tags for my ec2 resources?@aws what Regions do I have Lambda service?
そして、私はこれらの回答を受け取りました。


AWS Chatbot のおかげで、ca-central-1 に不要な Lambda 関数が残っていることに気付きました。 AWS コンソールを使用して削除しました。

今すぐ利用可能

今すぐ Microsoft Teams で AWS Chatbot を使い始めることができます。 AWS Chatbot の Microsoft Teams 用アプリは、追加費用なしで追加できます。 AWS Chatbot は、追加料金なしですべてのパブリック AWS リージョンで利用できます。 使用する基礎となるリソースに対して料金を支払います。 チャットクライアントから料金が発生する可能性があります。
今すぐ始めて、Microsoft Teams との初めての統合を設定してください。

— seb

Sébastien Stormacq

Sébastien Stormacq

Seb は 80 年代半ばに Commodore 64 に初めて触れて以来、コードを書いています。 彼は、情熱、顧客支持、好奇心、創造性を駆使して、AWS クラウドの価値を引き出すようビルダーに刺激を与えています。彼の関心は、ソフトウェアアーキテクチャ、開発者ツール、モバイルコンピューティングです。ツイッター @sebsto で彼をフォローしてください。

翻訳はソリューションアーキテクトの村田が担当しました。原文はこちら