My Memo

← Back to posts

Migrate this blog from Vercel to CloudFront

· Astro, AWS, CloudFront

元々Next.jsで作ったブログもどきをVercel上で動かしていたけど、これを静的なサイトにしてVercelから移行することにした。

候補として考えたのは:

あたり。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レコードを消したらうまくいった。