🍮
Amplify Hostingのビルド結果をAWS ChatbotでSlackに通知
やりたかったこと
- 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のメール通知の設定により、
この時点で、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さん、正式対応頼む。
Discussion