Route53のエイリアスとCNAMEの違いが分かりにくいので、整理してみた。
【考えるきっかけ】
ALBを作成する際に、ホストゾーンが、example.comの時、www.example.comのドメインをポイントするエイリアスレコードを作成する。
当たり前のようにしている事だとは、思いますが、これは、どのような効果があるのだろうか考えようと思った。
Amazonのサイトによると、
「CNAME レコードとは異なり、DNS 名前空間の最上位ノード (Zone Apex とも呼ばれる) にエイリアスレコードを作成できます。例えば、example.com という DNS 名を登録する場合、Zone Apex は example.com になります。example.com に対して CNAME レコードは作成できませんが、(www.example.com に CNAME レコードがない限り) www.example.com に対してトラフィックをルーティングするエイリアスレコードを作成できます。」
はい。専門用語がいっぱいですね。
【まず、専門用語を読み解く】
・Zone Apexとは、最初にサブドメインを伴わない、ドメイン名自体の事で、ネイキッドドメインやアペックスドメイン等と呼ばれる。
・エイリアスとは、ファイル等の実体を別の名前で参照するシンボル及び機能の事、人の名前を呼ぶ時のあだ名みたいな別の呼び方を指す。
・CNAME?
下記サイトによると、
「サーバーの正式なドメイン名はservice.example.jpであるが、将来のことを考えて情報提供ではinfo.example.jpを、ショッピングではshop.example.jpというドメイン名で運用したいといったケースが該当します。」
という事で、用途に応じた名前の柔軟な使い方をする時に利用するようです。
【深堀する】
Amazonのサイトによると、
「エイリアスレコードを使用して AWS リソースにトラフィックをルーティングしている場合、Route 53 はリソースでの変更を自動的に認識します。例えば、エイリアスレコード example.com が lb1-1234.us-east-2.elb.amazonaws.com の ELB ロードバランサーを指し示しているとします。ロードバランサーの IP アドレスが変更された場合、Route 53 が自動的に開始され、新しい IP アドレスを使用して DNS クエリに応答します。」
という事は、ロードバランサのIPが変わった時に、Route53が自動的に解釈してくれるらしい。
【何が違うんだろう】
・CNAMEレコードを利用するよりもクエリ回数が少なくて済むので、レスポンスが早いという事らしい。
・DNSの仕様上、最上位ノード (Zone Apex とも呼ばれる) にエイリアスレコードを作成できないという制約を回避して、レスポンスを向上させる事が出来るという事らしい。
Classmethodのサイトによると、
「CNAMEレコードを利用した場合、まずexample1.をDNSに問い合わせるとawseb--1110552124.ap-southeast-2.elb.amazonaws.comが返り、これをさらにDNSに問い合わせた結果として...183を得ます。つまり、DNSクエリが2回発生します。
一方、ALIASレコードを利用した場合は、example1.*から直接...183を得ますので、DNSクエリが1回で済みます。50%削減です。ALIASレコードではなく、...183のAレコードを直接定義すればいいと考えるかもしれません。しかし、ELBのDNS名に対するIPアドレスは動的に変化する可能性があるため、そうすることはできません。」
以上