スキップしてコンテンツを表示

CloudFront代替ドメイン設定時の「CNAMEs already associated」エラー -Amplifyとの競合

0

現在、解決はできたのですが、詳細な原因が理解できていないため、原因の詳細に関して教えていただけると幸いです。 現状では、Amplify が内部的に CloudFront を使用し、同じドメインを Alternate Domain Names として管理していることが原因かと考えております。

実装したい(した)内容

元々 AWS Amplify でホスティングしていたWebアプリケーションを、S3 + CloudFront の構成に移行しようとしています。

発生した問題

CloudFront Distribution にて代替ドメイン名(example.com)を設定しようとしたところ、以下のエラーが発生: One or more of the CNAMEs you provided are already associated with a different resource.

調査内容

  • Route53 で同じドメインのCNAMEレコードを確認したが、該当するレコードは存在しない
  • CloudFront Distribution 一覧を確認したが、他のDistributionでも該当ドメインは使用されていない

解決方法

AWS Amplify アプリケーションを削除することで、CloudFrontにて代替ドメインを設定できるようになりました。

質問

  1. Amplify は内部的にどのような仕組みでカスタムドメインを管理しているのでしょうか?
  2. なぜ Route53 や CloudFront コンソールからは競合が見えなかったのでしょうか?
  3. 同様の問題を事前に回避する方法はありますか?

環境:

  • AWS Amplify でカスタムドメインを使用
  • 移行先:S3 + CloudFront + Route53
  • 証明書:ACM で管理
1回答
0
承認された回答

AWS Amplify と CloudFront の代替ドメイン名の競合について、詳細な原因と仕組みを説明します。

Amplify のカスタムドメイン管理の仕組み

AWS Amplify は内部的に CloudFront ディストリビューションを作成し、そのディストリビューションにカスタムドメインを代替ドメイン名(CNAME)として関連付けています。この CloudFront ディストリビューションは Amplify によって管理されており、通常の CloudFront コンソールからは直接表示されません。Amplify アプリケーションにカスタムドメインを設定すると、バックグラウンドでこの「内部 CloudFront ディストリビューション」が作成され、指定したドメインと関連付けられます。

競合が見えなかった理由

CloudFront コンソールや Route53 から競合が見えなかった理由は以下の通りです:

  1. Amplify が作成する CloudFront ディストリビューションは「内部リソース」として扱われ、通常の CloudFront コンソールには表示されません。

  2. Route53 では、DNS レコードが存在しなくても、CloudFront サービス内部では依然としてドメインと CloudFront ディストリビューションの関連付けが残っている可能性があります。

  3. CloudFront の代替ドメイン名(CNAME)は、AWS 全体で一意である必要があり、一度関連付けられると、その関連付けが完全に解除されるまで他のディストリビューションで使用できません。

同様の問題を回避する方法

  1. AWS CLI を使用して競合を確認する:
aws cloudfront list-conflicting-aliases --distribution-id <新しいディストリビューションID> --alias <カスタムドメイン>

これにより、どのアカウントのどのディストリビューションがそのドメインを使用しているかを確認できます。

  1. Amplify アプリケーションからカスタムドメインを削除した後、DNS の伝播に十分な時間(24〜48時間)を確保してから、新しい CloudFront ディストリビューションにドメインを追加してください。

  2. 移行計画を立てる際は、Amplify から CloudFront への移行には、一時的な中断期間を設けるか、サブドメインを使用して段階的に移行することを検討してください。

  3. 複数の AWS アカウントを使用している場合は、各アカウントでドメインの使用状況を確認してください。

この問題は、Amplify アプリケーションを削除することで解決したのは、内部的な CloudFront ディストリビューションとドメインの関連付けが完全に解除されたためです。ただし、DNS の伝播や AWS システム内部の更新には時間がかかることがあるため、削除後すぐに新しい設定を行うと問題が発生する可能性があります。
Sources
AWS Amplify re-domain mapping not allowed | AWS re:Post
"One or more of the CNAMEs you provided are already associated with a different resource." issue when I add my CNAME's to my cloudfront distribution. | AWS re:Post
CNAME problem deploying a custom domain in Amplify | AWS re:Post
Can't Activate AWS Amplify Custom Domain | AWS re:Post

回答済み 4ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