はじめに
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-subdomain | CNAME | xxxxx.cloudfront.net |
原因
digコマンドで確認したところ、CNAMEの値にドメイン名が二重に追加されていました。
さくらのDNSでは、CNAMEの値に末尾ドット(.)がない場合、自動的にゾーン名(ドメイン名)が補完される仕様 になっています。
解決方法
さくらのドメインコントロールパネルでCNAMEレコードを設定する際、値(データ)の末尾に必ずドット(.)を付ける 必要があります。
正しい設定例
| エントリ名 | タイプ | データ |
|---|---|---|
_abc123.your-subdomain | CNAME | _def456.xyz.acm-validations.aws. ← 末尾に. |
your-subdomain | CNAME | xxxxx.cloudfront.net. ← 末尾に. |
⚠️ 注意 : Amplifyの指示画面では2つ目のレコード(cloudfront.net)に末尾ドットが表示されていない場合がありますが、さくらのDNSでは両方とも末尾ドットが必要 です。
なぜ末尾ドットが必要なのか
これはDNSの仕様に関係しています。
- FQDN(完全修飾ドメイン名) は末尾にドット(.)を付けて表記します
- 例:
example.com.(末尾ドットあり)= 「これが完全なドメイン名です」
- 例:
- 末尾ドットがない場合、DNSサーバーによっては相対名 として解釈し、現在のゾーン名を自動追加します
DNSプロバイダーごとの挙動の違い
| DNSプロバイダー | 末尾ドットの扱い |
|---|---|
| さくらインターネット | 必須(ないとドメイン名が自動追加される) |
| Amazon Route 53 | 自動補完してくれる |
| お名前.com | 自動補完してくれることが多い |
Amplifyの設定画面はRoute 53での利用を前提に説明が書かれているため、さくらのDNSで設定する場合は注意が必要です。
設定後の確認方法
DNS設定後、以下のコマンドで正しく反映されているか確認できます。
ANSWER SECTIONに正しいCNAME先が表示されていればOKです。
💡 DNS反映には数分〜数時間かかる場合があります。設定直後に確認できなくても、しばらく待ってから再度確認してみてください。
さくらインターネット公式の説明
さくらのサポートページにも以下の記載があります:
ドメインコントロールパネルでは、NSレコードやMXレコード、CNAMEレコードなどのデータ欄にホスト名を入力するタイプについて末尾に「.(ドット)」が必要になります。末尾のドットを入れない場合、ゾーンの名称である独自ドメイン名が自動で補完され、結果として誤った値を指定する事になるので、レコード編集の際には十分ご注意ください。
参考: ドメインコントロールパネルについて知りたい | さくらのサポート情報
まとめ
- さくらのDNSでCNAMEを設定する際は、値の末尾に必ずドット(.)を付ける
- Amplifyの指示画面にドットがなくても、さくらでは必要
- 設定後は
digコマンドで正しく反映されているか確認する - うまくいかない場合は、一度レコードを削除してから再設定すると解決することがある
この仕様を知らないと何時間も無駄にしてしまうので、同じ組み合わせで設定する方はお気をつけください!