メニュー
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

代替ドメイン名の追加

以下のタスクリストでは、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 サービスプロバイダーとして使用する Route 53 によって異なります。

    Route 53

    エイリアスリソースレコードセットを作成します。エイリアスリソースレコードセットを使用した場合、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 リクエストと、応答のうちの関連する部分を示しています。

    [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. ドメイン名を移動する新しいディストリビューションがない場合は、新規に作成します。詳細については、「CloudFront コンソールを使用したウェブディストリビューションの作成または更新」を参照してください。

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

    注記

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Route 53 がサービスプロバイダーの場合、Route 53 コンソールにサインインします。

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

    <domain name> TXT <CloudFrontdistribution name>

    例: example.com TXT d123.cloudfront.net

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

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

      ヒント

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

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

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

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

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

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

      • [Type]: TXT

      • [エイリアス]: なし

      • [TTL]: 60 秒

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

      • [ルーティングポリシー]: シンプル

    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 コンソール を開き、次の手順で CloudFront ディストリビューションを更新してドメイン名を削除します。

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

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

    3. [代替ドメイン名 (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 のように、ドメイン名の真ん中のサブドメインを置き換えることもできません。

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

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

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

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

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

代替ドメイン名の最大数

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

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

注記

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

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

代替ドメイン名と HTTPS

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