メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

代替ドメイン名 (CNAME) を使用する

CloudFront では、CNAME とも呼ばれる代替ドメイン名を使用すると、オブジェクトへのリンクに、CloudFront によってディストリビューションに割り当てられたドメイン名ではなく、独自のドメイン名 (例: www.example.com) を使用できます。代替ドメイン名は、ウェブディストリビューションと RTMP ディストリビューションの両方でサポートされます。

ディストリビューションを作成すると、ディストリビューションのドメイン名が CloudFront から返されます。たとえば、次のようなドメイン名です。

d111111abcdef8.cloudfront.net

オブジェクトに CloudFront ドメイン名を使用した場合、/images/image.jpg というオブジェクトの URL は次のようになります。

http://d111111abcdef8.cloudfront.net/images/image.jpg

オブジェクトの URL に、CloudFront によってディストリビューションに割り当てられた cloudfront.net ドメイン名ではなく、www.example.com などの独自のドメイン名を使用する場合、www.example.com のディストリビューションに代替ドメイン名を追加できます。これで、/images/image.jpg に対して次の URL を使用できます。

http://www.example.com/images/image.jpg

代替ドメイン名に * ワイルドカードを使用する

代替ドメイン名を追加するとき、サブドメインを個別に指定する代わりに、ドメイン名の最初に * ワイルドカードを使用できます。たとえば、代替ドメイン名を *.example.com にしている場合は、www.example.comproduct-name.example.commarketing.product-name.example.com など、末尾が example.com であればどのドメイン名でもオブジェクト URL に使用できます。オブジェクトの名前は、ドメイン名に関係なく同じです。たとえば、次のようになります。

www.example.com/images/image.jpg

product-name.example.com/images/image.jpg

marketing.product-name.example.com/images/image.jpg

代替ドメイン名は、アスタリスクとドット (*.) で始まる必要があります。*domain.example.com のように、サブドメインの一部を置き換えるためにワイルドカードを使用することはできません。また、subdomain.*.example.com のように、ドメイン名の真ん中のサブドメインを置き換えることもできません。

*.example.com などのワイルドカードの代替ドメイン名には、example.com のような別の代替ドメイン名を、両方が同じ CloudFront ディストリビューション、または同じ AWS アカウントを使用して作成されたディストリビューションにあるかぎり含めることができます。

代替ドメイン名を使用する上での制限

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

CNAME は小文字を使用する必要がある

すべての CNAMES は、有効であるためには小文字である必要があります。

代替ドメイン名の最大数

ディストリビューションに追加できる代替ドメイン名の数に関する現在の制限については、『アマゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してください。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照してください。

DNS 設定を変更する権限

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

重複する代替ドメイン名

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

ただし、*.example.com のようなワイルドカードの代替ドメイン名を追加できます。これには、www.example.com のような非ワイルドカードの代替ドメイン名 (重複している) が含まれます。重複しているドメイン名は同じディストリビューション、または両方のディストリビューションが同じ AWS アカウントを使用して作成されている場合は他のディストリビューションに存在できます。

ドメインの Zone Apex の代替ドメイン名

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

DNS サービスとして Amazon Route 53 を使用している場合、エイリアスリソースレコードセットを作成できます。これは、CNAME レコードに比べて 2 つの利点があります。zone apex のドメイン名 (example.com) に対してエイリアスリソースレコードセットを作成することもできます。また、エイリアスリソースレコードセットを使用した場合、Amazon Route 53 クエリに対する料金はかかりません。

注記

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

詳細については、「Amazon Route 53 開発者ガイド」の「Routing Queries to an Amazon CloudFront Distribution」を参照してください。

代替ドメイン名と HTTPS

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

代替ドメイン名の追加

以下のタスクリストでは、CloudFront コンソールを使用して代替ドメイン名をディストリビューションに追加するプロセスを説明します。これにより、ディストリビューションに関連付けられた CloudFront ドメインの代わりに、独自のドメイン名をリンクの中で使用できます。

注記

ビューワーで代替ドメイン名を含む HTTPS を使用する場合は、「代替ドメイン名と HTTPS の使用」を参照してください。

CloudFront API を使用したディストリビューションの更新については、「ディストリビューションの使用」を参照してください。

