AWS Chatbot（β）の設定方法と注意点

#ごあいさつ
　こんにちは、kimuraです。
　今回はβ発表されているAWS Chatbotをslackで設定してみます。
　まだまだ使い勝手は良くないですが、非常に将来に期待のできるサービスですので、ぜひ試してみてください。

#本日は先に注意点！

　本日は先に注意点を書いておきます。
　設定した後にやりたいことと違った、というのでは残念なことになりますので。

 - 2019年9月16日現在、対応しているサービスは下記のみです。

[AWS Chatbot開発者ガイド（英語版のみ）](https://docs.aws.amazon.com/ja_jp/chatbot/latest/adminguide/what-is.html)

　上記の開発者ガイドのQAによれば、今現在でchatbot経由での通知に対応しているサービスは

 1. AWS Billing and Cost Management
 * AWS Config Events
 * Amazon GuardDuty Events
 * AWS Health Events
 * AWS Security Hub Events
 * AWS Systems Manager Events including the following:
  * AWS Systems Manager Configuration Compliance Events
  * AWS Systems Manager Maintenance Windows Events
  * AWS Systems Manager Parameter Store Events

のみです。
　<font color="red">これ以外のサービスからのメッセージは無視されます。</font>
　なので、例えばLambdaファンクションのfaildを検知させようとしてもできませんので注意してください。
　どんどん増えてはいるようなので、ドキュメントの更新を待ちましょう。 

 - slackを無料で使っている場合はアプリを10個までしかインストールできません
 
　後ほど説明しますが、AWS Chatbotをslackにインストール（連係）する必要があります。
　slack無料利用だと、10個までしかアプリが使えないので、webhookいっぱい使ってる人は気を付けましょう。

 - chatbot削除時は、slackからアプリを消すのではなく、最初にAWS chatbotの設定を削除してください

　先にAWS Chatbotの設定を削除してからでないと、権限不足で削除ボタンが機能しなくなります。
　もし、先にslackのアプリの方を先に削除した場合は、もう一度別途同じ設定でAWS Chatbotを新規作成すると、slack連携が元に戻ります。
　先にAWS側の設定を全て削除してからslackのアプリを削除しましょう。

# 設定開始

####まずは、SNSトピックを作りましょう。
　既存のものでも構いませんが、サブスクリプションがchatbotサービスによって自動で作られるので、他と混じるのが嫌な場合は別途作ってください。

　サブスクリプションはこの時作成する必要がありませんので、空のトピックを作るだけです。
　注意点は、例えばCloudwatchアラームから連携する場合などは、各リージョンにSNSトピックを作成しておく必要がある、というところです。

####AWS Chatbot作成
　AWS Chatbotは「管理とガバナンス」のところにあります。
　もしくは検索でchatbotなどを選択しましょう。

![SnapCrab_NoName_2019-9-16_9-58-35_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/78bfa285-de94-529e-e450-fd353cb41eff.png)

　初期画面で新規作成（configure new client）すると、slackかchimeを選択する画面になります。
　今回はslackを選択します。
　とはいえ、chimeでもやることはそう変わらないと思われます。

![SnapCrab_NoName_2019-9-16_9-58-45_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/e33a391f-6ab3-fc90-ccae-93dd8a144560.png)

![SnapCrab_NoName_2019-9-16_9-59-10_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/e0a6ba75-2131-19d5-6950-3b7c37c948d4.png)

「configure」をクリックすると、ブラウザでログインしているワークスペースが表示されます。
ログインしていなければワークスペース名を入力する画面が表示されますので、正しく入力し、ログインしてください。

![SnapCrab_NoName_2019-9-16_9-59-50_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/0569bbca-9132-73da-df7a-164d2b578f1e.png)

　設定画面は全部で三つのパートに分かれます。
　まずはslackのチャンネルを選択しましょう。
　Publicであれば、下の検索画面で選択が可能です。Privateであればチャンネル名を明記してください。

　IAMについては初回であれば新規作成で問題ありません。
　今現在の連携サービスであれば、Cloudwatchの閲覧系権限が全てあれば問題ありません。

![SnapCrab_NoName_2019-9-16_10-0-24_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/e5fa8fe8-d496-e04b-fcec-4ddbd16691ed.png)

　最後にSNSトピックスを選択します。
　リージョンと、先ほど作成したトピックスを選択しましょう。

　![SnapCrab_NoName_2019-9-16_10-4-1_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/c21401c3-1691-00de-b274-c0acbe91fde6.png)

　最初の画面に戻ると、chatbot用のコンフィグが作成済みになっています。

####トピックスを確認

![SnapCrab_NoName_2019-9-16_12-39-59_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/a70cc8f8-0b4d-e847-14c3-0f04e007c490.png)

　chatbot作成後に、SNSトピックスを見に行くと、自動的にサブスクリプションが作成されています。
　エンドポイントはslackのchatbot用になっているはずです。
　もし作成されていない場合は、もう一度AWS Chatbotの管理画面でSNSトピックを外して登録、再度SNSを登録し直すと上手くいきます。

####slack側の設定

　これでAWS側の設定はほぼ完了しました。
　後はslack側の設定を終えれば、疎通確認ができます。

![SnapCrab_NoName_2019-9-16_10-42-33_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/82f5266d-b8a5-b800-8b8d-8f7804459087.png)

　今回はchatbot用にチャンネルを作成しました。
　このチャンネルに「アプリを追加する」してください。

![SnapCrab_NoName_2019-9-16_10-42-44_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/bd563409-6051-6249-bca2-fe7f1cdfbd47.png)

　AWS Chatbotが表示されていますので、「追加」してください。
　これで連携は完了です。

####疎通テストをしよう

![SnapCrab_NoName_2019-9-16_11-30-28_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/1bc18c46-a787-bff3-9a67-9938499557db.png)

　連携サービスがhealthとか、GuardDutyとか即時試せないものばかりなので、Cloudwatchアラームで上図のようなアラームを入れました。

![SnapCrab_NoName_2019-9-16_14-40-2_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66713/a6e5bb16-cef9-484a-7fc2-ad0d2dc1800b.png)

　slackに通知されると上のようになります。
　自分でLambdaなどを使ってslack通知するよりは整理されている感じがしますね。
　今後も対応サービスは増えていくと思いますので、楽しみですね。