Amazon API Gateway API 用にエッジ最適化カスタムドメイン名を作成しようとすると、「CNAMEAlreadyExists」というエラーが表示されます。これを解決するにはどうすればよいですか?
簡単な説明
「CNAMEAlreadyExists」エラーは、次の場合に発生します。
- カスタムドメイン名の CNAME レコードタイプがすでに存在していて、Amazon CloudFront ディストリビューションを指している。
- カスタムドメイン名と一致する代替ドメイン名または CNAME で構成された CloudFront ディストリビューションがある。
**注注意:**短期間で複数のカスタムドメイン名を更新すると、「Too Many Requests」エラーが表示されることは珍しくありません。これらのエラーは、 CreateDomainName API のクォータが低いために発生します (アカウントごとに 30 秒に 1 つのリクエスト)。詳細については、API の作成、デプロイ、管理に関する API Gateway クォータを参照してください。
重要: 複数の CloudFront ディストリビューションに対して同じ CNAME レコードを使用することはできません。同じ CNAME レコードを使用すると、次のエラーが返されます。
One or more of the CNAMEs you provided are already associated with a different resource. (Service: AmazonCloudFront; Status Code: 409; Error Code: CNAMEAlreadyExists; Request ID: a123456b-c78d-90e1-23f4-gh5i67890jkl*
これらのエラーを解決し、エッジ最適化カスタムドメイン名を作成するには、まず CloudFront ディストリビューションをポイントする既存の CNAME レコードを削除する必要があります。
解決方法
カスタムドメイン名が以前に存在していたかどうかを確認する
1.FSP カスタムドメイン名が以前に存在していたかどうかを確認するには、ドメイン名に対して DNS lookup コマンドを実行します。
Linux、Unix、または macOS システムの場合:
dig abc.example.com +all
Windows の場合:
nslookup abc.example.com
注意: abc.example.com をドメイン名に置き換えてください。
2.FSP カスタムドメイン名が以前に存在し、その DNS レコードがまだ存在する場合は、dig を使用して出力の CNAME レコードを取得します。
abc.example.comcom. 0 IN CNAME d27am47dhauq2.cloudfront.net.
重要:
カスタムドメイン名を作成する前に、このレコードを削除する必要があります。
- まず、開発環境またはテスト環境で DNS 設定を変更するのがベストプラクティスです。本番環境の DNS 設定を手動で変更すると、ダウンタイムが発生する可能性があります。
- CNAME レコードの代わりに A レコード (IPv4 アドレス) が出力に表示されている場合は、レコードを更新する必要があります。更新されたレコードは、カスタムドメイン名 (A エイリアス) が CloudFront ディストリビューションをポイントするようにする必要があります。
ドメイン名で dig または nslookup が実行され、レコードが A エイリアスである場合は、CloudFront ディストリビューションを確認します。CloudFront ディストリビューションが代替ドメイン名で構成されていないことを確認します。詳細については、エイリアスレコードと CNAME レコードの比較を参照してください。
CNAME レコードを削除するか、CloudFront ディストリビューションを更新します。
構成に応じて、次のいずれかまたは両方を実行します。
サードパーティの DNS サービスプロバイダーがある場合は、プロバイダーのプロセスに従って、CloudFront ディストリビューションを指す CNAME レコードを削除します。
Amazon Route 53 をご利用の場合は、CloudFront を指す Route 53 内のレコードを削除します。
構成を変更したら、DNS の変更が反映されるまで数分待ちます。次に、カスタムドメイン名の作成を再試行します。
注意:「CNAMEAlreadyExists」というエラーが表示された場合は、Amazon CloudFront ディストリビューションで CNAME エイリアスを設定する際に、CNAMEAlreadyExists エラーが表示された場合の解決方法を教えてくださいを参照してください。
関連情報
API Gateway API のカスタムドメイン名を設定するにはどうすればよいですか?
Amazon API Gateway と AWS Lambda を使用したマルチリージョンサーバーレスアプリケーションの構築