AWS Chatbotを使ってみた

記事タイトルとURLをコピーする

はじめに

こんにちは。PE部の谷です。
AWS Chatbotというサービスを使ってみたいと思います。

AWS Chatbotとは

Amazon ChimeまたはSlackに対して安全かつ簡単に通知が送れるサービスです。
また、Slack チャンネルと Amazon Chime チャットルームから、AWS リソースを直接モニタリングし操作できます。

使ってみる

構成図

f:id:swx-tani:20220223125319p:plain

EC2のメトリクスを監視し、平均CPU使用率が0.2%より小さくなったらSlackに通知される仕組みを作っていきます。

手順

SNSの設定

AWS Chatbotの作成の前にSNSトピックを作ります。
設定はデフォルトでOKです。

AWS Chatbotの設定

チャットクライアントに[Slack]を設定し、[クライアントを設定]をクリックします。

f:id:swx-tani:20220223180521p:plain

Slackワークスペースへのアクセス権限を許可する画面に遷移するので[許可]をクリックします。

[新しいチャネルを設定]をクリックしてチャネルの設定をします。
SlackチャネルIDに、作成したプライベートチャンネルのIDを入力します。(パブリックチャンネルでも可)
プライベートチャンネルの場合、AWS Chatbotをチャンネルに招待する必要があるため、下のスラッシュコマンドを実行しておきます。

/invite @aws

f:id:swx-tani:20220223131230p:plain

アクセス許可欄のロール設定では、[チャネルIAMロール]、[テンプレートを使用してIAMロールを作成する]を選択し、ポリシーテンプレートに[通知のアクセス許可]を選択します。

f:id:swx-tani:20220223132757p:plain

Channel ガードレールには、特に権限を持たせる必要はないので[CloudWatchReadOnly]を指定します。

f:id:swx-tani:20220223134111p:plain

先ほど作成したSNSトピックを指定して[作成]をクリックします。 f:id:swx-tani:20220223131338p:plain

SNSトピックにサブスクリプションが追加されたことを確認してください。 f:id:swx-tani:20220223134339p:plain

CloudWatchアラームの設定

EC2の平均CPU使用率が0.2%より小さくなるとアラーム状態になるアラームを作成します。
アラーム状態のとき、作成したSNSトピックにメッセージを送信するアクションを設定します。
設定方法は割愛します。

検証

CPU使用率を0.2%にするため、EC2を停止します。
しばらくするとアラーム状態になりました。

f:id:swx-tani:20220223135111p:plain

Slackを見てみましょう。

f:id:swx-tani:20220223182253p:plain

時間、インスタンスID、CPU使用率などを含む通知が届きました。
成功です。

補足

AWS Chatbotのアクセス許可、ロール設定の部分を少し説明します。

  • チャネルIAMロール:Slackチャンネルに存在するメンバー全てに同じ権限を付与する事ができるロール

  • ユーザーロール:Slackチャンネルに存在するメンバーそれぞれに別々の権限を付与する事ができるロール

  • Channel ガードレール:上記2つより優先されるポリシー

チャネルIAMロールとユーザーロールの違いは、権限付与をIAMユーザーにするか、IAMグループにするかみたいな感じです。
チャンネルに参加しているユーザーごとに権限を分けたい場合は、ユーザーロールを使用します。

Channel ガードレールで許可されていないアクションは実行することができません。
Channel ガードレールで許可された権限とチャネルIAMロール(ユーザーロール)で許可された権限が被る範囲内でアクションを実行することができます。
SCPとIAMみたいなかんじ?(あくまでイメージです。)

まとめ

普段、Slackを使っている方は通知にすぐ気づけるのでおすすめです。
ぜひ使ってみてください。