CloudFront コンソールを使用して代替ドメイン名を追加する

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。

  2. 更新するディストリビューションの ID を選択します。

  3. [General] タブで、[Edit] を選択します。

  4. 以下の値を更新します。

    代替ドメイン名 (CNAME)

    該当する代替ドメイン名を追加します。ドメイン名をコンマで区切るか、新しい行にドメイン名を 1 つずつ入力します。

    SSL 証明書 (ウェブディストリビューションのみ)

    ビューワーがコンテンツにアクセスするのに HTTPS を使用するかどうかに応じて、該当するオプションを選択します。

    • HTTPS を使用しない – [Default CloudFront Certificate] を選択します。

    • HTTPS を使用する – [Custom SSL Certificate] を選択して、リストから証明書を選択します。リストには、AWS Certificate Manager (ACM) がプロビジョニングした証明書、別の認証機関から購入して ACM にアップロードした証明書、および別の認証局から購入して IAM 証明書ストアにアップロードした証明書が含まれます。

      IAM 証明書ストアに証明書をアップロードする場合で、それがリストに表示されない場合は、SSL/TLS 証明書をインポートする の手順を確認して、証明書が正しくアップロードされたことを確認します。

      この設定を選択した場合、オブジェクト URL でのみ代替ドメイン名を使用することをお勧めします (https://example.com/logo.jpg)。CloudFront のディストリビューションドメイン名 (https://d111111abcdef8.cloudfront.net/logo.jpg) を使用した場合、ビューワーが SNI をサポートしていると、CloudFront は正常に動作します。しかし、ビューワーが SNI をサポートしていないと、[Clients Supported] の値に応じてビューワーは次のいずれかの動作を示します。

      • [All Clients]: ビューワーが SNI をサポートしていない場合、CloudFront ドメイン名が SSL/TLS 証明書のドメイン名と一致しないため、警告が表示されます。

      • [Only Clients that Support Server Name Indication (SNI)]: CloudFront はオブジェクトを返さないでビューワーとの接続を中断します。

    サポートされるクライアント (ウェブディストリビューションのみ)

    適用可能なオプションを選択します。

    • [All Clients]: CloudFront が専用の IP アドレスを使用して HTTPS コンテンツを供給します。このオプションを選択した場合、有効になっているディストリビューションに SSL/TLS 証明書を関連付けると、追加料金がかかります。詳細については、http://aws.amazon.com/cloudfront/pricing を参照してください。

    • [Only Clients that Support Server Name Indication (SNI)]: 古いブラウザなど SNI をサポートしないクライアントは、別の方法を使用してコンテンツにアクセスする必要があります。

    詳細については、「CloudFront で HTTPS リクエストを供給する方法の選択」を参照してください。

  5. [Yes, Edit] を選択します。

  6. ディストリビューションの [General] タブで、[Distribution Status] が [Deployed] に変わったことを確認します。ディストリビューションに対する更新がデプロイされる前に代替ドメインの使用を試みた場合、以下のステップで作成するリンクは機能しません。

  7. ドメイン (example.com など) のトラフィックをルーティングするためのドメインの DNS サービスを、ディストリビューションの CloudFront ドメイン名 (d111111abcdef8.cloudfront.net など) に設定します。使用する方法は、ドメインの DNS サービスプロバイダーとして使用する Amazon Route 53 によって異なります。

    Amazon Route 53

    エイリアスリソースレコードセットを作成します。エイリアスリソースレコードセットを使用した場合、Amazon Route 53 クエリに対する料金はかかりません。また、ルートドメイン名 (example.com) に対してエイリアスリソースレコードセットを作成することもできます。DNS では CNAME の使用が許可されていません。詳細については、「Amazon Route 53 開発者ガイド」の「Routing Queries to an Amazon CloudFront Distribution」を参照してください。

    別の DNS サービスプロバイダー

    DNS サービスプロバイダーから提供された方法を使用して、CNAME リソースレコードセットをドメインのホストゾーンに追加します。この新しい CNAME リソースレコードセットによって、DNS クエリがドメイン (例: www.example.com) からディストリビューションの CloudFront ドメイン名 (例: d111111abcdef8.cloudfront.net) にリダイレクトされます。詳細については、DNS サービスプロバイダーから提供されたドキュメントを参照してください。

    重要

    ドメイン名用の CNAME レコードがすでに存在する場合は、そのリソースレコードセットを更新するか、ディストリビューションの CloudFront ドメイン名を指す新しいリソースレコードセットで置き換えます。

    また、CNAME リソースレコードセットがディストリビューションのドメイン名を指しており、どのオリジンサーバーも指していないことを確認します。

  8. dig などのツールを使用して、ステップ 7 で作成したリソースレコードセットがディストリビューションのドメイン名を指していることを確認します。dig の詳細については、http://www.kloth.net/services/dig.php を参照してください。

    以下の例は、images.example.com ドメインへの dig リクエストと、応答のうちの関連する部分を示しています。

    Copy
    [prompt]> dig images.example.com ; <<> DiG 9.3.3rc2 <<> images.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917 ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;images.example.com. IN A ;; ANSWER SECTION: images.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net. ... ...

    Answer Section の行は、CloudFront ディストリビューションのドメイン名である d111111abcdef8.cloudfront.net に images.example.com のクエリをルーティングする CNAME リソースレコードセットを示しています。CNAME の右側の名前が CloudFront ディストリビューションのドメイン名になっている場合、CNAME リソースレコードセットは適切に構成されています。名前が、Amazon S3 バケットのドメイン名など、別の値になっている場合、CNAME リソースレコードセットの構成が誤っています。この場合、ステップ 4 に戻り、ディストリビューションのドメイン名を指すように CNAME レコードを修正します。

  9. いくつかのテストリンクを作成し、その URL の中でディストリビューションの CloudFront ドメイン名ではなく独自のドメイン名を使用することで、代替ドメイン名をテストします。

  10. アプリケーションで CloudFront ディストリビューションのドメイン名ではなく代替ドメイン名を使用するように、オブジェクトへのリンクを変更します。