📘

知らないうちにCloudWatchアラームから直でLambda呼べるようになってた

に公開

きっかけ

Lambdaを構築する際にエラー吐いたらSlack通知したいというよくあるユースケースをやっていた。
LambdaからCloudWatch Logs、CloudWatchアラーム、SNS、通知用Lambda、SlackのWebhookというよくあるアーキテクチャで構成しようと思ってコンソールから作ってるときにたまたまCloudWatchアラームの向き先にLambdaがあるのが目についた。
調べてみたところ、本当にSNS噛ませなくてもいいっぽいことが分かった(自分がAWS SAA取ったのが2023年だったのでギリ知らなかった)。

考えたこと

とはいえSNSあったほうが責務が分かれて疎結合になるし、結果として将来的にファンアウトするとかってなったときにやりやすそうだと思った。
Lambda自体呼ばれる回数が少なく、エラーの頻度も高くないためSNSの料金もそこまでかからなさそうだった。
Geminiに相談してみたが大体同じようなことを言ってた。
ちなみにLambdaのテンプレにSlack通知用のPythonはあったが、他のコードはTypeScriptで書いてある、テンプレをもとに作るとはいえ少しいじらないといけないのでGit管理したい、Git管理するなら他のコードと言語統一しておきたい、ということでClaudeCodeにTSで書かせた。こういうよくあるコードであれば爆速でほぼ間違いなく書ける。

できたもの

結局当初予定していた通りのものを作った。
ただ、もっと簡単なシステムだったらSNSなしという選択肢もあるんだなという学びにはなった。
さらに言えばAWSアカウント内でLambda1つしか運用していなくて、なおかつそのLambdaも簡易的なものだったらLambda内でWebhook呼ぶのでもよさそう。

Discussion