カスタムドメインのトラブルシューティング
Amplify コンソールのアプリケーションにカスタムドメインを接続する際に問題が発生した場合は、このセクションのトピックを参考にしてください。
ここで問題の解決策が見つからない場合は、サポート にお問い合わせください。詳細については、「AWS サポート ユーザーガイド」の「サポートケースの作成」を参照してください。
トピック
CNAME が解決されることを確認する必要がある
-
サードパーティのドメインプロバイダーで DNS レコードを更新したら、dig
などのツールや https://www.whatsmydns.net/ などの無料ウェブサイトを使用して、CNAME レコードが正しく解決されているかどうかを確認できます。次のスクリーンショットは、whatsmydns.net を使用して www.example.com というドメインの CNAME レコードを確認する方法を示しています。
-
[検索] を選択すると、whatsmydns.net に CNAME の検索結果が表示されます。次のスクリーンショットは、CNAME が cloudfront.net URL に正しく解決されることを確認する結果のリストの例です。
サードパーティーでホストされているドメインが [Pending Verification] (検証待ち) 状態のままになっている
-
カスタムドメインが「検証待ち」の状態のままになっている場合は、CNAME レコードが解決中であることを確認してください。このタスクの実行方法については、前述のトラブルシューティングのトピック「CNAME 解決を確認する方法」を参照してください。
-
CNAME レコードが解決されない場合は、ドメインプロバイダーの DNS 設定に CNAME エントリが存在することを確認してください。
重要
カスタムドメインを作成したらすぐに CNAME レコードを更新することが重要です。アプリが Amplify コンソールで作成されると、CNAME レコードが数分ごとにチェックされ、解決したかどうかを判別します。1 時間経っても解決しない場合は、数時間ごとにチェックが行われるため、ドメインを使用する準備ができるまでに時間がかかる可能性があります。アプリを作成してから数時間後に CNAME レコードを追加または更新した場合、これがアプリが「検証保留中」の状態で停止する最も可能性の高い原因です。
-
CNAME レコードが存在することが確認できた場合は、DNS プロバイダーに問題がある可能性があります。DNS 検証 CNAME が解決しない理由を診断するには、DNS プロバイダーに連絡するか、DNS を Route 53 に移行することができます。詳細については、「Amazon Route 53 を既存ドメインの DNS サービスにする」を参照してください。
Amazon Route 53 でホストされているドメインが [Pending Verification] (検証待ち) 状態のままになっている
ドメインを Amazon Route 53 に移行した場合、ドメインのネームサーバーが、アプリの作成時に Amplify によって発行されたものとは異なる可能性があります。エラーの原因を診断するには、次の手順を実行します。
-
Amazon Route 53 コンソール
にサインインします -
ナビゲーションペインで、[ホストゾーン] をクリックし、検証する必要のあるドメインの名前を選択します。
-
「ホストゾーンの詳細」セクションのネームサーバーの値を記録します。次のステップを完了するには、これらの値が必要です。次の Route 53 コンソールのスクリーンショットでは、右下隅にネームサーバー値の場所が表示されています。
-
ナビゲーションペインで [Registered Domains] をクリックします。[登録済みドメイン] セクションに表示されるネームサーバーが、前のステップで [ホストゾーンの詳細] セクションに記録したネームサーバーの値と一致することを確認します。一致しない場合は、ネームサーバーの値をホストゾーンの値と一致するように編集します。次の Route 53 コンソールのスクリーンショットでは、右側にネームサーバー値の場所が表示されています。
-
これでも問題が解決しない場合は、サポート にお問い合わせください。詳細については、「AWS サポート ユーザーガイド」の「サポートケースの作成」を参照してください。
マルチレベルサブドメインを持つアプリが [Pending Verification] (検証待ち) 状態でスタックしている
サードパーティーの DNS プロバイダーに接続するときに、マルチレベルサブドメインを持つアプリが [Pending Verification] (検証待ち) 状態でスタックしている場合、DNS レコードの形式に問題がある可能性があります。一部の DNS プロバイダーは、セカンドレベルドメイン (SLD) とトップレベルドメイン (TLD) のドメインのサフィックスをレコードに自動的に追加します。SLD と TLD を含む形式でもドメインを指定すると、ドメイン検証の問題が発生する可能性があります。
ドメインを接続するときは、まず Amplify が提供する完全な形式、たとえば _hash.docs.backend.example.com を使用してドメイン名を指定してみてください。SSL 設定が [Pending Verification] (検証待ち) 状態でスタックする場合は、レコードから TLD と SLD を削除してみてください。たとえば、完全な形式が _hash.docs.backend.example.com の場合、_hash.docs.backend を指定します。レコードが伝播されるまで 15~30 分待ちます。次に、MX Toolbox などのツールを使用して、検証プロセスが機能しているかどうかを確認します。
DNS プロバイダーが完全修飾ドメイン名の A レコードをサポートしていない
一部の DNS プロバイダーは、example.cloudfront.net などの完全修飾ドメイン名 (FQDN) の A レコードをサポートしていません。たとえば、Cloudflare A records は IPv4 アドレスのみを書き込み、FQDNs をサポートしていません。この制限を回避するには、DNS 設定で A records ではなく CNAME レコードを使用することをお勧めします。
たとえば、次の DNS 設定では A record が使用されています。
A | @ | ***.cloudfront.net CNAME | www | ***.cloudfront.net
CNAME レコードのみを使用するように、次の DNS 設定を変更します。
CNAME | @ | ***.cloudfront.net CNAME | www | ***.cloudfront.net
この回避策により、Cloudflare のシステムで A records の IPv4-onlyの制限を回避しながら、apex ドメイン (@ レコード) を CloudFront などのサービスに適切にポイントできます。
「CNAMEAlreadyExistsException」エラーが発生した
CNAMEAlreadyExistsException エラーが発生した場合、接続しようとしたホスト名のいずれか (サブドメイン、または apex ドメインなど) が別の Amazon CloudFront ディストリビューションに既にデプロイされていることを意味します。エラーの原因は、現在のホスティングプロバイダーと DNS プロバイダーによって異なります。
example.com や sub.example.com などの CNAME エイリアスは、一度に 1 つの CloudFront ディストリビューションにのみ関連付けることができます。CNAMEAlreadyExistsException は、ドメインが同じ AWS アカウント 内、または別のアカウントにある可能性がある別の CloudFront ディストリビューションに既に関連付けられていることを示します。Amplify ホスティングによって作成された新しいディストリビューションを機能させるには、ドメインと以前の CloudFront ディストリビューションとの関連付けを解除する必要があります。ユーザーまたは組織が複数の AWS アカウント を所有している場合は、複数のアカウントをチェックする必要が生じることがあります。
CNAMEAlreadyExistsException エラーの原因を診断するには、次の手順を実行します。
-
Amazon CloudFront コンソール
にサインインし、このドメインが他のディストリビューションにデプロイされていないことを確認します。CloudFront ディストリビューションには、一度に 1 つの CNAME レコードのみをアタッチすることができます。 -
以前に CloudFront ディストリビューションにドメインをデプロイしていた場合は、削除する必要があります。
-
左のナビゲーションペインで、[ディストリビューション]を選択します。
-
編集するディストリビューションの名前を選択します。
-
[General] (全般) タブを選択します。設定 セクションで、編集 を選択します。
-
代替ドメイン名 (CNAME) からドメイン名を削除します。次に、[変更を保存する]を選択します。
-
-
現在の AWS アカウント または他の AWS アカウント でこのドメインを使用している他の CloudFront ディストリビューションが存在しないことを確認します。現在実行中のサービスを中断しない場合は、ホストゾーンを削除して再作成してみてください。
-
このドメインが、所有する別の Amplify アプリに接続されているかどうか確認します。接続されている場合は、ホスト名のいずれかを再利用していないことを確認します。別のアプリに
www.example.comを使用している場合、現在接続しているアプリでwww.example.comを使用することはできません。blog.example.comなどの他のサブドメインを使用できます。 -
このドメインが別のアプリに正常に接続され、過去 1 時間以内に削除された場合は、1 時間以上経過してからもう一度試してください。6 時間が経過してもこの例外が発生する場合は、サポート にお問い合わせください。詳細については、「AWS サポート ユーザーガイド」の「サポートケースの作成」を参照してください。
-
Route 53 を介してドメインを管理する場合は、古い CloudFront ディストリビューションを指すホストゾーン CNAME または ALIAS レコードを必ずクリーンアップしてください。
-
前のステップを完了したら、Amplify ホスティングからカスタムドメインを削除し、ワークフローから始めて、Amplify コンソールでカスタムドメインを接続します。
「追加の検証が必要です」というエラーが表示されます。
「追加の検証が必要です」というエラーが表示される場合は、AWS Certificate Manager (ACM) がこの証明書リクエストを処理するために追加の情報を必要としていることを意味します。この状況は不正保護対策として生じることがあります。たとえば、ドメインが「Alexa の上位 1,000 のウェブサイト
注記
末尾が amazonaws.com、cloudfront.net、または elasticbeanstalk.com などの Amazon が所有するドメイン名に証明書をリクエストすることはできません。
CloudFront URL に 404 エラーが出る
トラフィックを処理するために、Amplify ホスティングは CNAME レコードを介して CloudFront URL を指します。アプリをカスタムドメインに接続する過程で、Amplify コンソールにはアプリの CloudFront URL が表示されます。ただし、この CloudFront URL を使用してアプリケーションに直接アクセスすることはできません。404 エラーが返される。アプリケーションは、Amplify アプリの URL (例: https://main.d5udybEXAMPLE.amplifyapp.com) またはカスタムドメイン (例: www.example.com) を使用してのみ解決されます。
Amplify は、デプロイされた正しいブランチにリクエストをルーティングする必要があり、ホスト名を使用してこれを行います。たとえば、アプリのメインラインブランチを指すドメイン www.example.com を設定できるだけでなく、同じアプリの dev ブランチを指すドメイン dev.example.com も設定できます。そのため、Amplify がそれに応じてリクエストをルーティングできるように、設定されているサブドメインに基づいてアプリケーションにアクセスする必要があります。
自分のドメインにアクセスしたときに SSL 証明書または HTTPS エラーが発生する。
サードパーティ DNS プロバイダーで Certificate Authority Authorization (CAA) の DNS レコードを設定している場合、AWS Certificate Manager (ACM) はカスタムドメインの SSL 証明書の中間証明書を更新または再発行できない可能性があります。これを解決するには、Amazon の認証局ドメインの少なくとも 1 つを信頼する CAA レコードを追加する必要があります。次の手順では、実行する必要のあるステップについて説明します。
Amazon 認証局を信頼する CAA レコードを追加するには
-
Amazon の認証局ドメインの少なくとも 1 つを信頼するように、ドメインプロバイダーに CAA レコードを設定します。CAA レコードの設定について詳しくは、「AWS Certificate Manager ユーザーガイド」の「Certificate Authority Authorization (CAA) の問題」を参照してください。
-
SSL 証明書を更新するには、次のいずれかの方法を使用します。
-
Amplify コンソールを使用して手動で更新します。
注記
この方法では、カスタムドメインのダウンタイムが発生します。
-
AWS マネジメントコンソール にサインインし、Amplify コンソール
を開きます。 -
CAA レコードを追加するアプリを選択します。
-
ナビゲーションペインで、[アプリ設定]、[ドメイン管理] の順に選択します。
-
「ドメイン管理」ページで、カスタムドメインを削除します。
-
アプリをカスタムドメインに再接続します。このプロセスにより新しい SSL 証明書が発行され、その中間証明書を ACM で管理できるようになりました。
アプリをカスタムドメインに再接続するには、使用しているドメインプロバイダーに対応する以下のいずれかの手順を使用してください。
-
-
SSL 証明書の再発行を サポート に依頼してください。
-
ドメインリダイレクトでサポートされていないパスコンポーネント
ドメインリダイレクトはホスト名部分のみに一致します。ドメインベースのソースルール ("https://domain.com/path" など) のパスコンポーネントはサポートされていないため、ルールはエラーなしで無視されます。詳細については、「サンプルリファレンスをリダイレクトして書き換える」を参照してください。