CodePipelineでデプロイ前に手動承認させてチャットワークに通知する(前編)

CodePipelineでデプロイ前に手動承認させてチャットワークに通知する(前編)

はじめに

みんな大好きCodePipelineで今回は手動承認を行ってみます。
本番環境などデプロイには慎重になりたい場合に承認手順があると本番運用も格段にしやすくなりますね。

大まかな流れは以下のような感じです。

GitHubコミット

CodePipelineにWebhook

SNSトピックに通知

SNSトピックを購読しているlambdaが起動

lambdaがチャットワーク通知

コンソールから手動で承認

デプロイ!

この承認通知にはSNSトピックを指定できるのでメール通知も出来ますが、例によってチャットワークに通知してみたいと思います。
チャットワーク、だ〜い好き♡

ところで、ちょっと前にCodePipelineのコンソールがマテリアルデザインっぽく変わりました。今後は色んなコンソールをこんな感じにしていくんでしょうね。

パイプラインの作成

承認ステージは一旦パイプラインを作成してから出ないと追加できないので、まずはパイプラインを作成していきます。

ソースはGitHub、本番用を想定してリポジトリのブランチはmasterです。

今回はビルドはスキップします。

デプロイステージではとりあえずElasticBeanstalkを選択しました。

パイプラインを作成します。

パイプラインを作成すると例によってすぐさま起動するのでまずければ無効化しておきます。

Lambda関数の作成

次にチャットワークに通知するlambda関数をserverlessフレームワークで作成します。
(serverlessが入ってない場合はnpm i -g serverlessでインストール)

$ serverless create --template aws-python3 --path approval-notification

cw-notification/直下にrequirements.txt、serverless.yml、handler.pyを配置します。
中身は以下のようにします。

serverless-python-requirementsに関することはクラスメソッドさんの記事を参考にいたしました。
https://dev.classmethod.jp/cloud/aws/managing-external-modules-with-serverless-framework-plugin/

以下コマンドでデプロイします。(slsはserverlessのエイリアスです)

$ sls deploy

しばらく待ちます…

デプロイ完了するとlambda関数一覧にapproval-test-dev-SnsToCwが増えていると思います。

ちなみにSNSからのイベントでhandlerの関数の最初の引数に入ってくる内容は以下になります。

以前のコンソールですとapprovalReviewLinkのリンクで直接承認ダイアログが表示されていたのですが、
今のデザイン版では開いてくれないみたいです…

結構長くなったので後編に続きます。

TAG

  • このエントリーをはてなブックマークに追加
kurashita
エンジニア kurashita kurashita

基本的にRuby on Railsで開発してます。最近はvue.jsも。好きな塔は円城です。