Amazon Web Services ブログ

アプリケーションのパフォーマンスを向上:Amazon CloudFront が HTTPS レコードを有効化

本稿は、2025 年 7 月 2 日に公開された “Boost application performance: Amazon CloudFront enables HTTPS record” を翻訳したものです。

Amazon CloudFront は、グローバルネットワーク全体で Amazon Route 53 の HTTPS DNS エイリアスレコードをサポートすることを発表しました。この機能でクライアントは、その後の接続ステップではなく、最初の DNS 解決フェーズで最適な HTTP プロトコルを見つけることができます。これにより、ユーザーはパフォーマンスとセキュリティを向上させると同時に、運用コストを削減できます。

この記事では、実装の詳細、パフォーマンスの向上、およびこの機能の設定方法について説明します。

DNS HTTPS レコード

HTTPS レコードは、RFC 9460 で定義されているサービスバインディング (SVCB) DNS レコードの特殊な形式です。これらのレコードタイプは、安全なインターネット接続の柔軟性を高め、信頼性と速度を向上させます。HTTPS レコードは、接続の確立に必要なラウンドトリップ回数を減らし、将来のプロトコルアップグレードをサポートすることでこれを実現しています。

HTTPS DNS レコードは、特定のドメインで利用できるサービスについて、他のレコードタイプ (A や AAAA など) よりも詳細な情報を提供します。このレコードタイプには、サポートされているプロトコルやポートなどの重要な情報が表示され、クライアントが接続できる代替サーバーを指定することもできます。

クライアントが DNS ルックアップを実行して HTTPS レコードが利用可能になると、使用可能なプロトコルに関する情報が即時に届きます。これにより、TLS ネゴシエーションとプロトコル検出を別々に行う必要がなくなります。ブラウザとモバイルアプリケーションは、最もパフォーマンスの高いプロトコルを使用して最初の接続で直接安全な接続を確立できるため、レイテンシーとダウングレード攻撃に対する脆弱性が軽減されます。

HTTPS DNS レコードフォーマット:

<domain> <TTL> IN HTTPS <priority> <target> <parameters>

例:

mysite.com. 300 IN HTTPS 1 . alpn=h2,h3

コンポーネント:

  • domain:ウェブサイトの FQDN (末尾がドットで終わる)
  • TTL:キャッシュ時間 (秒単位) (300-86400)
  • priority:エイリアスは 0、サービスエンドポイントは 0 より大きい
  • target:同じドメインの場合は「.」、別のドメインを指定
  • parameters:アプリケーション層プロトコルネゴシエーション、プロトコルネゴシエーション値の場合は alpn=h2、h3 などのキーと値のペア

TTL が小さいほど動的更新が多いケースに向き、TTL が高いほどキャッシュパフォーマンスが向上します。

ブラウザサポート

主要なブラウザはすでに HTTPS レコードタイプをサポートしています。ウェブトラフィックの大半を占めるChrome、Safari、Firefox は、これらのクエリをデフォルトですでに行っています。

ブラウザが DNS クエリリクエストを行うと、通常は、従来の A/AAAA レコードリクエストと新しい HTTPS レコードリクエストの両方を同時に送信します。ブラウザは HTTPS レコード応答のプロトコル情報と IP アドレスを使用して最適な接続を確立します。この方法では、HTTPS レコードが利用可能な場合にパフォーマンスを最適化すると同時に、まだサポートしていない DNS サーバーとの互換性を維持できます。

クライアントがこの機能をサポートしていない場合は、「従来の DNS 解決と接続アップグレードフロー」セクションで説明されている従来の DNS 解決プロセスに従います。これにより、リスクのない最適化が可能になり、古いクライアントとの互換性を損なうことなくパフォーマンスを向上させることができます。

従来の DNS 解決と接続アップグレードフロー

次のシーケンス図は、HTTP/1.1 または HTTP/2 への初回接続後に、クライアントが Alt-Svc ヘッダーを介してHTTP/3 サポートを検出する従来の方法を示しています。HTTP/3 へのアップグレードには複数の接続確立が必要でした。

図 1: HTTPS レコードを使用しない DNS 解決と HTTP/3 アップグレードプロセス

次のステップでは、その順序を説明します。

ステップ 1-2: DNS クエリ

(1) クライアントが DNS に www.example.com A/AAAA を問い合わせる

(2) DNS は CloudFront エッジサーバーの IP のみを返す

結果:クライアントには IP アドレスはあるがプロトコル情報はありません。

ステップ 3-7: 最初の HTTP/2 接続

(3) CloudFront へ TCP ハンドシェイク (3 ウェイ)

(4) TCP が確立される

(5) TCP 経由の TLS ハンドシェイク

(6) TCP 経由で TLS を確立される

(7) HTTP/2 リクエスト

レスポンス:HTTP/2 レスポンス Alt-Svc: h3=”:443″

結果:クライアントは最初のリクエスト後に HTTP/3 サポートについて知ります。

