AWS Chatbotで簡単にSlack通知!!&通知例いろいろ

はじめに

2019/7/24 に AWS Chatbot という新サービスがPublic Betaとして利用可能になりました。
Amazon ChimeまたはSlackに簡単に通知を送ることが可能になります。

Introducing AWS Chatbot (beta): ChatOps for AWS in Amazon Chime and Slack Chat Rooms
https://aws.amazon.com/jp/about-aws/whats-new/2019/07/introducing-aws-chatbot-chatops-for-aws/

これまでのように通知用のLambda関数を個別に作る必要はありません。
逆に言うと現時点では通知しかできません。
@aws ec2 i-xxxxxxxx start とかリソースの操作もやりたかった。。
そのあたりは今後に期待です。

現時点で以下のサービスの通知に対応しています。

  • Amazon CloudWatch
  • AWS Health
  • AWS Budgets
  • AWS Security Hub
  • Amazon GuardDuty
  • AWS CloudFormation

Slackでそれぞれのサービスでの通知例を確認しましたのでご紹介します。
通知例で表示されている :aws: がカスタム絵文字に変換されてしまってますが、ご容赦ください

AWS Chatbotの設定

AWS Chatbotのコンソールで新規にクライアントの設定を行います。
ここではSlackを選択します。
image.png

Slackアプリのインストール確認画面が立ち上がります。
内容を確認して対象のワークスペースにインストールします。
image.png

次に通知先のチャンネルの設定を進めていきます。
パブリックチャンネルの場合はリストから通知先のチャンネル名を選択できます。
プライベートチャンネルの場合はチャンネルのIDを個別に指定する必要があります。
image.png

プライベートチャンネルの場合はさらにAWS Chatbotのbotユーザを
対象のチャンネルにinviteする必要があります。

/invite @aws

image.png

IAMの設定では既存のIAMロールを選択するか新規に作成します。
ここではAWSChatbotRoleを新規に作成しています。
image.png

最後に使用するSNS Topicを選択して設定を完了します。
ここでは別途SNSコンソールで新規に作成したものを指定しています。
(新規作成時のオプションは全てデフォルトのままです。)
image.png

AWS Chatbot 自体はグローバルサービスですが、対応する各サービスは
リージョナルサービスなので複数リージョンで通知が必要な場合は
基本的にはリージョンごとに設定します。

AWS Budgets

設定例

SNS Topicのアクセスポリシーに以下の内容を追記します。
TopicのARNは自分のものに書き換えます。

    {
      "Sid": "AWSBudgets-notification-1",
      "Effect": "Allow",
      "Principal": {
        "Service": "budgets.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:ap-northeast-1:0123456789012:AWSChatbotTopic"
    }

AWS Bugetsのアラームの設定で対象のSNS Topicを選択します。
image.png

通知例

設定したアラームの条件を満たすと通知されます。
Budget nameが使用量になっちゃってますが。。
image.png

AWS CloudFormation

設定例

対象のスタックの通知オプションにSNS Topicを指定します。
image.png

通知例

スタックをデプロイすると以下のような通知が投稿されました。
各ステータス毎に通知されるのがわかりやすくてよいです。
image.png

Amazon CloudWach

CloudWatchアラームがすでに作成されている前提とします。

設定例

対象のCloudWatch アラームの通知先にSNS Topicを指定します。
image.png

通知例

ちゃんとグラフも添付されています。
しきい値の注釈が挿入されているのでわかりやすいですね。
image.png
OK状態に戻ったときも通知できます。
image.png

Amazon GuardDuty

GaurdDutyはすでに有効化されている前提とします。

設定例

Amazon EventBridge(CloudWatch Events)から通知用のルールを作成します。
image.png
以下のようにイベントパターンを定義します。
image.png
ターゲットで対象のSNS Topicを選択してルールの作成を完了します。
image.png

通知例

試せてませんが、リスクレベル毎に色が変わりそうな感じです。
image.png

AWS Health

設定例

GuardDutyと同様にAmazon EventBridge(CloudWatch Events)から通知用のルールを作成します。
以下のようにパターンを定義し、通知先にSNS Topicを指定します。
image.png

注意点

検知&通知できるのはEBS ボリュームの消失イベント、
すべての予定された変更イベントなど自アカウントに関連するもののみです。
サービスの障害情報など AWS アカウントに固有でないものは対象外です。

通常、イベントパターンに設定するサービスがグローバルサービスである場合は、
エンドポイントが us-east-1 米国東部(バージニア北部)にのみ存在するため、
us-east-1 に設定します。
AWS Health もグローバルサービスなのですが、各リージョン毎にイベントが発生するため
今回の設定もリージョン毎に行う必要があります。

通知例

こちらで意図的にイベントを発生させることができないので、
確認でき次第追記したいと思います。

AWS Security Hub

設定例

Security Hub コンソールの設定からカスタムアクションを作成しておきます。
image.png

GuardDutyと同様にAmazon EventBridge(CloudWatch Events)から通知用のルールを作成します。
以下のようにパターンを定義し、通知先にSNS Topicを指定します。
image.png

通知例

Security HubのFindingsでSlackに通知したい項目を選択し、
作成したカスタムアクションを選択します。
image.png

すると、以下のように通知されます。
image.png

参考

AWS Chatbot Administrator Guide
https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html

以上です。
参考になれば幸いです。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away