Top View


Author Daiki Urata

Amazon SNS + AWS Chatbotを使ってコーディングなしでCodePipelineのデプロイステータスをSlackへ通知する

2019/11/11

CodePipeline Notification Ruleの設定

CodepiplineのDeveloper Tools画面を開き、

「Pipepeline」→ 「Pipelines」→「Settings」をクリックします。

CodePipeline Notification Rule Step1

次に「Create notification rule」をクリックします。

CodePipeline Notification Rule Step2

そしてNotification rule作成に必要な情報を入力していきます。

Detail typeについては今回はデプロイ状況だけわかればいいのでBasicにしました。

CodePipeline Notification Rule Step3

通知のトリガーについては、各Stage(Source, Build, Deploy)実行時にState(Started, Succeeded, Failed) の通知が来ればいいので下の画像のような設定にしました。

CodePipeline Notification Rule Step4

次に通知を送るターゲットにAmazon SNSのTopicを指定しないといけません。

まだ作成していないので「Create SNS topic」をクリックします。

CodePipeline Notification Rule Step5

Topic名を入力し、「Submit」をクリックします。

CodePipeline Notification Rule Step6

無事に作成できたら、「Submit」をクリックしてNotification ruleの作成を完了します。

CodePipeline Notification Rule Step7

作成が成功し、下のような画面が出たらNotification ruleの設定については終わりです。

CodePipeline Notification Rule Step8

AWS Chatbotの設定

ここまででCodePipelineからAmazon SNSへの通知する流れができました。

次にAmazon SNSからメッセージを引き継ぎAWS Chatbot経由でSlackへ通知するまでの流れを設定します。

まず、AWS Chatbotの画面で「Configured clients」→「fusic(Slackのワークスペース)」を開き、「Configure channel」をクリックします。

AWS Chatbot Step1

次に通知したいSlackチャネルを選択します。

AWS Chatbot Step2

IAMの設定では今回は、「Create an IAM role using a template」と「Notification permissions」を選びRoleを作成しました。

AWS Chatbot Step3

最後にCodePipelineのNorification rule作成時に同じく作成したSNS topicを選択、「Configure」をクリックして設定完了です。

AWS Chatbot Step4

通知結果

設定完了後、CodePipelineが動くと各Stage実行時に通知されデプロイ状況がSlackでわかります。

現在Fusic Tech Blogの開発環境でお試し運用中です。

Fusic Tech Blog Notification

まとめ

ご覧の通りCodePipelineのNotification ruleとAWS Chatbotの設定だけで、Lambda関数などのコードやCloudWatch Events Ruleを一切書かずにポチポチだけでSlackへ通知することができました。

ただ、表示や別処理などをカスタマイズしたい場合はやはりLambdaが必要になってくると思います。

料金についてもChatbotの利用自体は無料なのでありがたいです。

(Chatbotに使うAmazon SNSなどにはお金がかかってきます。)

参考

Daiki Urata

Daiki Urata

Twitter X

フロントエンド/モバイルアプリなどを主に開発しています。