AWS Amplify ( gen2 )のビルド通知をSlackで受け取る方法(ノーコード編)
この記事は、AWS Amplify( gen2 )でのビルド通知について紹介します。Slackでビルド開始や完了・失敗などの通知を簡単に受け取る方法を知りたい方は、ぜひ参考にしてください。
目次
この記事は、「AWS AmplifyとAWS×フロントエンド #AWSAmplifyJP Advent Calendar 2024」1日目です。ここではAWS Amplify( gen2 )でのビルド通知について紹介します。Slackでビルド開始や完了・失敗などの通知を簡単に受け取る方法を知りたい方は、ぜひ参考にしてください。
やりたかったこと
個人開発しているWebアプリケーションをAWS Amplify ( gen2 )へデプロイしています。最近個人開発系の通知をすべてSlackへまとめているところでしたので、Amplifyへのデプロイに関する通知もSlackへ集約してみました。
AWS Amplify ( gen2 )では、メール通知のみサポートされている
記事作成( 2024/11 )時点では、ユーザーガイドを見る限りメール以外の通知方法はサポートされていません。そのため、Amplifyからメールで届く通知をSlackへ送る必要があります。後で出てきますが、メールの内容自体はAmazon SNSを利用して送信されている様子でした。そのため、もしある程度内容のカスタマイズなどを目指されたい方は、メールをS3に保存してからLambdaで処理するなどのフローを組むことになるかと思います。
Amplifyのビルド通知をSlackへ送る方法
ここからは、今回設定した方法を紹介します。
Step1: Slackでforwarding email addressを生成する
まず、Slack側でメールをSlackで通知する設定を行います。アプリのユーザーアイコンから、[Preferences]を選びましょう。

[Messages & media]を選びます。

画面をスクロールすると、[Bring emails into Slack]セクションが出てきます。ここで[Get a Forwarding Address]をクリックしましょう。これで[email protected]
のようなメールアドレスが生成されます。

Step2: AWS Amplifyでビルド通知を設定する
メールアドレスを取得後、AWS Amplifyの管理画面へ移動します。[ホスティング > ビルドの通知]から、ビルドの通知するメールアドレスが設定できます。[通知を管理]ボタンをクリックしましょう。

先ほど取得したメールアドレスをここに設定します。ブランチが複数ある場合は、それぞれ設定し、保存しましょう。

Slackに下のスクリーンショットのような[AWS Notifications]からのメールが届くはずです。このメールの本文を開き、[Confirm subscription]をクリックしましょう。

リンクをクリックして、[Subscription confirmed]が表示されたら、設定完了です。これでAWS Amplifyのビルドに関する通知がSlackへ届くようになります。

SNSのメールが転送されるだけな点には要注意
今回紹介した手順で、コードを書かずにSlackにてAWS Amplifyのビルドに関する通知を受け取ることができます。ただしSNSを利用したメールを転送しているだけな点には注意が必要です。具体的には、Slackを見てすぐにビルドが成功したか失敗したかなどを判断することができない点に注意しましょう。下のスクリーンショットのように、メール本文を開くまで通知の詳細について知ることができません。また、ビルドが開始したことなど、実行結果以外の通知も飛んでくることにも注意が必要です。イメージとしては、CloudFormationの通知に近い感じでしょうか。

この辺りの内容までカスタマイズされたい場合は、先述のようなメール内容をLambdaで処理するフローを組むか、Amplifyの外でビルドを行う方法などを検討する必要があるかと思います。個人的には、SNSを内部的に使っているのであれば、自前のSNSやEventBrdigeにも通知を出せるようになるとありがたいなぁとは思います。この辺りに流せれば、AWS Chatbot経由でSlackへ送ることもできますので。