🍮

Amplify Hostingのビルド結果をAWS ChatbotでSlackに通知

2021/08/06に公開

やりたかったこと

  • Amplify Consoleのビルド結果をSlackに通知したい!
  • ググるとLambdaを使う方法が出てくるが、今どきのAWS→Slackの通知にはChatbotを使いたい!

構成

  • Amplify → EventBridge → SNS → Chatbot → Slack
  • 構成要素は、既知の方式と比べてLambdaがChatbotに変わるだけです。
以前、書いていたアラート

作り方

Amplifyコンソールでメール通知を設定します

  • なぜメール?と思われるかと思いますが、Amplifyコンソールでメール通知を設定することで、
    Amplify → EventBridge → SNS → メールの仕組みを自動で構築してくれます。

  • これにより、全体の半分くらいを作ってくれるので楽になります。

  • もちろん自力でEventBridgeとSNSを作っても構築できますが、面倒なので今回はAmplifyのメール通知に作らせます。

  • メールの通知先は適当でいいですが、一応実在する自分のアドレスにしておくのがよいと思います。

これで、EventBridgeとSNSが作られます

ChatbotでSlackへの通知を設定する

Chatbotのページに行ったら、クライアントにSlackを選んで「クライアントを設定」

画面に従って、Chatbotを設定

  • 設定名
    • 好きな名前で
  • Slackチャネル
    • 通知したいChannel
  • アクセス許可
    • 通常のアクセス許可でOK
  • SNS トピック
    • 先程のAmplifyのメール通知の設定により、amplify-xxxxxx_xxxというトピックが作られているはずなので選択

この時点で、Amplify → EventBridge → SNS → Chatbot → Slackの全てのリソースが揃いますが、残念ながらSlackに通知はまだ飛びません

EventBridgeで通知のフォーマットを編集してchatbotに対応させる

  • EventBridgeに行くと、Amplifyが作ったルールがあるので、これを編集します。

  • ターゲットを選択->ターゲット->入力の設定で入力トランスフォーマーを編集

  • テキストボックスにamplifyが勝手に設定したものが入っているので、下記のように書き換えます。

    • 入力パス
    {
      "account": "$.account",
      "appId": "$.detail.appId",
      "branch": "$.detail.branchName",
      "detail-type": "$.detail-type",
      "id": "$.id",
      "jobId": "$.detail.jobId",
      "region": "$.region",
      "resources": "$.resources",
      "source": "$.source",
      "status": "$.detail.jobStatus",
      "time": "$.time",
      "version": "$.version"
    }
    
    • テンプレート
    {
        "version": "1.0",
        "source": "custom",
        "content": {
          "textType": "client-markdown",
          "title": "<status>",
          "description": "<detail-type>",
          "nextSteps": [
    	"view build details : https://console.aws.amazon.com/amplify/home?region=<region>#<appId>/<branch>/<jobId>",
    	"view app url : https://<branch>.<appId>.amplifyapp.com/"
          ]
        },
        "metadata": {         
          "threadId": "<appId>-<branch>-<jobId>"
        }
    }
    

AmplifyコンソールでビルドするとSlackに通知が飛びます

なお、最初に設定したメールへの通知は邪魔なので消してOKです。

Amplifyの通知のChatbot対応要望はissueになっていた

(2022-03-04追記)
今更気づきました。この件の対応要望、Amplifyのissueになってました。
100件以上のリアクションがついていて、かなり多くの人が希望しているようです。
AWSさん、正式対応頼む。
https://github.com/aws-amplify/amplify-console/issues/271

Discussion