代替ドメイン名 (CNAME) を追加することによって、カスタム URL を使用する - Amazon CloudFront

代替ドメイン名 (CNAME) を追加することによって、カスタム URL を使用する

ディストリビューションを作成すると、CloudFront はドメイン名 (d111111abcdef8.cloudfront.net など) を割り当てます。この割り当てられたドメイン名の代わりに、代替ドメイン名 (CNAME とも呼ばれます) を使用できます。

独自のドメイン名 (www.example.com など) を使用する方法については、以下のトピックを参照してください。

代替ドメイン名を使用するための要件

www.example.com などの代替ドメイン名を CloudFront ディストリビューションに追加する場合、次の要件があります。

代替ドメイン名は小文字を使用する必要があります

すべての代替ドメイン名 (CNAME) には小文字を使用する必要があります。

代替ドメイン名は有効な TLS 証明書の対象であることが必要です

CloudFront ディストリビューションに代替ドメイン名 (CNAME) を追加するには、この代替ドメイン名を対象とする信頼される有効な TLS 証明書をディストリビューションにアタッチする必要があります。これにより、ドメインの証明書にアクセスできる人物のみがドメインに関連する CNAME に CloudFront を関連付けることができます。

信頼される証明書は、AWS Certificate Manager (ACM) または別の有効な認証局 (CA) から発行されたものです。自己署名証明書は、既存の CNAME の検証には使用できますが、新しい CNAME には使用できません。CloudFront では Mozilla と同じ認証機関をサポートしています。最新のリストは、「Mozilla に付属する CA 証明書一覧」を参照してください。サードパーティ CA を使用する場合の中間証明書については、「中間証明書」を参照してください。

ワイルドカードを含む代替ドメイン名を含め、アタッチした証明書を使用して代替ドメイン名を確認するために、CloudFront は証明書のサブジェクト代替名 (SAN) を確認します。追加する代替ドメイン名は、SAN の対象である必要があります。

注記

CloudFront ディストリビューションには、一度に 1 つの証明書のみをアタッチすることができます。

ディストリビューションに特定の代替ドメイン名を追加する許可があることを証明するには、次のいずれかを実行します。

  • 代替ドメイン名 (product-name.example.com など) を含む証明書を添付します。

  • ドメイン名の先頭に * ワイルドカードを含む証明書をアタッチして、1 つの証明書で複数のサブドメインを対象とします。ワイルドカードを指定する場合、複数のサブドメインを CloudFront の代替ドメイン名として追加できます。

次の例では、証明書のドメイン名のワイルドカードを使用して特定の代替ドメイン名を CloudFront に追加することを許可する方法を示しています。

  • marketing.example.com を代替ドメイン名として追加するとします。証明書にドメイン名 *.example.com をリストします。この証明書を CloudFront にアタッチすると、この位置でワイルドカードを置き換えする一意の代替ドメイン名をディストリビューションに追加することができます (marketing.example.com など)。また、たとえば次の代替ドメイン名を追加することもできます。

    • product.example.com

    • api.example.com

    ただし、ワイルドカードより高いあるいは低い位置に代替ドメイン名を追加することはできません。例えば、代替ドメイン名 example.com や marketing.product.example.com を追加することはできません。

  • example.com を代替ドメイン名として追加するとします。これを行うには、ディストリビューションにアタッチした証明書にこのドメイン名 example.com 自体をリストする必要があります。

  • marketing.product.example.com を代替ドメイン名として追加するとします。これを行うには、証明書に *.product.example.com をリストするか、または証明書に marketing.product.example.com 自体をリストできます。

DNS 設定を変更する権限

代替ドメイン名を追加するとき、CNAME レコードを作成して代替ドメイン名の DNS クエリを CloudFront ディストリビューションにルーティングする必要があります。これを行うには、DNS サービスプロバイダーを使用して使用する代替ドメイン名に CNAME を作成する権限があることが必要です。通常、これはドメインを所有していることを指しますが、ドメイン所有者向けにアプリケーションを開発している場合にも当てはまります。

代替ドメイン名と HTTPS

代替ドメイン名を含む HTTPS をビューワーが使用するように構成する場合は、いくつかの追加設定を実行する必要があります。詳細については、「代替ドメイン名と HTTPS を使用する」を参照してください。

代替ドメイン名の使用に対する制限

代替ドメイン名の使用には、以下の制限があることに注意してください。

代替ドメイン名の最大数

ディストリビューションに対して作成できる代替ドメイン名の現在の最大数、またはクォータの引き上げを要求する代替ドメイン名の最大数については、「ディストリビューションの一般的なクォータ」を参照してください。

重複する代替ドメイン名

同じ代替ドメイン名が別の CloudFront ディストリビューションに既に存在する場合は、AWS アカウントが他のディストリビューションを所有しているとしても、その代替ドメイン名を CloudFront ディストリビューションに追加することはできません。

