すこぶる.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
-, , ,

執筆者:

関連記事

【Nginx】Amazon S3へリバースプロキシ

Nginx から Amazon S3 へリバースプロキシ 今回は Nginx から Amazon S3 へリバースプロキシする方法について触れたいと思います。 ( 以前はプライベートな S3 へのリバ …

【AWS WAF】検知したリクエストをCloudWatch Logs で確認する

AWS WAF で検知、ブロックしたリクエストを CloudWatch Logs で確認する AWS で CloudFront や ALB に WAF を設定した際に、WAFで検知したリクエストの詳細 …

【AWS Lightsail】データベースのタイムゾーン変更方法

Amazon Lightsail のデータベースのタイムゾーン変更方法について Amazon Lightsail のデーターベースを使っているときに、time_zone を UTC から Asia/T …

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

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

AWS Copilot CLI で Laravel アプリケーションを Fargate にデプロイして Nginx とコンテナ間共有する

Copilot CLI で Fargate にデプロイした Laravel コンテナと Nginx コンテナのファイル共有 AWS Copilot CLI を使用して Laravel フレームワークで …