LoginSignup
110
85

More than 1 year has passed since last update.

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

Last updated at Posted at 2020-04-23

はじめに

AWS Chatbot がついに一般利用開始となりました。(2020/4/23)
SlackまたはAmazon Chime各種AWSサービスに関する通知を簡単に送ることが可能になります。
通知以外にもIAM、STS、KMSを除いたほとんどのサービスでAWS CLIの読み取り専用コマンドを
AWS Chatbotを通じて実行できます(作成、変更、削除系のコマンドは実行できません)。
またLambda関数のinvokeやサポートケースの作成にも対応しています。

通知に関してはこれまでのように専用のLambda関数を個別に作る必要はありません。
以下のサービスの通知に対応しています。

  • AWS Billing and Cost Management
  • AWS CloudFormation
  • Amazon CloudWatch Alarms
  • AWS Developer Tools
    • AWS CodeBuild
    • AWS CodeCommit
    • AWS CodeDeploy
    • AWS CodePipeline
  • Amazon EventBridge
    • EventBridge で発生するすべてのサービスイベント (2021/4/20 Update)

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

2021/4/21 追記

以前は Amazon EventBridge 経由での通知がサポートされていたサービスは、AWS Config、Amazon GuardDuty、AWS Health、AWS Security Hub、および AWS Systems Manager のみでしたが、2021/4/20 の Update で EventBridge によって処理されるすべてのサービスイベントを AWS Chatbot で通知できるようになりました。

Amazon EventBridge での通知例は、当初よりサポートされていた AWS Config、Amazon GuardDuty、AWS Health、AWS Security Hub、および AWS Systems Manager について記載していますが、その他のサービスも設定方法は同じです。各サービスごとのイベントパターンを定義し、通知先に AWS Chatbot 用の SNS Topic を指定してください。

追記おわり

AWS Chatbotの設定

AWS Chatbotのコンソールで新規にクライアントの設定を行います。
ここではSlackを選択します。
image.png
Slackアプリのインストール確認画面が立ち上がります。
内容を確認して対象のワークスペースにインストールします。

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

/invite @aws

image.png
IAMの設定では既存のIAMロールを選択するか新規に作成します。
ここではAWSChatbot-Roleを新規に作成しています。
image.png
最後に使用するSNS Topicを選択して設定を完了します。
ここでは別途SNSコンソールで新規に作成したものを指定しています。
(新規作成時のオプションは全てデフォルトのままです。)
image.png
AWS Chatbot 自体はグローバルサービスですが、対応する各サービスは
リージョナルサービスなので複数リージョンで通知が必要な場合は
基本的にはリージョンごとに設定します。

AWS Billing and Cost Management

設定例

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 Alarms

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

設定例

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

通知例

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

AWS Developer Tools

設定例

各 Developer Tools サービスの通知メニューから通知ルールの作成ができます。
以下は CodePipeline の設定例です。

通知をトリガーするイベントで通知が必要なイベントを選択します。
image.png
ターゲットタイプには AWSChatbot(Slack)を選択します。
image.png

通知例

通知の設定で選択したイベントに応じて通知されます。
image.png

Amazon GuardDuty

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

設定例

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

通知例

セキュリティグループに全世界からアクセス可能となっているポートがある場合の通知例です。
試せてませんが、リスクレベル毎に色が変わりそうな感じです。
image.png

AWS Config

設定例

GuardDutyと同様にAmazon EventBridge(CloudWatch Events)から通知用のルールを作成します。
例えばConfig Rulesで非準拠となったリソースを検知したい場合は
以下のようにパターンを定義し、通知先にSNS Topicを指定します。
image.png

通知例

Config Rules で指定したタグがついていないEC2インスタンスが検知されました。
image.png

AWS Health

設定例

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

注意点

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

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

通知例

Amazon Detective のマスターアカウントから招待が届いた時の通知例です。
image.png

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 Systems Manager

設定例

Run Commandやオートメーション、ステートマネージャーなど Systems Manager で対応している
各機能で発生したイベントについて通知を行うことができます。
以下はパラメーターストアの更新イベントについて通信する例です。
GuardDutyと同様にAmazon EventBridge(CloudWatch Events)から通知用のルールを作成します。
以下のようにパターンを定義し、通知先にSNS Topicを指定します。
image.png

通知例

パラメータストア値のアップデートにより通知されました。
image.png

AWSCLI コマンドの実行

読み取り専用のコマンドであれば、通常の AWSCLI コマンドの構文通りに実行できます。
image.png

AWS re:Invent 2021 の期間中に参照系以外のコマンドも実行可能となるアップデートが発表されました。

参照系以外のコマンド実行は 2021/12/6 時点で Preview 扱いのため、ご注意ください。

AWSサポートケースの作成

@aws support create-case

AWS Chatbotのプロンプトに従って、サポートケースに必要なパラメーターを記入することで
サポートケースを作成することができます。

参考

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

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

110
85
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
110
85