すこぶる.net

技術系備忘録など

AWS

DNSの多段CNAMEとRoute53のエイリアスレコードとは

投稿日:2020年1月26日 更新日:

多段 CNAME とは

多段 CNAME とは、 DNS において、 CNAME レコードに別の CNAME レコードを登録することです。
具体的には以下のようなレコードを多段 CNAME といいます。

これは、AWS で使用している Elastic Load Balancer (ELB) のエンドポイントの DNS レコードを指定しています。
www.scble.net の名前解決を行うと、その先には ELB の xxxxxxxxxxxxxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com. が登録されています。
そこから更に xxxxxxxxxxxxxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com. を名前解決すると A レコード(IP アドレス)を取得することができます。

何が問題?

実際にこういった設定は多く見られますし、サービスを提供するということに支障はありません。(ただし、過度な多段 CNAME は途中で切られることがありますので注意してください。)
また上記の例を見て分かる通り、名前解決のステップ数が多く、その分遅延が発生します。
ここまでざっくりと多段 CNAME について説明をしましたが、 AWS の Route53 ではこの問題を解決する エイリアスレコード というものがあり、
以外と知られていない部分もあるので説明したいと思います。

AWS のエイリアスレコードを使用する

AWS Route 53 では以下のように、A レコードに対して CNAME をエイリアスとして登録することができます。
同じアカウントであれば、エイリアス先に使用している ELB などのエンドポイントがリストで選択できます。

【ポイント】
エイリアス先には他 AWS アカウントにある ELB などもエンドポイントが分かっていれば登録することができます。

AWS Route53 エイリアスレコード

エイリアスレコードを使用した際の名前解決は以下のような形になります。

これで名前解決の際にステップ数が削減され無駄な遅延を抑えることができます。

最後に

多段 CNAME と AWS Route53 にあるエイリアスレコードの説明でした。
ご存知の方も多いと思いますが、自分の経験上、意外と知らない方が多く、他の AWS アカウントのリソースは指定できないと思っている方がいたりしたので、
これで知った方はぜひ AWS Route 53 のエイリアスレコードの設定を検討してみてください。
※ AWS 以外のサービスでは使用できないと思うのでそこは多段 CNAME を使用することになります。

-AWS
-, , ,

執筆者:

関連記事

【ALB】ターゲットがunhealthyでもつながる仕様

AWS ALBの動作について AWSで使用しているALB(Application Load Balancer)の動作で誤解していたことがあった。 ALB配下にEC2インスタンスを複数台ぶら下げた状況で …

NginxからプライベートのS3にリバースプロキシ

概要 Nginx から AWS にあるプライベートな S3 のバケットにリバースプロキシしたいという要件があったため、その方法をご紹介します。 AWS にある EC2 上からであれば、IAM Role …