はじめに
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を選択します。
Slackアプリのインストール確認画面が立ち上がります。
内容を確認して対象のワークスペースにインストールします。
次に通知先のチャンネルの設定を進めていきます。
パブリックチャンネルの場合はリストから通知先のチャンネル名を選択できます。
プライベートチャンネルの場合はチャンネルのIDを個別に指定する必要があります。
プライベートチャンネルの場合はさらにAWS Chatbotのbotユーザを
対象のチャンネルにinviteする必要があります。
/invite @aws
IAMの設定では既存のIAMロールを選択するか新規に作成します。
ここではAWSChatbotRoleを新規に作成しています。
最後に使用するSNS Topicを選択して設定を完了します。
ここでは別途SNSコンソールで新規に作成したものを指定しています。
(新規作成時のオプションは全てデフォルトのままです。)
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を選択します。
通知例
設定したアラームの条件を満たすと通知されます。
Budget nameが使用量になっちゃってますが。。
AWS CloudFormation
設定例
対象のスタックの通知オプションにSNS Topicを指定します。
通知例
スタックをデプロイすると以下のような通知が投稿されました。
各ステータス毎に通知されるのがわかりやすくてよいです。
Amazon CloudWach
CloudWatchアラームがすでに作成されている前提とします。
設定例
対象のCloudWatch アラームの通知先にSNS Topicを指定します。
通知例
ちゃんとグラフも添付されています。
しきい値の注釈が挿入されているのでわかりやすいですね。
OK状態に戻ったときも通知できます。
Amazon GuardDuty
GaurdDutyはすでに有効化されている前提とします。
設定例
Amazon EventBridge(CloudWatch Events)から通知用のルールを作成します。
以下のようにイベントパターンを定義します。
ターゲットで対象のSNS Topicを選択してルールの作成を完了します。
通知例
AWS Health
設定例
GuardDutyと同様にAmazon EventBridge(CloudWatch Events)から通知用のルールを作成します。
以下のようにパターンを定義し、通知先にSNS Topicを指定します。
注意点
検知&通知できるのはEBS ボリュームの消失イベント、
すべての予定された変更イベントなど自アカウントに関連するもののみです。
サービスの障害情報など AWS アカウントに固有でないものは対象外です。
通常、イベントパターンに設定するサービスがグローバルサービスである場合は、
エンドポイントが us-east-1 米国東部(バージニア北部)にのみ存在するため、
us-east-1 に設定します。
AWS Health もグローバルサービスなのですが、各リージョン毎にイベントが発生するため
今回の設定もリージョン毎に行う必要があります。
通知例
こちらで意図的にイベントを発生させることができないので、
確認でき次第追記したいと思います。
AWS Security Hub
設定例
Security Hub コンソールの設定からカスタムアクションを作成しておきます。
GuardDutyと同様にAmazon EventBridge(CloudWatch Events)から通知用のルールを作成します。
以下のようにパターンを定義し、通知先にSNS Topicを指定します。
通知例
Security HubのFindingsでSlackに通知したい項目を選択し、
作成したカスタムアクションを選択します。
参考
AWS Chatbot Administrator Guide
https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html
以上です。
参考になれば幸いです。