🤖

[CFn]AWS Chatbotを利用してSlackに通知を行う

2023/04/06に公開

今回は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ファイルとして保存してください。

サンプルテンプレート
sampletemplate.yml
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