Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

代替ドメイン名 (CNAME) を追加してカスタム URL を使用する

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

代替ドメイン名の追加

以下のタスクリストでは、CloudFront コンソールを使用して代替ドメイン名をディストリビューションに追加するプロセスについて説明しています。これにより、ディストリビューションに関連付けられている CloudFront ドメインではなく独自のドメイン名をリンクで使用できます。CloudFront API を使用したディストリビューションの更新については、「ディストリビューションの使用」を参照してください。

注記

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

代替ドメイン名の追加 (コンソール)

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

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

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

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

    代替ドメイン名 (CNAME)

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

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

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

    • [Don't use HTTPS (HTTPS を使用しない)] – [Default CloudFront Certificate (デフォルトの CloudFront 証明書)] を選択します。

    • [Use HTTPS (HTTPS を使用する)] – [Custom SSL Certificate (独自 SSL 証明書)] を選択して、リストから証明書を選択します。このリストには、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) (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) (Server Name Indication (SNI) をサポートしているクライアントのみ)]: SNI をサポートしていない旧式のブラウザやクライアントでは、別の方法を使用してコンテンツにアクセスする必要があります。

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

  5. [Yes, Edit (はい、編集します)] を選択します。

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

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

    注記

    DNS レコードが既に指しているのが、作成中のディストリビューション以外のディストリビューションである場合、DNS を更新せずにディストリビューションに代替ドメイン名を追加することはできません。詳細については、「代替ドメイン名を使用する上での制限」を参照してください。

    Route 53

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

    別の 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 リクエストと、応答のうちの関連する部分を示しています。

    [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 ディストリビューションのドメイン名ではなく代替ドメイン名を使用するように、オブジェクトへのリンクを変更します。

代替ドメイン名を別の CloudFront ディストリビューションに移動する

CloudFront ディストリビューションから別のディストリビューションに代替ドメイン名を移動する場合、移動するドメイン名に応じた手順で行います。

marketing.example.com のようなサブドメイン名を別のディストリビューションに移動する

サブドメイン名を移動するには、以下の手順を実行します。

サブドメイン名を新しいディストリビューションを移動するには

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

  2. ドメイン名を移動する新しいディストリビューションがない場合は、新規に作成します。詳細については、「ディストリビューションの作成」を参照してください。

  3. エイリアスレコードセットあるいは CNAME レコード用のワイルドカードがある代替ドメイン名をディストリビューションに追加します。たとえば、新しいディストリビューションに移動するサブドメイン名が marketing.example.com の場合、代替ドメイン名 *.example.com を追加します。詳細については、「代替ドメイン名に * ワイルドカードを使用する」を参照してください。

    注記

    *.com のようなトップレベルのドメイン名にワイルドカードを追加することはできないので、example.com のようなドメイン名を新しいディストリビューションに移動する場合は、「 example.com のようなドメイン名を別のディストリビューションに移動する」を参照してください。

  4. サブドメインの DNS 設定を更新して、新しいディストリビューションを示します。たとえば、トラフィックをディストリビューション d111111abcdef8.cloudfront.net の CloudFront ドメイン名にルーティングするように、サブドメイン marketing.example.com の DNS サービスを更新します。

    設定を更新するには、次のいずれかを実行します。

    • Route 53 を使用している場合は、当初に代替ドメイン名をセットアップした方法に応じて、エイリアスレコードまたは CNAME レコードを更新します。詳細については、Amazon Route 53 開発者ガイドの「レコードの編集」を参照してください。

    • 別の DNS サービスプロバイダを使用している場合は、その DNS サービスプロバイダが提供している方法を使用して、CloudFront にトラフィックを送っている CNAME レコードを更新します。詳細については、DNS サービスプロバイダから提供されたドキュメントを参照してください。

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

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

    [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 レコードを修正します。

  6. 既存のディストリビューションから CNAME を削除し、新しい CloudFront ディストリビューションに移動します。たとえば、デフォルトで marketing.example.com のように指定される新しいディストリビューションに d111111abcdef8.cloudfront.net を移動します。

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

  8. 元のディストリビューションを今後使用しない場合には、削除します。詳細については、「ディストリビューションを削除する」を参照してください。

example.com のようなドメイン名を別のディストリビューションに移動する

example.com のような第 2 レベルのドメイン名では、ドメイン名を別の CloudFront ディストリビューションに移動するには、AWS サポートに問い合わせることが必要です。前の手順で示したように、自分でドメインを移動するにはワイルドカードをドメイン名の一部として使用してドメインルーティングを設定することが必要となるため、追加の手順が必要です。2 番目のレベルのドメインの場合は、このステップでは *.com としてルーティングを設定することになり、これは許可されません。

開始する前に、ドメイン名を移動する新しいディストリビューションがない場合は、新規に作成します。詳細については、「ディストリビューションの作成」を参照してください。

example.com のようなドメイン名を新しいディストリビューションに移動するには、2 段階のステップを実行します。

ステップ 1: DNS サービスプロバイダでドメインの TXT レコードを作成して、このドメインを所有している証拠を AWS サポートに提供します。これによって、別の誰かがディストリビューション設定を変更することを防ぎます。

ステップ 2: ドメインを新しい CloudFront ディストリビューションに移動するように AWS サポートにリクエストします。

特定の手順を以下に示します。

ステップ 1: ドメインの TXT レコードを作成する

  1. DNS サービスプロバイダウェブサイトにサインインします。

    サービスプロバイダが Route 53 である場合は、Route 53 コンソールにサインインします

  2. 次に示すように、ドメインの TXT レコードを作成します。

    <ドメイン名> TXT <CloudFront ディストリビューション名>

    以下に例を示します。example.com TXT d123.cloudfront.net

    • DNS サービスプロバイダが Route 53 の場合には、ステップ 3 の詳細な手順に進みます。

    • ドメインが別の DNS サービスプロバイダにホストされている場合、DNS サービスプロバイダのドキュメントを参照してください。サービスプロバイダがユーザーの TXT レコードを作成するようにリクエストする必要がある場合があります。

      ヒント

      サービスプロバイダが CNAME レコードと同じ情報を持つようなドメインの TXT 名を許可していない場合には、ドメイン名の前に下線 (_) を付けた TXT レコードの作成を考慮します。例としては、ナレッジセンターの記事「CNAME が既に存在するエラーへの対処」を参照してください。

  3. DNS サービスプロバイダが Route 53 の場合、以下の手順で TXT レコードを作成してドメインの所有を証明します。

    1. [Hosted Zones (ホストゾーン)] ページで、レコードを編集するホストゾーンの行をダブルクリックします。

    2. [Create Record Set] を選択します。

    3. 以下の値を入力します。

      • [Name (名前)]: 新しい CloudFront ディストリビューションに移動するドメイン名。

      • [Type (タイプ)]: TXT

      • [Alias (エイリアス)]: No

      • [TTL]: 60 (秒)

      • [Value (値)]: このドメイン名に追加する CloudFront ディストリビューションの名前 (例: d123.cloudfront.net)。

      • [Routing policy (ルーティングポリシー)]: Simple

    4. [Create (作成)] を選択します。

ステップ 2: ドメインを新しい CloudFront ディストリビューションに移動するように AWS サポートにリクエストする

  • AWS にサインインして AWS サポートに連絡し、ドメインの所有権を検証し、ドメインを新しい CloudFront ディストリビューションに移動するようにリクエストします。

    注記

    AWS サポートは、ドメインに作成した TXT レコードを確認するまでドメインの所有権を検証できません。DNS プロバイダで作成したレコードは、DNS システムに配信されるまで時間がかかる (数日) 場合があることに注意してください。

代替ドメイン名の削除

ドメインまたはサブドメインから CloudFront ディストリビューションへのトラフィックのルーティングを停止する場合は、このセクションのステップに従って、DNS 設定および CloudFront ディストリビューションを更新します。

ディストリビューションから代替ドメイン名を削除し、同時に DNS 設定を更新することが重要です。これにより、後にこのドメイン名を別の CloudFront ディストリビューションに関連付ける際の問題を回避します。代替ドメイン名が既に 1 つのディストリビューションに関連付けられている場合、別のディストリビューションで設定することはできません。

注記

このディストリビューションから代替ドメイン名を削除して、別のディストリビューションに追加するには、「 代替ドメイン名を別の CloudFront ディストリビューションに移動する」の手順に従います。ドメインを削除するこの手順を実行し、続けてこのドメインを別のディストリビューションに追加する場合、CloudFront はエッジロケーションに更新するように伝達されることより、このドメインは一定期間新しいディストリビューションにリンクしません。

ディストリビューションから代替ドメイン名を削除するには

  1. まず、ドメインへのインターネットトラフィックを、CloudFront ディストリビューションではない別のリソース (Elastic Load Balancing ロードバランサーなど) にルーティングします。または、CloudFront にトラフィックをルーティングする DNS レコードを削除することもできます。

    ドメインの DNS サービスに応じて、次のいずれかを実行します。

    • Route 53 を使用している場合は、エイリアスレコードまたは CNAME レコードを更新または削除します。詳細については、「レコードの編集」または「レコードの削除」を参照してください。

    • 別の DNS サービスプロバイダを使用している場合は、その DNS サービスプロバイダが提供している方法を使用して、CloudFront にトラフィックを送っている CNAME レコードを更新または削除します。詳細については、DNS サービスプロバイダから提供されたドキュメントを参照してください。

  2. ドメインの DNS レコードを更新したら、この変更が伝達され、DNS リゾルバーが新しいリソースにトラフィックをルーティングするまで待ちます。URL でドメインを使用するテストリンクを作成することで、以上が完了したことを確認できます。

  3. 完了したら、AWS マネジメントコンソール にサインインして https://console.aws.amazon.com/ で CloudFront コンソールを開き、次の手順に従って、CloudFront ディストリビューションを更新してドメイン名を削除します。

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

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

    3. [Alternate Domain Names (CNAMEs) (代替ドメイン名 (CNAME))] で、ディストリビューションに使用しない代替ドメイン名 (1 つ以上) を削除します。

    4. [Yes, Edit (はい、編集します)] を選択します。

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

代替ドメイン名を追加するとき、サブドメインを個別に追加する代わりに、ドメイン名の最初に * ワイルドカードを使用できます。たとえば、代替ドメイン名を *.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 のように、ドメイン名の中間部分のサブドメインを置き換えることもできません。

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

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

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

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

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

代替ドメイン名の最大数

ディストリビューションに追加できる代替ドメイン名の数に関する現在の制限について、または制限の引き上げをリクエストするには、「ウェブディストリビューションの一般的な制限」を参照してください。

DNS 設定を変更する権限

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

重複する代替ドメイン名

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

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

2 つのディストリビューションで代替ドメイン名が重複している場合、CloudFront は、DNS レコードが指しているディストリビューションに関係なく、より具体的な名前が一致しているディストリビューションにリクエストを送信します。たとえば、example.domain.com は *.domain.com より具体的です。

既にディストリビューションを指している代替ドメイン名

DNS レコードが指しているのが、作成中または変更中のディストリビューション以外のディストリビューションである場合、ディストリビューションに代替ドメイン名を追加することはできません。このシナリオでは、CloudFront ディストリビューションのドメイン名を追加するには、事前に DNS プロバイダで DNS を更新する必要があります。

これを解決するには、DNS プロバイダにサインインし、既存の DNS レコードを削除するか、DNS プロバイダに連絡して削除してもらいます。次に、ディストリビューションの代替ドメイン名を追加または変更するステップに従って、ディストリビューション用の適切な DNS レコードを作成します。詳細については、「代替ドメイン名の追加 (コンソール)」または「 代替ドメイン名を別の CloudFront ディストリビューションに移動する」を参照してください。

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

注記

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

詳細については、Amazon Route 53 開発者ガイド の「Amazon CloudFront ディストリビューションへのクエリのルーティング」を参照してください。

代替ドメイン名と HTTPS

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