CloudFrontのCNAMEは重複不可

問題

新旧の個人用サイトを並行で動かそうとしたところ、CloudFrontの作成でエラー発生(CNAMEAlreadyExists)。

module.personal_website_frontend.aws_cloudfront_distribution.front_cdn: Creating...
╷
│ Error: error creating CloudFront Distribution: CNAMEAlreadyExists: One or more of the CNAMEs you provided are already associated with a different resource.
│       status code: 409, request id: d5f61e56-8789-4443-bd73-5928d7f0f2de
│
│   with module.personal_website_frontend.aws_cloudfront_distribution.front_cdn,
│   on ..\modules\personal-website-frontend\main.tf line 45, in resource "aws_cloudfront_distribution" "front_cdn":
│   45: resource "aws_cloudfront_distribution" "front_cdn" {
│
╵

CloudFrontは同じCNAMEを使ったDistributionを作成するのはダメな仕様らしい。

しかしそれではダウンタイムなしに切り替えができない。

解決

この辺ClassMethodさんにダウンタイムなしでの実行方法があった。

ただ、かなり複雑な作業なので、客先の本番環境で動いているサービスにこれを実行するのはかなりの慎重さがいりそう。

意外な弱点があるもの。