[CFn]AWS Chatbotを利用してSlackに通知を行う
今回はSlackに通知を設定
こんにちわ!
DevelopersIO BASECAMP参加者の加藤です!
今回はチャットツール(Slack)にAWSリソースから通知を行う設定に挑戦します。
前置き
以下の通り、AWS Chatbot自体に追加料金はかかりません。
AWS Chatbot に追加料金はかかりません。基盤となるサービス (Amazon Simple Notification Service、Amazon CloudWatch、Amazon GuardDuty、AWS Security Hub など) を利用した分についてのみお支払いいただきます (AWS Chatbot を使用していない場合と同様)。また、最低料金や前払いの義務はありません。
Slack側での事前準備
事前にSlackにワークスペースを作成しました。
↓
ここをクリックします。
↓
ここがワークスペースURLになります。メモします。
↓
アドレスバーのURL中からWorkSpaceIdとChannelIdを控えます。
↓
準備完了です。
Chatbotコンソールでの作業
AWSのマネジメントコンソールに移動します。
↓
コンソール上部の検索窓からAWS Chatbotを検索
↓
「新しいクライアントを設定」をクリック
↓
「ワークスペースにサインインする」画面に先ほどのURLを入力し「続行する」をクリック。
↓
ブラウザに権限リクエスト画面が表示されるので「許可」をクリック。
↓
無事承認されました。
CloudFormationの実行
※開始前にSNSトピックとそこに紐づくリソースをご自身でご用意し、ARNを控えていただきます。
(FIFOはサポートしていないようです。)
↓
以下のテンプレートをローカルでYAMLファイルとして保存してください。
サンプルテンプレート
AWSTemplateFormatVersion: 2010-09-09
Description: Sample template.
Parameters:
SlackWorkspaceId:
Type: String
SlackChannelId:
Type: String
YourSnsTopicArn:
Type: String
Resources:
# ------------------------------------------------------------#
# Chatbot
# ------------------------------------------------------------#
# for Slack
ChatbotforSlack:
Type: AWS::Chatbot::SlackChannelConfiguration
Properties:
ConfigurationName: ChatbotforSlack
IamRoleArn: !GetAtt ChatbotIamRole.Arn
LoggingLevel: INFO
SlackChannelId: !Ref SlackChannelId
SlackWorkspaceId: !Ref SlackWorkspaceId
SnsTopicArns:
- !Ref YourSnsTopicArn
# ------------------------------------------------------------#
# IAM
# ------------------------------------------------------------#
# ロール
ChatbotIamRole:
Type: AWS::IAM::Role
Properties:
RoleName: chatbot-test-role
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service: chatbot.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: test-chatbot-iam-policy
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- cloudwatch:Describe*
- cloudwatch:Get*
- cloudwatch:List*
Resource:
- "*"
↓
CloudFormationコンソールに移動。
↓
「スタックの作成」から「新しいリソースを使用(標準)」をクリック。
↓
「テンプレートファイルのアップロード」→「ファイルを選択」から保存したYamlファイルを選択し、「次へ」をクリック。
↓
スタックの名前と、各パラメーターを入力します。
※パラメーターの入力値は先ほど控えていただいた各IDと、事前準備いただいたSNSTopicリソースのArnを確認ください。
↓
次へ次へと進んでいただき、
最後のチェックを入れて「送信」をクリックします。
暫く待つと..
↓
リソース作成が完了しました。
確認
Chatbotコンソールに移動します
↓
無事チャネルが作成されています。
↓
チャネル名をクリックし、テストメッセージを送信してみます。
↓
「ディスパッチされました」と表示されました。
Slack画面を確認してみると..
↓
無事にテストメーセージが通知されています。
以上になります。
最後に
序盤の説明の画面にもありましたが、SlackだけでなくAmazon ChimeとMicrosoft Teams(2023年3/16日〜)への連携も可能になっています。
是非挑戦してみていただけたら幸いです。
Discussion