API Gateway API 用のエッジ最適化カスタムドメイン名を作成したときに発生する、"CNameAlreadyExists" エラーを解決する方法を教えてください。

所要時間1分
0

Amazon API ゲートウェイ API 用のエッジ最適化カスタムドメイン名を作成しようとすると、"CNameAlreadyExists" というエラーが表示されます。

簡単な説明

"CNAMEAlreadyExists" というエラーは次の場合に発生します。

  • カスタムドメイン名の CNAME レコードタイプは既に存在し、Amazon CloudFront ディストリビューションを指している。
  • カスタムドメイン名と一致する代替ドメイン名または CNAME で構成された CloudFront ディストリビューションがある。

注: 短期間に複数のカスタムドメイン名を更新すると、"Too Many Requests" というエラーが表示されることは一般的なものです。これらのエラーは、CreateDomainName API のクォータが低い (アカウントあたり 30 秒ごとに 1 つのリクエスト) 場合に発生します。詳細については、「API の作成、デプロイ、管理に関する API Gateway クォータ」を参照してください。

重要: 同じ CNAME レコードを複数の CloudFront ディストリビューションに使用することはできません。同じ CNAME レコードを使用すると、次のエラーが返されます。 "指定した 1 つ以上の CNAME は、すでに別のリソースに関連付けられています。(サービス: AmazonCloudFront; ステータスコード: 409; エラーコード: CNAMEAlreadyExists; リクエスト ID: a123456b-c78d-90e1-23f4-gh5i67890jkl"

これらのエラーを解決してエッジ最適化カスタムドメイン名を作成するには、まず CloudFront ディストリビューションを指す既存の CNAME レコードを削除する必要があります。

解決策

カスタムドメイン名が以前に存在していたかどうかを確認する

1.カスタムドメイン名が以前に存在していたかどうかを確認するには、そのドメイン名に対し DNS lookup コマンドを実行します。

Linux、Unix、または macOS システム:

dig abc.example.com +all

Windows:

nslookup abc.example.com

注: abc.example.com は、該当するドメイン名に置き換えます。

2.カスタムドメイン名が以前に存在し、その 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 を使用してマルチリージョンのサーバーレスアプリケーションをビルドする

コメントはありません

関連するコンテンツ