2020/07/31 Amplify Meetup#01の登壇内容
Amplify Console のビルド通知をSlackで受け取るためにやったこと2020/07/31 Amplify Meetup#01
View Slide
自己紹介● 荻野 陽太● バックエンドエンジニア● 株式会社justInCaseTechnologies(副業)● twitter/github @youta1119
会社紹介的なやつ書きたいこと募集SRE/バックエンド絶賛募集中!!!
これ、全部Amplify Consoleです
justInCaseにおけるAmplify Console導入状況● ほぼ全てのプロダクトで導入済み● dev環境だけで10以上のアプリがある● 基本的にアプリはcfnかcdkで管理している
ビルド完了したらSlackに通知を飛ばしたい!ある日ビルド完了したらSlackにビルド結果の通知が欲しいという要望が...→ 現状のAmplifyにはそういう機能なかった... amplify.ymlのpostBuild内で通知を送る手もあるがこれだと、ビルドの前に失敗すると通知送れない...
ビルド完了したらSlackに通知を飛ばしたい!参考: https://qiita.com/fossamagna/items/70e4e399de59984ad3bb1.メール通知を設定 2.SNS Topicが出来る 3. Lambdaで購読
ビルド完了したらSlackに通知を飛ばしたい!
Slackに通知を飛ばせるようになった!ソースコードはこちらhttps://gist.github.com/youta1119/fc6a6d3b769b2fc54d33db67ba4c4ed5
これでSlackに通知を送れるようになったが...● CloudFormationではメール通知の設定ができない● 手作業でメール通知の設定をしないといけない● SNSのARNは送られてくるメールを見ないとわからないので自動化できない...既に10個以上アプリがあるので手動で設定するのはつらい→なんとか自動化したい...
他に何かよい方法がないものか● Amplify ConsoleのIssueに気になるコメントを発見● https://github.com/aws-amplify/amplify-console/issues/13#issuecomment-603459099.
他に何かよい方法がないものか意訳:● Amplifyが作成するEventBridgeのイベントパターンを変更して、すべてのブランチ(過去、現在、未来)についてメールに通知できるよ。● EventBridgeのWebコンソールに移動して「 amplify-xxxx-xxxx-branch-notification」の形式を見つけて、ルールのイベントパターンを編集してねEventBridge…AWS環境で発生するイベントを、 AWSサービスやSaaSのサービスと紐付けることができるサービス
他に何かよい方法がないものかAmplifyConsoleが自動で作成するEventBridgeのRuleと同じRuleを自分で作ればビルドイベントが受け取れるのでは?→やってみた
ビルドイベントを受け取るRuleを作ってみるここにビルドイベントを受け取る用のイベントパターンを記述
ビルドイベントを受け取るRuleを作ってみるビルドイベントを受け取りたいアプリのappIdを指定1. ビルドイベントを受け取りたいアプリのappIdを指定2. ビルドイベントを受け取りたいブランチを指定(何も指定しない場合全てのブランチのビルドイベントを受け取れる)補足)Amplify AppのAppIdはaws amplify list-appsを実行すれば分かる
ビルドイベントを受け取るRuleを作ってみる適当なSNSのトピックを指定SNSに転送するイベントの整形amplifyが自動で作るinput transformerの設定をコピペしたものそ設定
Rule作成時の注意点● DefaultのEventBusに作らないといけない
ビルドイベントを受け取るRuleを作ってみる
Slackに通知の設定を自動化できた!
まとめAmplify Console のビルド通知をSlackで受け取りたい場合...1. EventBridgeでAmplifyのビルドイベントを受け取ってSNSに転送するルールを作る2. LambdaでSNSを購読してSlackに通知を送る
最後に● AWSさん、Amplify ConsoleからSlack通知を送れる機能を作ってください