はじめに
前回はCodeCommit
の準備まで行いました。
今回はCI/CD
の実行結果通知の準備としてAmazon SNS
、AWS Chatbot
の設定を行い、Slack
へ通知する設定を行ってみようと思います。
- 【前】AnsibleをAWS Systems Managerから実行するCI/CDを構築する。(その2:CodeCommitの準備)
- 【次】AnsibleをAWS Systems Managerから実行するCI/CDを構築する。(その4:CodeBuildからのAnsible実行)
今回の構成
今回はChatbot
を使った一般的なSlack
への通知の構成を作ってみようと思います。
Slackへの通知手順
Chatbot
を使ってSlack
へ通知するための設定手順は以下となります。
尚、今回はSlack
のプライベートチャンネルに通知してみようと思います。
- Slackのチャンネル作成
- SNSトピックの作成
- Chatbot_クライアントの設定
- Chatbot_Slackチャネルの設定
- SlackでAWSアプリの招待(プライベートチャンネルの場合のみ)
- Slackへの通知確認
Slackのチャンネル作成
Chatbot
からの通知を受け付けるためのSlack
チャンネルを作成します。
Slack
画面より、「チャンネル」の右にある「+」→「チャンネルを作成する」を選択します。
今回はプライベートチャンネルで通知を受けたいので、「プライベートチャンネルにする」にチェックを入れ、適当な名前(今回は「ssm_ansible」)をつけて、「作成」を選択します。
メンバーは特に追加しなくて良いのでそのまま「後でする」を選択。
Slack
のチャンネル一覧に作成したチャンネルが表示されていれば完了です。
SNSトピックの作成
Chatbot
へメッセージを通知するためのSNSトピックを作成します。
「Amazon SNS」→「トピック」から「トピックの作成」で以下のように設定を行います。
本来はこの後、設定したトピックを購読するためのサブスクリプション設定が必要となりますが、次のChatbot
の設定を行うことで自動的にサブスクリプション設定が追加されるため、サブスクリプション設定は行いません。
Chatbot_クライアントの設定
先程Slack
側で作成したチャンネルが所属するワークスペースに対してChatbot
からアクセスできるようにするため、クライアントの設定を行います。
「AWS Chatbot」→「設定済みクライアント」から「新しいクライアントを設定」を選択。
「Slack」にチェックを入れ「設定」を選択。
Slack
側の認証画面に遷移するため、「許可する」を選択。
Slack
の 「App」に「aws」が追加されれば完了です。
また、次手順でプライベートチャンネルの「チャンネルID」が必要となるため、Slack
画面より、先程作成したチャンネル名を右クリック→「チャンネル詳細を表示する」を選択し、以下赤枠部分のIDを控えておきます。
Chatbot_Slackチャネルの設定
続いて先程作成したSlack
のチャンネルに対してアクセスできるように設定を行います。
「AWS Chatbot」→「Slack」を選択すると、前手順で設定したSlack
ワークスペース名が表示されているはずなので、ワークスペース名の画面から「新しいチャネルを設定」を選択。
設定画面が表示されるため、今回は以下のように設定を行いました。
SlackでAWSアプリの招待(プライベートチャンネルの場合のみ)
プライベートチャンネルでChatbot
の通知を受ける場合はSlack
側で、先程追加された「aws」のアプリの招待が必要となるため、メッセージ欄に以下コマンドを入力して実行します。
尚、パブリックチャンネルで通知を受ける場合はコマンド実行は不要です。
/invite @aws
Slackへの通知確認
再度Chatbot
のワークスペースの画面に戻り、先程設定したチャンネルを選択した後、「テストメッセージを送信」を選択します。
Slack
画面に以下のようなテストメッセージが送信されれば完了です。
おわりに
今回構築した仕組みは、通知元サービスを変えることで様々な通知をSlack
に送信することが可能となるため、広く使える仕組みとなります。
今回最終的に構築しようとしているCI/CD
の通知のためだけではなく、その他のサービス通知でもぜひともこの仕組みを使ってもらえればと思います。
次回は今回構築した通知の仕組みも使ってCodeBuild
からのRunCommand
実行を試してみようと思います。