Migrate this blog from Vercel to CloudFront
元々Next.jsで作ったブログもどきをVercel上で動かしていたけど、これを静的なサイトにしてVercelから移行することにした。
候補として考えたのは:
- GitHub Pages
- AWSのCloudFront
あたり。Netlifyみたいなのも有力だと思ったけど、ひとまず大体の仕組みをわかっているものにしようということで。
GitHub Pagesの方がシンプルなんだけど、レポジトリをPublicにしないといけないのがちょっと嫌で、CloudFrontを使うことにした。どうせ公開しているブログなんだから別にPublic Repoでもいいとは思うんだけど。
Coding Agents
この程度の移行なら、特に工夫しなくてもClaude Codeがよしなにやってくれた。まだPro Planなので制限に引っ掛かるかな、とも思ったけどそうでもなかった。
ただ、後述のCloudFormationスタックのデプロイでコケている部分は解決できなかったので、介入する必要があった。
ACMの発行に失敗する
元々このドメインの証明書はVercel側がよしなに作ってくれていたが、これを移行するにあたってAWS側で証明書を発行する必要がある。 ドメイン自体はRoute53で管理しているので、証明書の発行自体はどうということはないんだけど、CloudFormationで証明書を発行しようとするとうまくいかなかった。
CloudFormation上は証明書の発行に失敗した、くらいしか出てこないので困ったが、手で証明書発行をリクエストしたところ以下のようなエラーが出ていたことがわかった。
One or more domain names have failed validation due to a Certification Authority Authorization (CAA) error
これを調べるとAWSの Documentation に辿り着くが、ここに書いてある手順では解決しなかった。 いまだに正確には理解できてないけど、Stack Overflowの この回答 を見てVercelに向けていたCNAMEレコードを消したらうまくいった。