$30 off During Our Annual Pro Sale. View Details »

Amplify Console のビルド通知をSlackで受け取るためにやったこと

Amplify Console のビルド通知をSlackで受け取るためにやったこと

2020/07/31 Amplify Meetup#01の登壇内容

youta ogino

July 31, 2020
Tweet

More Decks by youta ogino

Other Decks in Programming

Transcript

  1. Amplify Console のビルド通知を
    Slackで受け取るためにやったこ

    2020/07/31 Amplify Meetup#01

    View Slide

  2. 自己紹介
    ● 荻野 陽太
    ● バックエンドエンジニア
    ● 株式会社justInCaseTechnologies(副業)
    ● twitter/github @youta1119

    View Slide

  3. 会社紹介的なやつ
    書きたいこと募集
    SRE/バックエンド
    絶賛募集中!!!

    View Slide

  4. これ、全部Amplify Consoleです

    View Slide

  5. justInCaseにおけるAmplify Console導入状況
    ● ほぼ全てのプロダクトで導入済み
    ● dev環境だけで10以上のアプリがある
    ● 基本的にアプリはcfnかcdkで管理している

    View Slide

  6. ビルド完了したらSlackに通知を飛ばしたい!
    ある日ビルド完了したらSlackにビルド結果の通知が欲しいという要望が...
    → 現状のAmplifyにはそういう機能なかった...
     amplify.ymlのpostBuild内で通知を送る手もあるがこれだと、ビルドの前に失
    敗すると通知送れない...

    View Slide

  7. ビルド完了したらSlackに通知を飛ばしたい!
    参考: https://qiita.com/fossamagna/items/70e4e399de59984ad3bb
    1.メール通知を設定 2.SNS Topicが出来る 3. Lambdaで購読

    View Slide

  8. ビルド完了したらSlackに通知を飛ばしたい!

    View Slide

  9. View Slide

  10. View Slide

  11. Slackに通知を飛ばせるようになった!
    ソースコードはこちら
    https://gist.github.com/youta1119/fc6a6d3b769b2fc54d33db67ba4c4ed5

    View Slide

  12. これでSlackに通知を送れるようになったが...
    ● CloudFormationではメール通知の設定ができない
    ● 手作業でメール通知の設定をしないといけない
    ● SNSのARNは送られてくるメールを見ないとわからないので自動化できな
    い...
    既に10個以上アプリがあるので手動で設定するのはつらい
    →なんとか自動化したい...

    View Slide

  13. 他に何かよい方法がないものか
    ● Amplify ConsoleのIssueに気になるコメントを発見
    ● https://github.com/aws-amplify/amplify-console/issues/13#issueco
    mment-603459099
    .

    View Slide

  14. 他に何かよい方法がないものか
    意訳:
    ● Amplifyが作成するEventBridgeのイベントパターンを変更して、すべてのブランチ(過去、現
    在、未来)についてメールに通知できるよ。
    ● EventBridgeのWebコンソールに移動して「 amplify-xxxx-xxxx-branch-notification」の形式を
    見つけて、ルールのイベントパターンを編集してね
    EventBridge…AWS環境で発生するイベントを、 AWSサービスやSaaSのサービスと紐付けることがで
    きるサービス

    View Slide

  15. View Slide

  16. 他に何かよい方法がないものか
    AmplifyConsoleが自動で作成するEventBridgeのRuleと同じRuleを自分で作
    ればビルドイベントが受け取れるのでは?
    →やってみた

    View Slide

  17. ビルドイベントを受け取るRuleを作ってみる
    ここにビルドイベントを受け取る
    用のイベントパターンを記述

    View Slide

  18. ビルドイベントを受け取るRuleを作ってみる
    ビルドイベントを受け取りたいアプリのappIdを指定
    1. ビルドイベントを受け取りたいアプリのappIdを指定
    2. ビルドイベントを受け取りたいブランチを指定(何も指定しな
    い場合全てのブランチのビルドイベントを受け取れる)
    補足)Amplify AppのAppIdは
    aws amplify list-appsを実行すれば分かる

    View Slide

  19. ビルドイベントを受け取るRuleを作ってみる
    適当なSNSのトピックを指定
    SNSに転送するイベントの整形
    amplifyが自動で作るinput transformerの設定
    をコピペしたものそ設定

    View Slide

  20. Rule作成時の注意点
    ● DefaultのEventBusに作らないといけない

    View Slide

  21. ビルドイベントを受け取るRuleを作ってみる

    View Slide

  22. Slackに通知の設定を自動化できた!

    View Slide

  23. まとめ
    Amplify Console のビルド通知をSlackで受け取りたい場合...
    1. EventBridgeでAmplifyのビルドイベントを受け取ってSNSに転送するルー
    ルを作る
    2. LambdaでSNSを購読してSlackに通知を送る

    View Slide

  24. 最後に
    ● AWSさん、Amplify ConsoleからSlack通知を送れる機能を作ってください

    View Slide