はじめに
ISID X(クロス)イノベーション本部 の三浦です。
権限の問題でシステム部門での作業が必要だったのですが、ようやくシステム部門での作業が完了し、弊社でもAWS Chatbotが Microsoft Teamsでも使えるようになりました。
ということで今さら感もありますが、システム部門の作業前の状態、作業後の一般ユーザーによる設定例、利用方法について記述しようと思います。
目次
AWS Chatbot の概要
簡易な作業でTeams等からAWSの操作を可能にする機能です。同様のことは、AWS Lambda、webhookを利用すれば実装可能でしたが、AWS Chatbotによって非常に簡易にできるようになりました。
筆者の場合、開発環境、デモ環境の立ち上げを簡易にやりたいというニーズがありました。
エンジニアが対象の場合は、自身でAWSコンソールから立ち上げるようにする、スクリプトで起動するといった手も取れます。しかし、非エンジニアが多い場合、依頼を受けて運用エンジニアが起動する、停止するという運用をしている例がありました。
これらの問題をAWS Chatbotを使用して対応する例を示します。
システム部門の作業前の状態
下記の要領で、『Teamsクライアント > アプリ > AWSで検索 > チームに追加』でアプリの登録を試みます。
しかしながら、テナントの設定状況の問題でアプリが使えない状態でした。
上記の旨をシステム部門に申請し、アプリの承認およびAWSからのアクセス権付与を対応していただきました。
本作業は、多くのテナントでは一般ユーザーに権限解放されていないと思いますので、システム部門に実施していただく必要があります。
作業後の一般ユーザーによる設定例
上記の対応が済んでいる場合、下記画面より先に進めます。
連携するチャネルを選択します。
しかし、privateチャネルは表示されない、5個以上のチャネルは表示されない(team名+チャネル名で絞り込めます)などのやや癖のある動きをするようです。
連携が終わると、上記のようにメッセージが投稿されます。
続いて、AWS アカウント側で AWS Chatbot の設定を行っていきます。
まず、チャネル情報を AWS Chatbot で設定する必要があります。ですので、Microsoft Teams のチャネル一覧から対象チャネルを右クリックし「チャネルへのリンクを取得」メニューから URL を取得します。
続いて、 AWSコンソールにログインし、AWS Chatbot コンソールを開きます。
チャットクライアント設定画面で Microsoft Teams が選択できるようになっているので、選択します。
先ほど取得した対象チャネルの URL を設定します。
組織として認証済みのため、特に認証画面が出ることなく完了します。
続いて、チャネル登録をします。
チャネル名の表記がURLエンコードで表示されていて見た目が悪いですが、問題なく動作します。
次にこのチャットボットで何ができるか権限を指定します。
下記のように、いくつかロールのテンプレートがあるのですが、それらでは限られた権限しかありません。
そのため、下記の設定より新規にロールを作成します。
『信頼されたエンティティ』にAWS Chatbotを選び
今回はec2の起動、停止をしたいため、一旦雑にEc2FullAccessを指定します。実際に利用されるときは、そのチャネルの利用者のロールに応じて権限を設定するのがよいでしょう。
このようにして作成したIAMロールには、chatbotに対する信頼関係が設定されています。
本ロールを元の画面で設定し、チャネルガードレールポリシーにも同等の権限であるEc2FullAccessを指定します。
これで、chatbotの設定が完了しました。
利用例
それでは、chatbotを利用してみましょう。
chatbotの構文は、ほぼ、aws cliと同じです。
ということで、インスタンスの起動を試みます。
初回利用のため、リージョンを設定しろと言われてしまいました。
ということでchatbot上でリージョンを設定します。
再度コマンドを実行すると、本当にこのコマンドを流していいかと聞かれるため実行します。
コマンドが実行されました。
AWSコンロールで確認したところ、インスタンスが起動していることを確認できました。
同様の手順でインスタンスの停止も可能です。
エイリアスの利用
が、AWS CLIに相当するものをTeam上で叩けというのは敷居が高いため、エイリアスを設定します。
下記のような要領でエイリアスの作成が可能です。
開始、停止用のエイリアスを作成したので、さっそく試します。
エイリアスを使用して環境1を立ち上げろと命じたところ、実際に実行するコマンドが展開されて表示されました。
便利ですね。
で、実行すると、下記のようにコマンドが実行されます。
なお、日本語でのエイリアスは設定できませんでした。
まとめ
このようにして、簡易にTeamsからAWSのインスタンスの開始、停止ができるようになりました。非エンジニアにとって非常に良い機能なのではないかと思っています。
執筆:@miura.toshihiko、レビュー:@wakamoto.ryosuke
(Shodoで執筆されました)