ただし、*.example.com のようなワイルドカード付きの代替ドメイン名を追加できます。これには、www.example.com のような非ワイルドカードの代替ドメイン名を含む (つまり重複している) が含まれます。2 つのディストリビューションで代替ドメイン名が重複している場合、CloudFront は、DNS レコードが指しているディストリビューションに関係なく、より具体的な名前が一致しているディストリビューションにリクエストを送信します。例えば、marketing.domain.com は *.domain.com より具体的です。

CloudFront ディストリビューションをポイントする既存のワイルドカード DNS エントリがあり、新しい CNAME をより具体的な名前で追加しようとしたときに、DNS が正しく設定されていないというエラーが表示された場合は、「新しい CNAME を追加しようとすると、DNS レコードが正しく設定されていないというエラーが CloudFront から返されます。」を参照してください。

ドメインフロンティング

CloudFront には、異なる AWS アカウント間で発生するドメインフロンティングに対する保護が含まれています。これは、非標準クライアントが 1 つの AWS アカウントのドメイン名への TLS/SSL 接続を作成し、別の AWS アカウントの関連しないドメイン名の HTTPS リクエストを行うシナリオです。

たとえば、TLS 接続が www.example.com に接続を行い、次に www.example.org にリクエストを発行するような場合です。

リクエストがドメインフロントになっているかどうかを判断するために、CloudFront は次のチェックを実行します。

  • SNI 拡張機能が HTTP リクエスト Host ヘッダーと等しい

  • 証明書がリクエストのディストリビューションと同じ AWS アカウントに属している

  • HTTP リクエスト Host は、TLS ハンドシェイク中に提供される証明書でカバーされます。

これらの条件のいずれも満たされない場合、CloudFront はリクエストがドメインフロンティングであると判断します。CloudFront は、421 HTTP エラーレスポンスでリクエストを拒否します。

注記

クライアントが SNI 拡張機能を提供しておらず、代わりにデフォルトの *.cloudfront.net 証明書を取得した場合、CloudFront は受信リクエストを受け入れます。

CloudFront がリクエストのディストリビューションを識別する方法

CloudFront は、Host ヘッダーに基づいて HTTP リクエストのディストリビューションを識別します。CloudFront は、接続先の CloudFront IP アドレスや、TLS ハンドシェイク中に提供された SNI ハンドシェイクに依存しません。

CloudFront はリクエストを受信すると、Host ヘッダーの値を使用してリクエストを特定のディストリビューションに一致させます。

例えば、2 つのディストリビューションがあり、代替ドメイン名が次のエンドポイントにルーティングされるように DNS 設定を更新したとします。

  • primary.example.com は d111111primary.cloudfront.net を指します。

  • secondary.example.com は d222222secondary.cloudfront.net を指します。

https://primary.example.com にリクエストを行い、Host ヘッダーを curl https://primary.example.com -H "Host: secondary.example.com" のような secondary.example.com として指定すると、リクエストは代わりにセカンダリディストリビューションにルーティングされます。

ドメインのトップノード (zone apex) の代替ドメイン名の追加

ディストリビューションに代替ドメイン名を追加する場合、通常、CloudFront ディストリビューションにドメイン名の DNS クエリをルーティングするように、DNS 設定で CNAME レコードを作成します。ただし、DNS プロトコルでは、zone apex とも呼ばれる、DNS 名前空間の最上位ノードに対して CNAME レコードを作成することができません。例えば、example.com という DNS 名を登録する場合、Zone Apex は example.com になります。「example.com」に対して CNAME レコードを作成することはできませんが、www.example.com、newproduct.example.com などに対しては CNAME レコードを作成できます。

DNS サービスとして Route 53 を使用している場合、エイリアスリソースレコードセットを作成できます。これは、CNAME レコードに比べて次のような利点があります。

  • トップノードのドメイン名 (example.com) に対してエイリアスリソースレコードセットを作成することもできます。

  • クライアントがサポートしている場合、代替ドメイン名の HTTPS レコードを作成して、DNS ルックアップの一部としてプロトコルネゴシエーションを許可できます。詳細については、「Create alias resource record set」を参照してください。

  • エイリアスリソースレコードセットを使用した場合、Route 53 クエリに対する料金はかかりません。

注記

IPv6 を有効にする場合、2 つのエイリアスリソースレコードセットを作成する必要があります。IPv6 トラフィック (A レコード) をルーティングするため、および IPv4 トラフィック (AAAA レコード) をルーティングするためです。詳細については、トピック「すべてのディストリビューション設定リファレンス」の「IPv6 を有効にする」を参照してください。

詳細については、『Amazon Route 53 開発者ガイド』の「ドメイン名を使用したトラフィックの Amazon CloudFront ウェブディストリビューションへのルーティング」を参照してください。

DNS に Route 53 を使用していない場合は、エニーキャスト静的 IP アドレスに example.com などの apex ドメインを CloudFront にルーティングするようにリクエストできます。詳細については、「許可リストで使用するエニーキャスト静的 IP をリクエストする」を参照してください。