はじめに
AWS Chatbotとは複数のAWSサービスを以下のチャットサービスと安全かつ簡単に統合しChatOpsを実現することができるサービスです。
- Amazon Chime
- Slack
- Microsoft teams
「ChatOps」とは、「Chat」と「Ops」という2つのワードを掛け合わせて作られた造語です。これには、チャットサービス(Chat)をベースとして、システム運用(Ops)を行うという意味があります。
検証準備
ChatBotからSlackに通知を送ると言いますが、実際はいくつかのAWSサービスを経由しています。
1. Amazon SNSトピックの作成
最初にSimple Notification Service(SNS)のコンソールを開き、SNSトピックを作成します。
項目はそれぞれ下記の通り設定します。
- タイプ ⇒ スタンダード
- 名前 ⇒ 任意
- 表示名 ⇒ 任意
他はデフォルトでOKです。
2. Amazon ChatBotの設定
AWS Chatbotのコンソールに移動し、新しいクライアントを作成します。
チャットクライアントのプルダウンからSlackを選択し、クライアントを設定をクリックします。
Slackワークスペースへのアクセス許可を求められるので許可するをクリックします。
画面遷移後、上のほうにSlackが正常に承認しましたと表示されます。
新しいチャネルを設定をクリックしチャネルを設定していきます。
ちなみに、「チャネル」も「チャンネル」も意味は同じ
Slackチャネルの設定画面になるので下記表の通り入力します。
- 設定名 ⇒ 任意
- ログ記録 - オプション ⇒ 空でOK
- チャネルID ⇒ 後述
チャネルIDはどこで確認するかというと、通知したいSlackチャンネルを右クリックすると画像のように表示されるのでチャンネル詳細を表示するをクリックします。
一番下までスクロールすると確認できます。
AWSコンパネのSlack チャネルを設定する画面に戻ります。
アクセス許可の項目では下記の通り設定します。他はデフォルトでOK
- ロール設定 ⇒ チャネルロール
- チャネルロール ⇒ テンプレートを使用してIAMロールを作成する
- ロール名 ⇒ 任意
- ポリシーテンプレート ⇒ 通知のアクセス許可 と Resource Explorerのアクセス許可 を追加する
Resource Explorerのアクセス許可は名前の通りAWSリソースを検索したい場合必要
通知 - オプション の項目では下記の通り設定します。
- リージョン ⇒ 東京リージョン
- トピック ⇒ 先ほど作成したSNSトピック
ここまで完了すれば一番下の設定ボタンをクリックします。
3. AWS Resource Explorerの有効化
ChatBotでリソース検索を行うにはResource Explorerを有効にする必要があります。
AWS Resource Explorerのコンパネで「Resource Explorerをオンにする」をクリックします。
画面遷移するので適用するリージョンを選択し、有効化します。
4. テストメッセージの送信
設定したチャネルにチェックを入れ、テストメッセージを送信をクリックします。
画面上部にメッセージがディスパッチされたと表示されます。
このようにSlackチャンネルにメッセージが届きます。
ここまでできればChatBotの設定は完了です。
検証開始
それでは指定したSlackチャンネルで下記のように送信してみましょう。
1 |
<span class="p-member_profile_hover_card" role="presentation">@aws</span> What services am I using in ap-northeast-1? |
ap-northeast-1リージョンで使用しているサービスの一覧を返してくれました。
ドキュメント検索は以下の通りです。
1 |
<span class="p-member_profile_hover_card" role="presentation">@aws</span> How do I update Lambda concurrency settings? |
3つの公式ドキュメントを案内してくれました。
まとめ
今回はSlackでAWSリソースの検索、ドキュメントの検索をやってみました。
AWS ChatBotではこれ以外にもEC2インスタンスの停止、起動なども可能です。
また、EventBridgeと連携してEC2インスタンスのステータスが変更された場合にSlackに通知を飛ばすような監視もできます。
AWSに関する操作を全てチャットアプリで完結できることが最大のメリットです。
(Slackチャンネル参加者全員が操作できてしまうので権限設定には気を付けましょう)