HTTP/3 over QUIC を使用すると、最新の ウェブアプリケーションのパフォーマンスが向上しますが、接続のアップグレードプロセスには追加のラウンドトリップが必要になり、遅延が発生します。次のセクションでは、CloudFront ディストリビューションで HTTPS DNS レコードを使用してこれを改善する方法を紹介します。

CloudFront HTTPS DNS レコードと HTTP/3:安全な名前解決と接続確立フロー

次のシーケンス図は、HTTPS レコードタイプによる DNS 解決と、それに続くクライアントと ウェブサーバー間の接続確立を示しています。

図 2: HTTP/3 接続のための HTTPS レコードタイプを使用した DNS 解決

次のステップでは、その順序を説明します。

ステップ 1-2:DNS クエリ

(1) クライアントが DNS に www.example.com HTTPS と A/AAAA を問い合わせる

(2) DNS は CloudFront エッジサーバーの IP と alpn=h2,h3 を含む HTTPS レコードを返す

結果:クライアントは DNS を通じて HTTP/3 サポートを知ります。

ステップ 3-6:ダイレクト接続

(3) クライアントが CloudFront へ QUIC ハンドシェイク (1-RTT) を開始する

(4) QUIC 接続が確立される

(5) クライアントが HTTP/3 リクエストを送信する

(6) CloudFront が HTTP/3 で応答する

この図は、HTTPS DNS レコードタイプが HTTP/3 や QUIC などの最新のウェブプロトコルに関する初期ヒントをどのように提供するかを示しています。この仕組みにより、クライアントは接続開始前にサーバーがサポートするプロトコルを把握でき、より安全で効率的な接続確立プロセスが可能になります。

CloudFront HTTPS DNS レコードの作成方法

まず CloudFront ディストリビューションで HTTP/2 または HTTP/3 もしくはその両方を有効にする必要があります。既存のディストリビューションでは、設定に移動して編集を選択します。そこから次の図に示すように、ディストリビューションの HTTP/2 または HTTP/3 を有効にします。

図 3: 必要な CloudFront 設定

CloudFront ディストリビューションで HTTP/2 または HTTP/3 もしくはその両方が有効になっている場合、Route 53 を通じてカスタムドメインの HTTPS レコードを有効にできます。ドメインのホストゾーンを編集し、次の図に示すようにレコードの作成を選択します。レコード名には、CloudFront ディストリビューションのドメインに一致するサブドメインを入力します。次に、HTTPS タイプのエイリアスレコードを作成します。トラフィックのルーティング先で、CloudFront ディストリビューションへのエイリアスを選択し、該当する CloudFront ディストリビューションを選びます。保存すると、CloudFront はドメインの HTTPS レコードの送信を開始します。

図 4:HTTPS タイプの Route 53 エイリアスレコード

CloudFront コスト最適化:Route 53 エイリアス HTTPS レコードの使用

CloudFront のコスト最適化を行う際、ほとんどの戦略はキャッシュヒット率の最大化、オリジンのオフロード、データ転送量の削減、HTTPS/TLS ハンドシェイクのオーバーヘッド最小化に焦点を当てています。しかし、Route 53 のエイリアスレコードを使用することで実現できる、強力でありながら見過ごされがちなコスト削減手法があります。

従来、Route 53 の DNS クエリはクエリごとに課金されます。しかし、エイリアスレコード(IPv4 専用の CloudFront ディストリビューションに対するエイリアス A レコード、またはデュアルスタック IPv4/IPv6 ディストリビューションに対するエイリアス A および AAAA レコード)を使用すると、Route 53 はこれらの DNS クエリ料金を免除します。これにより、トラフィックの多いドメインの運用コストを直接削減できます。CloudFront へのエイリアス HTTPS レコードのサポートにより、これらの節約効果はさらに拡大されます。

これで、ユーザーは CloudFront ディストリビューションを直接指す Route 53 エイリアス HTTPS レコードを設定できるようになり、Route 53 はこれらの DNS クエリを無料で処理します。これにより、最も一般的な 3 種類の DNS レコードタイプ (A、AAAA、HTTPS) のコストが削減されます。さらに、これはグローバルトラフィックを抱える大企業だけでなく、規模拡大を目指すスタートアップ企業にとっても特に影響力があります。最も一般的な DNS レコードクエリの利用が増えても課金されないため、安心感が得ることができます。

まとめ:ウェブパフォーマンス向上への一歩

Amazon CloudFront と Amazon Route 53 による HTTPS DNS レコードのサポートは、Web パフォーマンス最適化において意義ある進歩を表しています。不必要な接続セットアップのラウンドトリップを排除することで、CloudFront はエンドユーザーにコンテンツをより迅速かつ効率的に配信することができます。CloudFront での HTTPS レコードのサポートは、現在すべてのエッジロケーションで利用可能です。AWS マネジメントコンソールを通じて、これらの新機能の使用を開始できます。CloudFront や Route 53 からの HTTPS レコード使用に関して追加料金はかかりません。

翻訳は Solutions Architect の長谷川 純也が担当しました。