コマンド1つでAmplify ConsoleからのSlack通知を設定する
はじめに
この記事は AWS Amplify Advent Calendar 2020 の20日目の記事です。
昨年、同じ時期に Amplify Consoleの通知をSlackに流す という記事を書きました。
その記事では、タイトルの通り Amplify Consoleのビルド結果をSlackに通知する方法を紹介しました。
この記事では、昨年紹介した方法より楽にSlack通知を実現する方法を紹介します。
昨年のやりかた
詳しくは昨年書いた Amplify Consoleの通知をSlackに流す を読んでいただければわかりますが、ざっくり説明すると、Amplify Consoleのメール通知で利用するSNSでLambdaを呼び出してSlackにメッセージを送信するという方法でした。
ただ、この時利用するSNSトピックの作成はAmplify Consoleでメール通知を一旦有効するという手作業が必要で、プロジェクトや環境が増えると毎度その手作業が必要になり、煩雑でした。
便利な方法が発見される
今年の9月に昨年の記事に次のようなコメントをいただきました。
どうも、自動化する方法があるらしい コメントにかかれたリンク先 を読むと、今まで手動でやっていたSNSTopicの作成にあたる部分(とそこにイベントを送信する部分)がどのような仕組みになっているのかが詳しく書かれていました。
Amplify ConsoleからSlack通知までの流れは、以下のようになっていて、今まで手動でやっていたメール通知設定がEventBridge(EventRule)
とSNSTopic
というAWSリソースで実現されているというものでした。
Amplify Console -> EventBridge -> SNSTopic -> Lambda -> Slack
amplify-category-console-notification の紹介
自動化のスライドを読んで、これならコード化できる と思い、俄然作ってみたくなりました。
昨年の記事でも、メール通知を一旦有効するという手作業以外の部分をコード化して Serverless Application Repositoryに公開 していました。これをベースにする方法も考えましたが、Amplify のappIdを調べたりするのは面倒かなという思いもあり、折角なのでamplify pluginにして簡単に追加できるようにしてみました。
今回作成したプラグインは npmレジストリにpublishしているので誰でもnpmでインストールして利用できます。
ソースコードもhttps://github.com/fossamagna/amplify-category-console-notification で公開しています。
このプラグイン使うには以下のようにnpmでインストールして、amplify plugin scan
を実行してください。
$ npm install -g amplify-category-console-notification
$ amplify plugin scan
プラグインをインストールしたら以下のコマンドを実行すると Slackにメッセージを送信するLambdaのリソース名(好きな名前をつけてください)とSlackのWebhook URLを聞かれます。
これらの質問に答えると、Slack通知に必要なAWSリソースがローカルに追加されます。
$ amplify console-notification add
Using service: AmplifyConsoleNotification, provided by: awscloudformation
? Input function name in order to send message to Slack. Sender
? Input Web hook URL of Slack. https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
Successfully added resource Sender locally
あとはamplify push
を実行すれば完了です。
以下のようなメッセージがSlackに通知されます
まとめ
- Amplify ConsoleのビルドのSlack通知を簡単に導入してみたいという方は是非使ってみてください。
- ソースコードは https://github.com/fossamagna/amplify-category-console-notification で公開しているので、IssueやPull Requestなど(スター も)お待ちしています。
あとがき
amplify pluginを作成する上で必要不可欠な、公式ドキュメントはプラグインのアーキテクチャや仕組みレベルを説明してくれています。しかし、実際にコードを書く上でamplifyがどういった機能を提供してくれていて、どのように実装すべきなのか(しないといけないのか)という情報はあまり見当たりませんでした。折角なので今回amplify pluginとして作成するために、調べたことやわかったことなどはどこかのタイミングで紹介したいなと思います。
謝辞
昨年の記事にコメントをくれて自動化の方法の存在に気づかせてくれた @hiroga さん、自動化の方法を紹介してくれた @youta1119 さん、ありがとうございます。
Author And Source
この問題について(コマンド1つでAmplify ConsoleからのSlack通知を設定する), 我々は、より多くの情報をここで見つけました https://qiita.com/fossamagna/items/240e653ba59e99cbaf30著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .