電磁波に撃たれて眠りたい!

今日も電磁波浴びまくりのIT業界で働く@mamohacyがガジェット/クラウド/IT業界を語ってくブログ

【AWS re:learning】Day6(1/1) AWS ChatBot

f:id:mamoahcy:20210105142757p:plain

●調査リスト

①公式サイト
https://aws.amazon.com/jp/chatbot/
②ユーザーガイド
https://docs.aws.amazon.com/chatbot/index.html
③BlackBelt
-
④DevelopersIO記事一覧
https://dev.classmethod.jp/referencecat/aws-chatbot/
⑤リリースノート
-
⑥ドキュメント更新履歴
https://docs.aws.amazon.com/chatbot/latest/adminguide/doc-history.html

●温度感調査

Developers IO パラメータ

記事数:9
最終更新日Top3:2020.11.302020.08.202020.06.23

サービスアップデート状況

サービス提供開始:2019/7/24

リリースノートを発見できず。

2020年内のサービスアップデートアナウンス:不明

ドキュメントアップデート状況

※2021/01/05現在、日本語版ドキュメントなし

https://docs.aws.amazon.com/chatbot/latest/adminguide/doc-history.html

April 22, 2020 AWS Chatbot general availability release December 13, 2019 Updated CLI commands information. November 22, 2019 Add support for CLI commands in Slack channels. November 7, 2019 Announcement of AWS CodeSuite development tools support. August 28, 2019 Enhanced troubleshooting information.

2020年内ドキュメントアップデート回数:1回


※その他参考情報あれば転記

●AWS ChatBot サマリ

2020/4/22にGAになったばかりの若いサービス。

機能は非常にシンプルで、極端に言ってしまえばAWSでおきたイベントをSlackやAmazon Chimeに投稿してくれたり、逆にSlackチャネルのメンバーにAWS ChatBotを招待することで、いわゆるChatOps(チャットからBotを呼び出してコマンドを実行させ、その結果をチャネルに返信させる)を実現させるチャットボットの機能を、マネージドサービスで提供してくれるというもの。これまで同様の機能を実現するにはBot用のホストをEC2なりで立ててHubotなどのBotエンジンで動かすか、あるいはSNSトピックの先にLambdaを置いてSlack APIを呼ぶ仕組みを作る必要があるなど若干の手間がかかったが、この機能があればこういったBot系のリソースを用意しなくても中継できるようになる。

2021/01/06現在、対応しているチャットサービスはSlackとAmazon Chimeのみ。

f:id:mamoahcy:20210106170654p:plain

このChatBotを介したイベントの記録自身もオプションでAmazon CloudWatch Logs経由でログ記録できる。

Botとしての機能①:ChatBotからSlack/Amazon Chimeへの書き込み

SNSトピックを先に作成し、これをAWS Chatbotの「チャネル」のなかで紐付けをし、投稿先のチャットサービスのチャネルを指定することで、イベント発生時にSNSトピックが発行できるAWSの他のサービスから直接チャットサービスの対象チャネルにトピックの内容を投稿させることができる。

たとえばコストが一定ラインを超えたり、CICDパイプラインの実行が失敗したりといったもともとトピックを叩けるサービスは勿論、SNSトピックを叩ければ何でも良いので、EC2やLambdaなどからSNS TopicのAPI経由で直接Chatbotを呼び出すこともできる。

できること②:SlackからChatBot呼び出し

これは2021/01/06現在、Slackしか対応していないようだが、Slackワークスペース側でAWS ChatBotのセットアップが終わっていれば、@awsというメンションを付けて書き込みをすることでChatBotを起動させることができ、下記のフォーマットでAWSコマンドを実行させることができる。

@aws service command --options

実行許可はチャンネル登録時に設定するIAMロールへの付与ポリシー権限に依存するが、基本的にはターミナルで使うコマンドと同じものが使えるらしい。

docs.aws.amazon.com

深堀りの有無

実施しない

→後日、別の目的でChatOps実現の際に活用をする。

●所感

自社内でもSlackによるChatOpsを実施しているサービス運用チームもあり、AWS ChatBotサービスには可能性を感じます。CCoEでもBilling Alartに関するトピックをチームのSlackチャネルに送っています。

現時点ではAWSコマンドをチャットから叩けるようですが、よく考えると裏側にLambdaを用意しておくことでほぼなんでも実行が可能になるはずです。 似たようなChatBot機能をAPI-GW→Lambdaで実装したことがありますが、エンドポイントとペイロードなどの管理やフォーマットがかなり面倒でした。このChatBotとSlackのワークフローの機能を使えばLambdaに渡すパラメータもフォームから選ばせることができるので、さらにシームレスにAWSとSlackをつなぐことができるはずです。

dev.classmethod.jp

最近はChatOpsを殆ど触っていませんが、CCoEに関わる情報を収集するのにマネコンを経由せずSlackのみで完結できるのは相当アツいです。こちらも別途時間を作ってサービスの深堀りやChatOpsの実現ができたら別途レポートしたいと思います。

●参考情報

↓20191210 AWS Black Belt Online Seminar Amazon Chime
https://www.slideshare.net/AmazonWebServicesJapan/20191206-aws-black-belt-online-seminar-amazon-chime