AWS Chatbot で CloudFormation のスタックイベントをSlackに通知してみた
CloudFormationにSNSトピックを設定すると、スタックイベントがSNSトピックに発行されます。 これ自体は既存の仕組みですが、SNSトピックのサブスクライブとして、先日GAしたAWS Chatbotが使えます。
本記事では、AWS Chatbotを使ってCloudFormationのスタックイベントをSlackに通知してみました。
発行先のSNSトピックを作成する
できました
ARNはあとで使うのでメモしておきます。
AWS Chatbotを作成する
新しいチャンネルを設定
AWS Chatbotの作成と通知先チャンネルを設定します。チャンネルと設定は1対1になるので、設定名をチャンネル名にしています。(1つのチャンネルに対して、AWS Chatbotの設定を2つ以上作れない)
IAMロールの作成も同時に行います。
さきほど作成したSNSトピックを選択します。
できました
CloudFormationでデプロイしてみる
YAMLファイルを作成する
DynamoDBテーブルを1つ定義したYAMLファイルをdatastore.yml
として作成します。
AWSTemplateFormatVersion: "2010-09-09" Description: Data Store Stack Resources: FooTable: Type: AWS::DynamoDB::Table Properties: TableName: foo-table BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: id KeyType: HASH
デプロイする
次のコマンドでデプロイします。--notification-arns
でスタックイベント通知先のSNSトピックを指定しています。
aws cloudformation deploy \ --template-file datastore.yml \ --stack-name DataStoreStack \ --notification-arns arn:aws:sns:ap-northeast-1:1234567890:cloudformation-use-sns-topic
Slackに通知がきた!
無事に次の通知がきました。
このとき、CloudFormationのイベントは下記でした。
S3バケットを追加する
datastore.yml
にS3バケットを追加します。
AWSTemplateFormatVersion: "2010-09-09" Description: Data Store Stack Resources: FooTable: Type: AWS::DynamoDB::Table Properties: TableName: foo-table BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: id KeyType: HASH BarBucket: Type: AWS::S3::Bucket Properties: BucketName: !Sub bar-${AWS::AccountId}-${AWS::Region}-bucket
デプロイする
先ほどと同じコマンドでデプロイします。
aws cloudformation deploy \ --template-file datastore.yml \ --stack-name DataStoreStack \ --notification-arns arn:aws:sns:ap-northeast-1:1234567890:cloudformation-use-sns-topic
Slackに通知がきた!
無事に次の通知がきました。
このとき、CloudFormationのイベントは下記でした。
さいごに
CloudFormationのスタックイベントについて、簡単にSlack通知できました。役立つ機会がある……かはそれぞれだと思いますが、Lambda連携しないで済むのは嬉しいですね。 (とはいえ、情報のフィルタリングや整理をする場合はLambdaが必要ですね)