CloudFrontの CNAMEAlreadyExists
エラーは、 DNSのCNAMEレコードが既に別のCloudFrontディストリビューションを指している場合 に発生します。
エラー内容
Error: creating CloudFront Distribution: operation error CloudFront: CreateDistributionWithTags,
https response error StatusCode: 409, RequestID: ..., CNAMEAlreadyExists:
One or more aliases specified for the distribution includes an incorrectly configured DNS record
that points to another CloudFront distribution. You must update the DNS record to correct the problem.
エラーの原因
- DNSプロバイダ(例: Cloudflare)に登録されているCNAMEレコードが既に 別のCloudFrontディストリビューション に設定されている。
- 同じ CNAME(ドメイン名) を複数のCloudFrontディストリビューションで設定しようとした。
対応手順
1. 競合しているCloudFrontディストリビューションを特定する
AWS CLIを使用して競合を確認
aws cloudfront list-conflicting-aliases \
--distribution-id <対象のディストリビューションID> \
--alias <該当のCNAME>
-
<対象のディストリビューションID>
: エラーが発生しているCloudFrontのID。 -
<該当のCNAME>
: 設定しようとしているCNAME(例:example.com
)。
出力例:
{
"ConflictingAliasesList": {
"ConflictingAliases": [
{
"Alias": "***********.com",
"DistributionId": "E3XXXXXXXXXXXXXX"
}
]
}
}
-
DistributionId
: 競合しているCloudFrontディストリビューションIDが確認できます。
2. DNSレコードの設定を確認
DNSプロバイダでCNAMEを確認
- Cloudflare、Route53 などのDNSプロバイダにログインします。
- 競合しているCNAMEレコードが どのCloudFrontディストリビューション を指しているか確認します。
CNAMEを削除または修正
- 既存のCNAMEが別のCloudFrontディストリビューションを指している場合、該当のCNAMEレコードを削除します。
- 新しいCloudFrontディストリビューションを指すようにCNAMEレコードを更新します。
例: Cloudflareでの設定
タイプ | 名前 | コンテンツ | ステータス |
---|---|---|---|
CNAME | example.com |
dXXXXXX.cloudfront.net |
DNSのみ |
3. CloudFrontのCNAME設定を更新
新しいCloudFrontディストリビューションの aliases
に該当のCNAMEを追加し、エラーが解消されたことを確認します。
4. 再確認
CNAMEが新しいCloudFrontに正しく向いているか確認
CLIでDNSの確認:
nslookup example.com
期待する結果:
- 出力結果が新しいCloudFrontのドメイン名(例:
dXXXXXX.cloudfront.net
)を返す。
再発防止策
-
CNAMEの管理ルールを明確化:
- 各CloudFrontディストリビューションのCNAME設定を事前にドキュメント化。
-
TerraformやInfrastructure as Code (IaC) の使用:
- 既存リソースの状態管理をTerraformで行い、競合を防止。
-
DNSプロバイダとCloudFront設定の整合性確認:
- DNS設定を更新する際には、CloudFront側のCNAME設定も必ず確認。
まとめ
CNAMEAlreadyExists
エラーの解消手順:
- AWS CLIで 競合するCNAME を特定。
- DNSプロバイダで CNAMEレコードを修正。
- CloudFrontディストリビューションの aliases設定を更新。
- CNAMEが新しいCloudFrontを指していることを確認。
これにより、CNAMEの競合を解消し、正常にCloudFrontを設定できます。