CloudFront ディストリビューションを指すエイリアスレコードが解決されないのはなぜですか?

所要時間2分
0

Amazon Route 53 パブリックホストゾーンにある Amazon CloudFront ディストリビューションを指すエイリアスレコードを設定しました。しかし、インターネット上でレコードが解決されません。

簡単な説明

以下の理由により、CloudFront ディストリビューションを指すエイリアスレコードを解決できない場合があります。

  • CloudFront ディストリビューションに対応するエイリアスレコードが誤って設定されています。
  • CloudFront ディストリビューションが Route 53 コンソールの **[エイリアスレコード]**ドロップダウンメニューに表示されていません。
  • ドメインの権威を持つホストゾーンにエイリアスレコードが作成されていません。
  • ドメインのステータスが [非アクティブ][serverHold]、または [clientHold] です。
  • エイリアスレコードに関連するヘルスチェックが異常です。
  • レコードはグローバルに伝播されません。
  • ドメインの DNSSEC が有効になっていると、委任署名者 (DS) のレコードが間違っています。

解決方法

エイリアスレコードタイプを確認してください

エイリアスレコードの設定を誤ると、DNS レコードは解決できません。CloudFront のエイリアスレコードタイプをタイプ A ではなく CNAME として設定する必要があります。

Route 53 エイリアスレコードタイプを確認するには、次の手順を実行します。

1.    Route 53 コンソールを開きます。

2.    ナビゲーションペインで [ホストゾーン] を選択します。

3.    ドメインのホストゾーンを選択します。

4.    ドメインの Route 53 エイリアスレコードを選択します。

5.    [レコードセットの編集] で、[エイリアスレコード[[レコードタイプ][A] に設定されていることを確認します。レコードタイプが [A] に設定されていない場合は、レコードを更新します。

6.    [レコードセットを保存] を選択します。

CloudFront ディストリビューションが [エイリアスレコード] ドロップダウンメニューに表示されていない場合は、レコードを作成します

CloudFront ディストリビューションを指すエイリアスレコードを作成するには、ディストリビューションにレコードの名前と一致する代替ドメイン名を含める必要があります。例えば、レコードの名前が abc.example.com である場合、CloudFront ディストリビューションには abc.example.com が代替ドメイン名の 1 つとして含まれている必要があります。

1.    CloudFront コンソールにログインします。

2.    CloudFront ディストリビューションに移動します。

3.    [一般] > [設定] > [編集] を選択します。

4.    [設定] ページで、[代替ドメイン名 (CNAME)] に abc.example.com を追加します。

注: すでに存在する CNAME レコードを追加する場合は、次のエラーが表示されます。

「One or more of the CNAMEs you provided are already associated with a different resource」(指定された 1 つ以上の CNAME が、既に別のリソースに関連付けられています)

上記のエラーを解決するには、Route 53 のホストゾーンにレコードを追加します。次に、abc.example.com のエイリアスレコードを作成するために [CloudFront ディストリビューションへのエイリアス] を選択します。CloudFront ディストリビューションのドメイン名がドロップダウンメニューに表示されます。

レジストラで設定されているドメインネームサーバーを確認します

ドメインのためにホストゾーンを作成すると、Route 53 はホストゾーンに対して 4 つの名前サーバーを割り当てます。ホストゾーンは、ドメインのレジストラでネームサーバーが指定されている場合にのみ、ドメイン解決に使用されます。

レジストラが、エイリアスレコードを作成したホストゾーンに割り当てられているものと同じ 4 つの権限のあるネームサーバーを返すことを確認します。レジストラに設定されているネームサーバーを確認するには、次のコマンドを実行してドメインの whois 検索を実行します。

$ whois domain-name |grep 'Name Server'

ホストゾーンに割り当てられているネームサーバーを確認します。ネームサーバーが whois の検索結果と一致しない場合、ホストゾーンはドメイン解決に使用されません。ドメイン登録事業者のネームサーバーを更新する必要があります。

ドメインが Route 53 に登録されている場合は、「ドメインのネームサーバーとグルーレコードの追加または変更」を参照してください。ドメインがサードパーティに登録されている場合、ネームサーバーを更新する手順については、サードパーティのドキュメントを参照してください。

ネームサーバーが AWS レジストラで正しく設定されていない場合は、次の手順を実行してください。

1.    Route 53 コンソールを開きます。

2.    [登録済みドメイン] を選択します。

3.    ドメインを選択します。

4.    [ネームサーバーの追加/編集] を選択します。

5.    現在のネームサーバーを次のネームサーバーに置き換えます。次の例では、**xxx ** プレースホルダーをネームサーバーの正しい値に置き換えます。
ns-xxx.awsdns-xx.org
ns-xxx.awsdns-xx.com
ns-xxx.awsdns-xx.net
ns-xxx.awsdns-xx.co.uk.

6.    [保存] を選択します。

ドメインのステータスを確認する

ドメインのステータスが [非アクティブ][ServerHold]、または [ClientHold] の場合、ドメインは解決できません。whois lookup コマンドを実行すると、ドメインのステータスを確認できます。

$ whois domain-name |grep 'Domain Status'

エイリアスレコードに関連付けられているヘルスチェックを確認します

エイリアスレコードに関連付けられているヘルスチェックがある場合は、ヘルスチェックのステータスを確認してください。DNS ルックアップ中に返される値は、レコードのルーティングポリシーとヘルスチェックの構成に依存します。

レコードの伝播を確認する

通常、Route 53 は DNS レコードの更新を 60 秒以内に Route 53 の権威 DNS サーバーのグローバルネットワークに伝播します。ただし、DNS リゾルバーのキャッシュは Route 53 の範囲外です。そのため、Amazon Route 53 はリソースレコードセットを TTL 値に基づいてキャッシュします。

ローカルリゾルバーは、設定された TTL の期間中、以前のレコード値をキャッシュします。場合によっては、リゾルバーが権限のあるネームサーバーからの NXDOMAIN の結果をキャッシュするネガティブキャッシュが行われることがあります。ネガティブキャッシュを確認するには、ドメインのホストゾーンに割り当てられた名前サーバーに直接クエリを送信し、レスポンスを確認します。ネガティブキャッシュを確認するための例示的なコマンドは以下の通りです。

$ dig domain-name @ns-2041.awsdns-63.co.uk

DNSSEC がオンになったら、DS レコードを確認してください

DNSSEC がオンになっている場合、DS レコードは親ホストゾーンと子ホストゾーンの間に信頼チェーンを確立します。このレコードには、DNS ゾーンのゾーン署名キー (ZSK) の署名に使用されるパブリックキーの署名キー (KSK) と署名アルゴリズムの種類のダイジェストが含まれています。DS レコードを委譲先の親ゾーンに追加する必要があります。DS レコードは親ゾーンの権威データです。

たとえば、「example.com」の DS レコードは「example.com」ゾーン (子ゾーン) ではなく、「.com」ゾーン (親ゾーン) に保存されます。

DS レコードを作成するには、パブリック KSK と署名アルゴリズムの種類をドメイン登録事業者に伝えてください。ドメインレジストラは、パブリックキーとアルゴリズムの種類をトップレベルドメインのレジストリに転送します。

AWS公式
AWS公式更新しました 1年前