Lambda@Edge から CloudFront Functions に移行するのをめんどくさがってたら 1 年以上放置してしまった話

概要

タイトルの通りなんだけど、優先度低いし後でいいや〜って思っているような事柄は本当に放置されがち。

このブログは記事執筆時点では S3 + CloundFront で配信されていて、 URL の index.html を良い感じに加工するために Lambda@Edge を使っていたのだけど、まさにそういう用途のために CloudFront Functions がリリースされたのが 2021 年の 5 月頃の話だったようで、割とリリース直後くらいから興味はあったというか、丁度良さそうだし後でやるか〜って思っていたんだけど別に困っていた訳でもないから尚更後回しになり、気付いたら 1 年半くらい経っててビビったという話。

詳細

ググれば似たようなことやってる人の情報は出てくるし、何よりも公式の実装例が GitHub の ここ にあるので、それを見ながらやればいい。

しかし JavaScript というか、サンプルコードからは型の情報が抜け落ちているというか「その event.request.uri は実体はなんなんだ?ただの文字列なのか?」ってのを調べるのが辛いのが本当にダメ。

手元の root 持ってるデバイス上で自由に動かしてデバッガを挟んだりダンプ取ったりなんだりして、実装や挙動の癖なんかを詳細に調べるといったことができないのが性に合わないというか、その辺の事情は Lambda@Edge だろうが CloudFront Functions だろうがクラウド系の関数実行マシーンは何というかイマイチというか、コンピュータの気持ちになれない部分があるんだけど、とは言え運用の手間暇を考えると一番隠蔽されていて嬉しいところはそこら辺ではあって、距離感が難しいというかそういう気持ちになる訳ですよ、伝わるかな、これ。

Node.js ではなくて ECMAScript 5.1 なので

const やら let やらが使えないみたいなのはあったけど、短かいコードなので僕は特に困りませんでした。

締め

Lambda@Edge で使っていた Node.js が 12 系で、 EOL になるぞって AWS からのアナウンスが無かったら一生やらなかったかもしれない。