この記事で書いたとおり、CloudFrontにLambda@EdgeでBasic認証をかけて、originのS3にファイルを追加したらSlackにURLを通知する仕組みを整えた。
repoをcloneしてきてCDKでdeployしたら同じ環境を作ることができる。
@aws-cdk/aws-lambda-nodejs
はこれまで使ったことなかったのだけど、parcelでバンドルとかうまくやってくれて、 .ts
ファイルをポン置きするだけでLambdaにデプロイしてくれて最高に便利。JSだと依存の管理がムズいしGoで書くのがいいかな〜となってGoでちまちま書くことが多かったけど、何も考えずにTypeScriptで書くでもよくなったことで手札が増えて嬉しい。
Basic認証は最初はCloudFront Functionsを使ってみようかと思っていたのだけど、結構制約が厳しそうなのでLambda@Edgeにした。Lambda@Edgeを明示的に使ったのは初めて(Next.jsをAmplifyでSSRしたときに暗黙的には使ってはいた)で、Lambda@Edgeも環境変数渡せなかったりとかいろいろ制約あるんだな〜ということを学んだ。CloudFront Functionsはこれ。
今回はISUCONで便利に使ったけど、結構汎用的に使えるはずなのでよければどうぞ。