Amplify Consoleには通知メールを設定する機能があります。ビルドジョブの開始、終了のタイミングで登録したメールアドレスにメールを送信してくれます。ただ、通知はありがたいんですがメールだけなのが辛い。最近だと開発ではチャットを使っていて Amplify Console からの通知もチャットに流したくなりました。
試してみたらできたのでその紹介です。
TL;DR
Amplify Consoleの通知メールはSNSを使っているので、そのSNSのトピックをSubscribeすればLambdaの起動もできて、そこからチャットにメッセージを送信できたりします。
Slack, Idobataへ通知するLambdaは Serverless Application Repositoryに公開 しています。
Lambdaを起動するまでの流れ
- Amplify Consoleの通知メールで一旦、メールアドレスを設定する。
- アドレスを設定するとSNSのトピックが作成される。
- 上記のトピックを購読するLambdaを作成する。
- Amplify Consoleでビルドを実行する
- トピックを購読しているLambdaが起動する。
Amplify Consoleの通知メールを設定する
最初に、Amplify Consoleで通知メールを設定します。下の画像のようにメールアドレスとブランチを指定します。
1つ目の通知先メールアドレスが登録されると、通知に使われるSNSトピックが作成されます。AWSコンソール上でもトピックが作成されているのが確認できます。
通知メールを確認する
通知メールを設定すると、登録したメールアドレスに次のようなメールが届きます。
ここにSNSトピックのARNが書かれています。このSNSトピックを購読すればLambdaも起動できます。
なお、Confirm subscription
のリンクはクリックしてもしなくてもいいです。
Lambdaを作成する
メールに書かれていたSNSトピックのをトリガーにしてLambdaを作成します。
SNSイベントのメッセージをチャット(Slack, Idobata)に送信するLambdaを作成しました。
作成済みのものは Serverless Application Repositoryに公開 しているので試すならそちらが簡単です。
ソースコードはGitHubに置いてあるので興味のある方はcloneするなりしてセットアップしてください(ソースコードからの細かなセットアップ方法はREADME.mdをみてください)。
https://github.com/fossamagna/amplify-console-notification
Lambdaを作成したら最初に設定したメールアドレスは削除してしまって構いません。
動作確認
Amplify Consoleで対象のリポジトリをビルドしてみてください。ビルドジョブの開始と終了(成功/失敗)のタイミングでチャットに通知されるようになります。
まとめ
- Amplify Consoleからの通知メールはSNSだ。
- SNSトピックを購読すればLambdaも起動できる。
- amplify-console-notification を使うとSlack, Idobataに簡単に通知できる。