前提
- ドメイン名からI Pアドレスを受け取って通信したい
- AWS S3とRoute53使用
- Aリソースレコード(Aレコード)とは、ドメイン名に対するIPv4アドレスを指定するリソースレコード。同じドメイン名に対して複数記述することができる。
CNAMEレコードの場合
DNSの名前解決では、CNAMEリソースレコードが見つかった場合、ドメイン名を正式名に置き換えて名前解決を継続します。
つまりCNAMEレコード名でアクセスしたらAレコード名を返す。
でも通信するためにはIPアドレスが欲しいので、Aレコードが返されたらそのAレコード名を使用して名前解決をしてIPアドレスを受け取る。
赤のアドレスでIPアドレスが欲しいとRoute53にリクエストを送るとCNAMEレコードの青のアドレスをクライアントに返す。
でもまだIPアドレスは手に入れられていないので、
クライアントは返ってきた青のアドレスを元にRoute53に問い合わせをしてAレコード内の黄のアドレスでS3でIPアドレスを取得し、クライアントに返して通信が成功する。
=> クライアントとRoute53の通信が2回行われる
ALIASレコード
Amazon Route 53 エイリアスレコード で、DNS 機能に Route 53 固有の拡張機能が追加されます。エイリアスレコードを使用すると、選択した AWS リソース (CloudFront ディストリビューションや Amazon S3 バケットなど) にトラフィックをルーティングできます。また、エイリアスレコードにより、ホストゾーン内のあるレコードから別のレコードにトラフィックをルーティングできます。
クライアントはRoute53に対してIPアドレスの問い合わせをすると、Route53はAレコードのALIASがあればそれを元にAWS内でS3に問い合わせをし、IPアドレスをクライアントに返す。
(AレコードなのでIPアドレスを返す)
=> クライアントとRoute53の通信は1回で済むのでCNAMEを使うよりも通信の速度が上がる
最近はこちらのサイトでアウトプットしているのでよろしければ覗いてみてください
↓
https://abillyz.com/moco/studies