Amazon Route 53でCNAMEレコードの登録時に、エラーが発生する場合

記事タイトルとURLをコピーする

こんにちは!イーゴリです。

「Amazon Route 53でCNAMEレコードを登録する時、エラーが発生する場合、どうすれば良いか」という記事をご紹介致します。

エラー内容

パターン 1

エラーが発生しました
不正なリクエストです。
(InvalidChangeBatch 400: RRSet of type CNAME with DNS name test.jp.domain-test.ga. is not permitted as it conflicts with other records with the same DNS name in zone jp.domain-test.ga.)

パターン 2

エラーが発生しました
不正なリクエストです。
(InvalidChangeBatch 400: RRSet of type CNAME with DNS name jp.domain-test.ga. is not permitted at apex in zone jp.domain-test.ga.)

CNAMEの理解

CNAMEレコードとは、既に定義されてるドメイン名の別名を定義することです。
一方、Aレコードは、ドメイン名とIPアドレスを1対1で紐付けます。※

※基本は上記の通りですが、Amazon Route 53の仕様上では、他のAWSリソースをAレコードのエイリアスとして設定可能です。それはAmazon Route 53の特徴です。

Aレコードの例 CNAMEレコードの例
www.example.com. A <対象サーバーIPアドレス> www.example.com. CNAME test.example.com.
www.example.comを叩くと<対象サーバーIPアドレス>に移動されます www.example.comを叩くとtest.example.comに移動されます

エラーが発生する理由(CNAMEの制約)

Amazon Route 53も他のDNSサービスもDNS標準の規定に従っているため、下記のルールに当てはまりますので、注意が必要です。

RFC 1912

2.4 CNAME records

A CNAME record is not allowed to coexist with any other data. In other words, if suzy.podunk.xx is an alias for sue.podunk.xx, you can't also have an MX record for suzy.podunk.edu, or an A record, or even a TXT record. Especially do not try to combine CNAMEs and NS records like this!:

      podunk.xx.      IN      NS      ns1
                       IN      NS      ns2
                       IN      CNAME   mary
       mary            IN      A       1.2.3.4

        省略

「エラー内容」項目に書いた「パターン 1」の場合、RFC 1912の通り、CNAMEレコードは同じ名前を持つ他のレコードと同居できないという制約がありますので、エラーが発生してしまいます。

「エラー内容」項目に書いた「パターン 2」の場合、「パターン 1」と似ているパターンです。Zone apexには少なくともNSレコードを設定する必要があるため、同じ名前のCNAMEの登録ができません。

CNAMEレコードは登録できない例

上記の理由から、下記のようなレコードは設定ができませんのでご注意ください。※ ※Amazon Route 53では、エラーが発生しますが、例えばDNSサーバーに設定されているソフト(bindなど)によっては正しくないパターンでもレコードの登録ができてしまう可能性がありますので、下記のようなパターンについてご注意ください。

Aレコードとの同居 ❌

www.example.com. A <対象サーバーIPアドレス>
www.example.com. CNAME test.example.com.

同じドメイン名で複数CNAME設定すること❌

www.example.com. CNAME test1.example.com.
www.example.com. CNAME test2.example.com.

NSレコードとの同居❌

www.example.com. CNAME test1.example.com.
www.example.com. NS ns1.example.com.

MXレコードとの同居❌

www.example.com. CNAME test1.example.com.
www.example.com. MX mail1.example.com.

TXTレコードとの同居❌

www.example.com. CNAME test1.example.com.
example.com. IN TXT "v=spf1 ip4:19X.XX.XX.XX ip4:19X.XX.XX.XX ip4:19X.XX.XX.XX -all"

解決方法

  • サブドメインの場合、Amazon Route 53でCNAMEの代わりにAWSリソースをAレコードのエイリアスとして登録できます。

aws.amazon.com

Amazon Route 53 では、Amazon Route 53 固有の DNS への拡張子であるエイリアスレコードが提供されます。エイリアスレコードを作成して、Amazon Elastic Load Balancing ロードバランサー、Amazon CloudFront ディストリビューション、AWS Elastic Beanstalk 環境、API Gateway、VPC インターフェイスエンドポイント、あるいはウェブサイトとして設定されている Amazon S3 バケットなどの選択された AWS リソースにトラフィックをルーティングすることができます。エイリアスレコードのタイプは通常 A または AAAA ですが、CNAME レコードのように機能します。エイリアスレコードを使用すると、お客様のレコード名 (例: example.com) を AWS リソース用の DNS 名 (elb1234.elb.amazonaws.com) にマッピングすることができます。リゾルバーには、A または AAAA レコードと AWS リソースの IP アドレスが表示されます。

  • ゾーンApexの場合、上記の方法(Aレコードのエイリアス)もしくは別のサブドメインの作成方法を使ってください。

以上、御一読ありがとうございました。

本田 イーゴリ (記事一覧)

カスタマーサクセス部

・AWS SAP, DOP, SCS, DBS, SAA, DVA, CLF
・Azure AZ-900
・EC-Council CCSE

趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