Route 53 で Zone Apex を ELB に振り向けるときの設定

僕は mahata.org というドメインを所持している。

mahata.org のウェブサーバは ELB の背後にあり、mahata.org を名前解決した結果はこの ELB を指してほしい。これを実現するため AWS 固有の知識が必要だったので、後々のためにメモを残しておく。

直面した課題

Zone Apex とは「サブドメインを含まないドメイン名」を示す言葉である。例えば “www.mahata.org” は Zone Apex ではなく、 “mahata.org” は Zone Apex だ。

Amazon Route 53 では Zone Apex に対して CNAME の設定が許可されていない。mahata.org を ELB の CNAME にしたかったんだけど…。ELB の IP アドレスは動的に変わるので、mahata.org の A レコードを設定するのは筋が悪い。

さあ、どうしよう。

CNAME レコード以外の選択肢

少しぐぐった結果、Amazon Route 53 では ALIAS レコードという DNS レコードを設定できることがわかった。リンク先のオフィシャルドキュメントでは、CNAME レコードとの比較の中で「エイリアスリソースレコードセットは Zone Apex に作成できます」と明記されている。

これを使えばよさそうだ。

ALIAS レコードの設定

ALIAS レコードは限られた AWS リソースにしか設定できない。例えば ELB や CloudFront ディストリビューションなどが「限られた AWS リソース」である。

対象となる AWS リソースによってレコードの設定方法は少しずつ異なる。ALIAS レコードで ELB を指す場合は DNS 値の先頭に dualstack. を付ける。例えば dualstack.elb-example-0000000000.ap-northeast-1.elb.amazonaws.com. のような感じ。

具体的には Amazon Route 53 のコントロールパネルで次のようにする。

  1. Create Record Set をクリックする
  2. “Type: A” で “Alias” は “Yes” にチェックを入れる
  3. “Alias Target” に dualstack.elb-example-0000000000.ap-northeast-1.elb.amazonaws.com. のような値をセットする

これで Zone Apex が ELB を指せるようになる。