はじめに
こんにちは。PE部の谷です。
AWS Chatbotというサービスを使ってみたいと思います。
AWS Chatbotとは
Amazon ChimeまたはSlackに対して安全かつ簡単に通知が送れるサービスです。
また、Slack チャンネルと Amazon Chime チャットルームから、AWS リソースを直接モニタリングし操作できます。
使ってみる
構成図
EC2のメトリクスを監視し、平均CPU使用率が0.2%より小さくなったらSlackに通知される仕組みを作っていきます。
手順
SNSの設定
AWS Chatbotの作成の前にSNSトピックを作ります。
設定はデフォルトでOKです。
AWS Chatbotの設定
チャットクライアントに[Slack]を設定し、[クライアントを設定]をクリックします。
Slackワークスペースへのアクセス権限を許可する画面に遷移するので[許可]をクリックします。
[新しいチャネルを設定]をクリックしてチャネルの設定をします。
SlackチャネルIDに、作成したプライベートチャンネルのIDを入力します。(パブリックチャンネルでも可)
プライベートチャンネルの場合、AWS Chatbotをチャンネルに招待する必要があるため、下のスラッシュコマンドを実行しておきます。
/invite @aws
アクセス許可欄のロール設定では、[チャネルIAMロール]、[テンプレートを使用してIAMロールを作成する]を選択し、ポリシーテンプレートに[通知のアクセス許可]を選択します。
Channel ガードレールには、特に権限を持たせる必要はないので[CloudWatchReadOnly]を指定します。
先ほど作成したSNSトピックを指定して[作成]をクリックします。
SNSトピックにサブスクリプションが追加されたことを確認してください。
CloudWatchアラームの設定
EC2の平均CPU使用率が0.2%より小さくなるとアラーム状態になるアラームを作成します。
アラーム状態のとき、作成したSNSトピックにメッセージを送信するアクションを設定します。
設定方法は割愛します。
検証
CPU使用率を0.2%にするため、EC2を停止します。
しばらくするとアラーム状態になりました。
Slackを見てみましょう。
時間、インスタンスID、CPU使用率などを含む通知が届きました。
成功です。
補足
AWS Chatbotのアクセス許可、ロール設定の部分を少し説明します。
チャネルIAMロール:Slackチャンネルに存在するメンバー全てに同じ権限を付与する事ができるロール
ユーザーロール:Slackチャンネルに存在するメンバーそれぞれに別々の権限を付与する事ができるロール
Channel ガードレール:上記2つより優先されるポリシー
チャネルIAMロールとユーザーロールの違いは、権限付与をIAMユーザーにするか、IAMグループにするかみたいな感じです。
チャンネルに参加しているユーザーごとに権限を分けたい場合は、ユーザーロールを使用します。
Channel ガードレールで許可されていないアクションは実行することができません。
Channel ガードレールで許可された権限とチャネルIAMロール(ユーザーロール)で許可された権限が被る範囲内でアクションを実行することができます。
SCPとIAMみたいなかんじ?(あくまでイメージです。)
まとめ
普段、Slackを使っている方は通知にすぐ気づけるのでおすすめです。
ぜひ使ってみてください。