はじめに

AWS Amplifyでホスティングしているアプリに、さくらインターネットで管理しているドメインのサブドメインを設定しようとしたところ、「ドメインの所有権を検証中…」のまま進まない問題に遭遇しました。

原因はさくらのDNS特有の仕様 でした。同じ問題でハマっている方の参考になれば幸いです。

環境

  • AWS Amplify Hosting
  • さくらインターネット ドメインコントロールパネル
  • ネームサーバー: ns1.dns.ne.jp / ns2.dns.ne.jp

症状

Amplifyのカスタムドメイン設定画面で指示されたCNAMEレコードを設定したが、いつまで経っても「ドメインの所有権を検証中…」から進まない。

Amplifyからの指示内容

Amplifyからは以下のようなDNSレコード設定を求められます:

1. SSL証明書検証用

ホスト名タイプ
_abc123.your-subdomain.example.com.CNAME_def456.xyz.acm-validations.aws.

2. サブドメイン転送用

ホスト名タイプ
your-subdomainCNAMExxxxx.cloudfront.net

原因

digコマンドで確認したところ、CNAMEの値にドメイン名が二重に追加されていました。

$digyour-subdomain.example.comCNAME
#y#yoouurr--ssuubbddoommaaiinn..eexxaammppllee..ccoomm..IINNCCNNAAMMEExxxxxxxxxx..cclloouuddffrroonntt..nneett..example.com.

さくらのDNSでは、CNAMEの値に末尾ドット(.)がない場合、自動的にゾーン名(ドメイン名)が補完される仕様 になっています。

解決方法

さくらのドメインコントロールパネルでCNAMEレコードを設定する際、値(データ)の末尾に必ずドット(.)を付ける 必要があります。

正しい設定例

エントリ名タイプデータ
_abc123.your-subdomainCNAME_def456.xyz.acm-validations.aws.末尾に.
your-subdomainCNAMExxxxx.cloudfront.net.末尾に.

⚠️ 注意 : Amplifyの指示画面では2つ目のレコード(cloudfront.net)に末尾ドットが表示されていない場合がありますが、さくらのDNSでは両方とも末尾ドットが必要 です。

なぜ末尾ドットが必要なのか

これはDNSの仕様に関係しています。

  • FQDN(完全修飾ドメイン名) は末尾にドット(.)を付けて表記します
    • 例: example.com.(末尾ドットあり)= 「これが完全なドメイン名です」
  • 末尾ドットがない場合、DNSサーバーによっては相対名 として解釈し、現在のゾーン名を自動追加します

DNSプロバイダーごとの挙動の違い

DNSプロバイダー末尾ドットの扱い
さくらインターネット必須(ないとドメイン名が自動追加される)
Amazon Route 53自動補完してくれる
お名前.com自動補完してくれることが多い

Amplifyの設定画面はRoute 53での利用を前提に説明が書かれているため、さくらのDNSで設定する場合は注意が必要です。

設定後の確認方法

DNS設定後、以下のコマンドで正しく反映されているか確認できます。

#$#$SddSiiLgg_yaobucr1-2s3u.bydooumra-isnu.bedxoammapilne..ecxoammpClNeA.McEomCNAME

ANSWER SECTIONに正しいCNAME先が表示されていればOKです。

;y;ouArN-SsWuEbRdoSmEaCiTnI.OeNx:ample.com.3600INCNAMExxxxx.cloudfront.net.

💡 DNS反映には数分〜数時間かかる場合があります。設定直後に確認できなくても、しばらく待ってから再度確認してみてください。

さくらインターネット公式の説明

さくらのサポートページにも以下の記載があります:

ドメインコントロールパネルでは、NSレコードやMXレコード、CNAMEレコードなどのデータ欄にホスト名を入力するタイプについて末尾に「.(ドット)」が必要になります。末尾のドットを入れない場合、ゾーンの名称である独自ドメイン名が自動で補完され、結果として誤った値を指定する事になるので、レコード編集の際には十分ご注意ください。

参考: ドメインコントロールパネルについて知りたい | さくらのサポート情報

まとめ

  • さくらのDNSでCNAMEを設定する際は、値の末尾に必ずドット(.)を付ける
  • Amplifyの指示画面にドットがなくても、さくらでは必要
  • 設定後はdigコマンドで正しく反映されているか確認する
  • うまくいかない場合は、一度レコードを削除してから再設定すると解決することがある

この仕様を知らないと何時間も無駄にしてしまうので、同じ組み合わせで設定する方はお気をつけください!

参考リンク