

# マルチテナントディストリビューションの仕組みを理解する
<a name="distribution-config-options"></a>

複数のディストリビューションテナント間で再利用できる設定を使用して、CloudFront マルチテナントディストリビューションを作成できます。マルチテナントディストリビューションを使用して、コンテンツオリジンタイプに基づいて CloudFront にディストリビューション設定を構成させることができます。事前設定された設定内容の詳細については、「[事前設定されたディストリビューション設定リファレンス](template-preconfigured-origin-settings.md)」を参照してください。

標準ディストリビューションの代わりにマルチテナントディストリビューションを使用する利点は、次のとおりです。
+ 運用上の負担を軽減します。
+ エンドユーザーにコンテンツを配信する複数のウェブアプリケーションの CloudFront ディストリビューションを管理するための、ウェブ管理者とソフトウェアプロバイダー向けの再利用可能な設定。
+ 他の AWS のサービスとの統合を強化して、証明書の自動管理、統合セキュリティコントロール、および手間のかからない大規模な設定コントロールを実現しました。
+ 実装全体で一貫したリソースパターンを維持します。共有する必要がある設定を定義し、上書きする設定のカスタマイズを指定します。
+ ディストリビューションテナントレベルで特定のニーズを満たすように、オリジンおよびセキュリティの設定をカスタマイズできます。
+ ディストリビューションテナントを異なる階層に整理します。例えば、Origin Shield を必要とするディストリビューションテナントと必要としないテナントがある場合、ディストリビューションテナントを異なるマルチテナントディストリビューションにグループ化できます。
+ 複数のドメイン間で共通の DNS 設定を共有します。

標準ディストリビューションとは異なり、マルチテナントディストリビューションには CloudFront ルーティングエンドポイントがないため、直接アクセスすることはできません。したがって、接続グループおよび 1 つ以上のディストリビューションテナントと組み合わせて使用する必要があります。標準ディストリビューションには独自の CloudFront エンドポイントがあり、エンドユーザーが直接アクセスできますが、他のディストリビューションのテンプレートとして使用することはできません。

マルチテナントディストリビューションクォータの詳細については、「[マルチテナントディストリビューションのクォータ](cloudfront-limits.md#limits-template)」を参照してください。

**Topics**
+ [仕組み](#how-template-distribution-works)
+ [用語](#template-distributions-concepts)
+ [サポートされていない 機能](#unsupported-saas)
+ [ディストリビューションテナントのカスタマイズ](tenant-customization.md)
+ [CloudFront ディストリビューションテナントの証明書をリクエストする](managed-cloudfront-certificates.md)
+ [カスタム接続グループを作成する (オプション)](custom-connection-group.md)
+ [マルチテナントディストリビューションに移行する](template-migrate-distribution.md)

## 仕組み
<a name="how-template-distribution-works"></a>

*標準ディストリビューション*では、オリジン設定、キャッシュ動作、セキュリティ設定など、ウェブサイトまたはアプリケーションで有効にするすべての設定がディストリビューションに含まれます。別のウェブサイトを作成し、同じ設定の多くを使用する場合、毎回新しいディストリビューションを作成する必要があります。

CloudFront マルチテナントディストリビューションは、初期マルチテナントディストリビューションを作成できる点で異なります。新しいウェブサイトごとに、ソースディストリビューションの定義された値を自動的に継承するディストリビューションテナントを作成します。次に、ディストリビューションテナントの特定の設定をカスタマイズします。

**概要**

1. 開始するには、まずマルチテナントディストリビューションを作成します。CloudFront は、コンテンツオリジンタイプに基づいてディストリビューション設定を構成します。VPC オリジンを除くすべてのオリジンの設定をカスタマイズできます。VPC オリジン設定は、VPC オリジンリソース自体でカスタマイズされます。カスタマイズできるマルチテナントディストリビューション設定の詳細については、「[事前設定されたディストリビューション設定リファレンス](template-preconfigured-origin-settings.md)」を参照してください。
   + マルチテナントディストリビューションに使用する TLS 証明書は、ディストリビューションテナントに継承できます。マルチテナントディストリビューション自体はルーティングできないため、ドメイン名は関連付けられません。

1. デフォルトでは、CloudFront は接続グループを作成します。接続グループは、コンテンツに対するビューワーリクエストが CloudFront に接続する方法を制御します。接続グループの一部のルーティング設定をカスタマイズできます。

   これは、独自の接続グループを手動で作成することで変更できます。詳細については、「[カスタム接続グループを作成する (オプション)](custom-connection-group.md)」を参照してください。

1. 次に、1 つ以上のディストリビューションテナントを作成します。ディストリビューションテナントは、ビューワーがコンテンツにアクセスするための「玄関」です。各ディストリビューションテナントはマルチテナントディストリビューションを参照し、CloudFront が作成した接続グループに自動的に関連付けられます。ディストリビューションテナントは、個々のドメインまたはサブドメインをサポートします。

1. その後、バニティドメインやオリジンパスなど、一部のディストリビューションテナント設定をカスタマイズできます。詳細については、「[ディストリビューションテナントのカスタマイズ](tenant-customization.md)」を参照してください。

1. 最後に、DNS ホストの DNS レコードを更新して、トラフィックをディストリビューションテナントにルーティングする必要があります。これを行うには、接続グループから CloudFront エンドポイント値を取得し、CloudFront エンドポイントを指す CNAME レコードを作成します。

**Example 例**  
次の図は、マルチテナントディストリビューション、ディストリビューションテナント、および接続グループが連携して、複数のドメインのビューワーにコンテンツを配信する方法を示しています。  

1. マルチテナントディストリビューションは、各ディストリビューションテナントの継承された設定を定義します。マルチテナントディストリビューションをテンプレートとして使用します。

1. マルチテナントディストリビューションから作成された各ディストリビューションテナントには、独自のドメインがあります。

1. ディストリビューションテナントは、マルチテナントディストリビューションの作成時に CloudFront が作成した接続グループに自動的に追加されます。接続グループは、ビューワーリクエストを CloudFront ネットワークに接続する方法を制御します。

![\[マルチテナントディストリビューションがディストリビューションテナントと連携する方法。\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/images/template_distribution.png)


マルチテナントディストリビューションの作成手順の詳細については、「[コンソールに CloudFront ディストリビューションを作成する](distribution-web-creating-console.md#create-console-distribution)」を参照してください。

## 用語
<a name="template-distributions-concepts"></a>

以下の概念では、マルチテナントディストリビューションのコンポーネントについて説明します。

**マルチテナントディストリビューション**  
キャッシュ動作、セキュリティ保護、オリジンなど、すべてのディストリビューションテナントのすべての共有構成設定を指定するブループリント、マルチテナントディストリビューション。マルチテナントディストリビューションは、トラフィックを直接処理することはできません。接続グループおよびディストリビューションテナントと組み合わせて使用する必要があります。

**標準ディストリビューション**  
マルチテナント機能を持たないディストリビューション。これらのディストリビューションは、単一のウェブサイトまたはアプリケーションをサポートするのに最適です。

**ディストリビューションテナント**  
ディストリビューションテナントは、マルチテナントディストリビューション設定を継承します。一部の設定は、ディストリビューションテナントレベルでカスタマイズできます。ディストリビューションテナントには有効な TLS 証明書が必要です。これは、ディストリビューションテナントドメインまたはサブドメインを対象とする限り、マルチテナントディストリビューションから継承できます。  
ディストリビューションテナントは、接続グループに関連付ける必要があります。CloudFront は、ディストリビューションテナントを作成するときに接続グループを作成し、その接続グループに任意のディストリビューションテナントを自動的に割り当てます。

**マルチテナンシー**  
マルチテナントディストリビューションを使用して、設定とインフラストラクチャを共有しながら、複数のドメイン間でコンテンツを提供できます。このアプローチにより、さまざまなドメイン (テナントと呼ばれる) が、独自のカスタマイズを維持しながら、マルチテナントディストリビューションから共通の設定を共有できます。

**接続グループ**  
ビューワーにコンテンツを提供する CloudFront ルーティングエンドポイントを提供します。各ディストリビューションテナントを接続グループに関連付けて、ディストリビューションテナントドメインまたはサブドメイン用に作成した CNAME レコードに対応する CloudFront ルーティングエンドポイントを取得する必要があります。接続グループは、複数のディストリビューションテナント間で共有できます。接続グループは、IPv6 やエニーキャスト IP リスト設定など、ディストリビューションテナントのルーティング設定を管理します。

**パラメータ**  
オリジンパスやドメイン名など、プレースホルダー値のキーと値のペアのリスト。マルチテナントディストリビューションでパラメータを定義し、それらのパラメータの値をディストリビューションテナントレベルで指定できます。ディストリビューションテナントにパラメータ値を入力する必要があるかどうかを選択します。  
ディストリビューションテナントでオプションパラメータの値を指定しない場合、マルチテナントディストリビューションのデフォルト値が値として使用されます。

**CloudFront ルーティングエンドポイント**  
`d123.cloudfront.net` などの接続グループの正規 DNS。ディストリビューションテナントドメインまたはサブドメインの CNAME レコードで使用されます。

**カスタマイズ**  
ディストリビューションテナントをカスタマイズして、マルチテナントディストリビューションとは*異なる*設定を使用できます。ディストリビューションテナントごとに、異なる AWS WAF ウェブアクセスコントロールリスト (ACL)、TLS 証明書、地理的制限を指定できます。

## サポートされていない 機能
<a name="unsupported-saas"></a>

次の機能は、マルチテナントディストリビューションでは使用できません。標準ディストリビューションと同じ設定を使用して、新しいマルチテナントディストリビューションを作成する場合は、一部の設定は使用できないことに注意してください。

**注意事項**  
現在、AWS Firewall Manager ポリシーは標準ディストリビューションにのみ適用されます。Firewall Manager は、今後のリリースでマルチテナントディストリビューションのサポートを追加します。
標準ディストリビューションとは異なり、*ディストリビューションテナント*レベルでドメイン名 (エイリアス) を指定します。詳細については、「[CloudFront ディストリビューションテナントの証明書をリクエストする](managed-cloudfront-certificates.md)」および「[CreateDistributionTenant](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistributionTenant.html) API オペレーション」を参照してください。
+ [継続的デプロイ](continuous-deployment.md)
+ [オリジンアクセスアイデンティティ (OAI)](private-content-restricting-access-to-s3.md#private-content-restricting-access-to-s3-oai) – 代わりに[オリジンアクセスコントロール (OAC)](private-content-restricting-access-to-origin.md) を使用します。
+ [専用 IP カスタム SSL サポート](DownloadDistValuesGeneral.md#DownloadDistValuesClientsSupported) – `sni-only` メソッドのみがサポートされています。
+ [AWS WAF Classic (V1) ウェブ ACL](DownloadDistValuesGeneral.md#DownloadDistValuesWAFWebACL) – AWS WAF V2 ウェブ ACL のみがサポートされています。
+ [標準ログ記録 (レガシー)](standard-logging-legacy-s3.md)
+ [最小 TTL](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMinTTL)
+ [デフォルト TTL](DownloadDistValuesCacheBehavior.md#DownloadDistValuesDefaultTTL)
+ [最大 TTL](DownloadDistValuesCacheBehavior.md#DownloadDistValuesMaxTTL)
+ [ForwardedValues](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ForwardedValues.html)
+ [PriceClass](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DistributionConfig.html)
+ [信頼された署名者](DownloadDistValuesCacheBehavior.md#DownloadDistValuesTrustedSigners)
+ [スムーズストリーミング](DownloadDistValuesCacheBehavior.md#DownloadDistValuesSmoothStreaming)
+ [AWS Identity and Access Management (IAM) サーバー証明書](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html)
+ [専用 IP アドレス](cnames-https-dedicated-ip-or-sni.md#cnames-https-dedicated-ip)
+ [最小プロトコルバージョン SSLv3](DownloadDistValuesGeneral.md#DownloadDistValues-security-policy)

以下の設定は、マルチテナントディストリビューションまたはディストリビューションテナントでは設定できません。代わりに、接続グループに必要な値を設定します。接続グループに関連付けられているすべてのディストリビューションテナントは、これらの設定を使用します。詳細については、「[カスタム接続グループを作成する (オプション)](custom-connection-group.md)」を参照してください。
+ [IPv6 を有効にする (ビューワーリクエスト)](DownloadDistValuesGeneral.md#DownloadDistValuesEnableIPv6)
+ [エニーキャスト静的 IP リスト](request-static-ips.md)

# ディストリビューションテナントのカスタマイズ
<a name="tenant-customization"></a>

マルチテナントディストリビューションを使用する場合、ディストリビューションテナントはマルチテナントディストリビューション設定を継承します。ただし、一部の設定はディストリビューションテナントレベルでカスタマイズできます。

以下をカスタマイズできます。
+ **パラメータ** – パラメータは、オリジンドメインまたはオリジンパスに使用できるキーと値のペアです。「[ディストリビューションテナントとパラメータが連携する方法](#tenant-customize-parameters)」を参照してください。
+ **AWS WAF ウェブ ACL (V2)** – ディストリビューションテナントに別のウェブ ACL を指定できます。これにより、マルチテナントディストリビューションに使用されるウェブ ACL が*上書き*されます。特定のディストリビューションテナントに対してこの設定を無効にすることもできます。つまり、ディストリビューションテナントはマルチテナントディストリビューションからウェブ ACL 保護を継承しません。詳細については、「[AWS WAF ウェブ ACL](DownloadDistValuesGeneral.md#DownloadDistValuesWAFWebACL)」を参照してください。
+ **地理的制限** – ディストリビューションテナントに指定する地理的制限は、マルチテナントディストリビューションの地理的制限を*上書き*します。例えば、マルチテナントディストリビューションでドイツ (DE) をブロックすると、関連するすべてのディストリビューションテナントも DE をブロックします。ただし、特定のディストリビューションテナントに対して DE を許可すると、そのディストリビューションテナント設定はマルチテナントディストリビューションの設定を上書きします。詳細については、「[コンテンツの地理的配分を制限する](georestrictions.md)」を参照してください。
+ **無効化パス** – ディストリビューションテナントに対して無効化するコンテンツへのファイルパスを指定します。詳細については、「[ファイルを無効化する](Invalidation_Requests.md)」を参照してください。
+ **カスタム TLS 証明書** – ディストリビューションテナントに指定する AWS Certificate Manager (ACM) 証明書は、マルチテナントディストリビューションで提供される証明書を補足するものです。ただし、同じドメインがマルチテナントディストリビューションおよびディストリビューションの両方のテナント証明書でカバーされている場合は、テナント証明書が使用されます。詳細については、「[CloudFront ディストリビューションテナントの証明書をリクエストする](managed-cloudfront-certificates.md)」を参照してください。
+ **ドメイン名** – ディストリビューションテナントごとに少なくとも 1 つのドメイン名を指定する必要があります。

## ディストリビューションテナントとパラメータが連携する方法
<a name="tenant-customize-parameters"></a>

パラメータは、プレースホルダー値に使用できるキーと値のペアです。マルチテナントディストリビューションで使用するパラメータを定義し、それらが必要かどうかを指定します。

マルチテナントディストリビューションでパラメータを定義するときは、それらのパラメータをディストリビューションテナントレベルで入力する必要があるかどうかを選択します。
+ マルチテナントディストリビューションで*必要な*パラメータを定義する場合は、ディストリビューションテナントレベルでパラメータを入力する必要があります。(これらは継承されません)。
+ パラメータが*必要でない*場合は、ディストリビューションテナントによって継承されるマルチテナントディストリビューションでデフォルト値を指定できます。

次のプロパティでパラメータを使用できます。
+ オリジンドメイン名
+ オリジンのパス

マルチテナントディストリビューションでは、前述のプロパティごとに最大 2 つのパラメータを定義できます。

## パラメータの例
<a name="examples-parameters"></a>

ドメイン名とオリジンパスのパラメータの使用については、次の例を参照してください。

**ドメイン名パラメータ**

マルチテナントディストリビューション設定では、次の例のようにオリジンドメイン名のパラメータを定義できます。

**Amazon S3**
+ `{{parameter1}}.amzn-s3-demo-logging-bucket.s3.us-east-1.amazonaws.com`
+ `{{parameter1}}–amzn-s3-demo-logging-bucket.s3.us-east-1.amazonaws.com`

**カスタムオリジン**
+ `{{parameter1}}.lambda-url.us-east-1.on.aws`
+ `{{parameter1}}.mediapackagev2.ap-south-1.amazonaws.com`

ディストリビューションテナントを作成するときは、`parameter1` に使用する値を指定します。

```
"Parameters": [
  {
    "Name": "parameter1",
    "Value": "mycompany-website"
  }
]
```

マルチテナントディストリビューションで指定した前の例を使用して、ディストリビューションテナントのオリジンドメイン名は次のように解決されます。
+ `mycompany-website.amzn-s3-demo-bucket3.s3.us-east-1.amazonaws.com`
+ `mycompany-website–amzn-s3-demo-bucket3.s3.us-east-1.amazonaws.com`
+ `mycompany-website.lambda-url.us-east-1.on.aws`
+ `mycompany-website.mediapackagev2.ap-south-1.amazonaws.com`

**オリジンパスパラメータ**

同様に、次の例のように、マルチテナントディストリビューションでオリジンパスのパラメータを定義できます。
+ `/{{parameter2}}`
+ `/{{parameter2}}/test`
+ `/public/{{parameter2}}/test`
+ `/search?name={{parameter2}}`

ディストリビューションテナントを作成するときは、`parameter2` に使用する値を指定します。

```
"Parameters": [
  {
    "Name": "parameter2",
    "Value": "myBrand"
  }
]
```

マルチテナントディストリビューションで指定した前の例を使用して、ディストリビューションテナントのオリジンパスは次のように解決されます。
+ `/myBrand`
+ `/myBrand/test`
+ `/public/myBrand/test`
+ `/search?name=myBrand`



**Example 例**  
顧客用に複数のウェブサイト (テナント) を作成し、各ディストリビューションテナントリソースが正しい値を使用していることを確認する必要があります。  

1. マルチテナントディストリビューションを作成し、ディストリビューションテナント設定に 2 つのパラメータを含めます。

1. オリジンドメイン名には、*customer-name* という名前のパラメータを作成し、必須であることを指定します。S3 バケットの前にパラメータを入力すると、以下のように表示されます。

   `{{customer-name}}.amzn-s3-demo-bucket3.s3.us-east-1.amazonaws.com`.

1. オリジンパスの場合、*my-theme* という名前の 2 番目のパラメータを作成し、デフォルト値は *basic* で、オプションとして指定します。オリジンパスは `/{{my-theme}}` と表示されます。

1. ディストリビューションテナントを作成する場合。
   + ドメイン名は、マルチテナントディストリビューションで必須としてマークされているため、*customer-name*の値を指定する必要があります。
   + オリジンパスでは、オプションで *my-theme* の値を指定するか、デフォルト値を使用できます。

# CloudFront ディストリビューションテナントの証明書をリクエストする
<a name="managed-cloudfront-certificates"></a>

ディストリビューションテナントを作成すると、テナントはマルチテナントディストリビューションから共有 AWS Certificate Manager (ACM) 証明書を継承します。この共有証明書は、マルチテナントディストリビューションに関連付けられているすべてのテナントに HTTPS を提供します。

CloudFront ディストリビューションテナントを作成または更新してドメインを追加するときは、ACM からマネージド CloudFront 証明書を追加できます。その後、CloudFront はユーザーに代わって ACM から HTTP 検証済み証明書を取得します。このテナントレベルの ACM 証明書は、カスタムドメイン設定に使用できます。CloudFront は更新ワークフローを合理化し、証明書を最新の状態に保ち、安全なコンテンツ配信を中断させないようにします。

**注記**  
証明書は所有していますが、CloudFront リソースで*のみ*使用でき、プライベートキーをエクスポートすることは*できません*。

証明書は、ディストリビューションテナントを作成または更新するときにリクエストできます。

**Topics**
+ [ドメインと証明書を追加する (ディストリビューションテナント)](#vanity-domain-tls-tenant)
+ [ドメイン設定を完了する](#complete-domain-ownership)
+ [ドメインを CloudFront にポイントする](#point-domains-to-cloudfront)
+ [ドメインに関する考慮事項 (ディストリビューションテナント)](#tenant-domain-considerations)
+ [ワイルドカードドメイン (ディストリビューションテナント)](#tenant-wildcard-domains)

## ドメインと証明書を追加する (ディストリビューションテナント)
<a name="vanity-domain-tls-tenant"></a>

次の手順では、ドメインを追加し、ディストリビューションテナントの証明書を更新する方法を示します。

**ドメインと証明書を追加するには (ディストリビューションテナント)**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. **[SaaS]** で、**[ディストリビューションテナント]** を選択します。

1. ディストリビューションテナントを検索します。検索バーのドロップダウンメニューを使用して、ドメイン、名前、ディストリビューション ID、証明書 ID、接続グループ ID、またはウェブ ACL ID でフィルタリングします。

1. ディストリビューションテナント名を選択します。

1. **[ドメイン]** で、**[ドメインの管理]** を選択します。

1. **[証明書]** で、ディストリビューションテナントの **[カスタム TLS 証明書]** が必要かどうかを選択します。証明書は、ドメイン名を使用する権限があるかどうかを検証します。証明書は、米国東部 (バージニア北部) リージョンに存在する必要があります。

1. **[ドメイン]** で、**[ドメインの追加]** を選択し、ドメイン名を入力します。ドメインによっては、入力したドメイン名の下に次のメッセージが表示されます。
   + このドメインは証明書の対象です。
   + このドメインは証明書の対象であり、検証保留中です。
   + このドメインは証明書の対象ではありません。(ドメインの所有権を検証する必要があります。)

1. **[ディストリビューションテナントを更新]** を選択します。

   テナントの詳細ページの **[ドメイン]** の下に、次のフィールドが表示されます。
   + **[ドメイン所有権]** – ドメイン所有権のステータス。CloudFront がコンテンツを提供する前に、TLS 証明書の検証を使用して、ドメインの所有権を検証する必要があります。
   + **[DNS ステータス]** – トラフィックを正しくルーティングするには、ドメインの DNS レコードが CloudFront を指す必要があります。

1. ドメインの所有権が確認されていない場合は、テナントの詳細ページの **[ドメイン]** で、**[ドメイン設定の完了]** を選択し、次の手順を実行して DNS レコードが CloudFront ドメイン名を指すようにします。

## ドメイン設定を完了する
<a name="complete-domain-ownership"></a>

以下の手順に従って、ディストリビューションテナントのドメインを所有していることを検証します。ドメインに応じて、次のいずれかの手順を選択します。

**注記**  
ドメインが Amazon Route 53 エイリアスレコードで CloudFront を既に指している場合は、ドメイン名の前に `_cf-challenge.` を使用して、DNS TXT レコードを追加する必要があります。この TXT レコードは、ドメイン名が CloudFront にリンクされていることを検証します。ドメインごとにこの手順を繰り返します。以下に、TXT レコードを更新する方法を示します。  
レコード名: `_cf-challenge.DomainName`
レコードタイプ: `TXT`
レコード値: `CloudFrontRoutingEndpoint`
例えば、TXT コードは次のように表記されます。`_cf-challenge.example.com TXT d111111abcdef8.cloudfront.net`  
CloudFront ルーティングエンドポイントは、ディストリビューションテナントの詳細ページでコンソールで検索するか、「*Amazon CloudFront API リファレンス*」の [ListConnectionGroups](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListConnectionGroups.html) API アクションを使用して検索できます。

**ヒント**  
SaaS プロバイダーで、顧客 (テナント) が TXT レコードを DNS に直接追加する必要なく証明書の発行を許可する場合は、次の操作を行います。  
ドメイン `example-saas-provider.com` を所有している場合は、`customer-123.example-saas-provider.com` などのサブドメインをテナントに割り当てます。
DNS で、`_cf-challenge.customer-123.example-saas-provider.com TXT d111111abcdef8.cloudfront.net` TXT レコードを DNS 設定に追加します。
次に、顧客 (テナント) は独自の DNS レコードを更新して、ドメイン名を指定したサブドメインにマッピングできます。  
`www.customer-domain.com CNAME customer-123.example-saas-provider.com`

------
#### [ I have existing traffic ]

ドメインがダウンタイムを許容できない場合は、このオプションを選択します。オリジン/ウェブサーバーにアクセスできる必要があります。ドメインの所有権を検証するには、次の手順に従います。

**既存のトラフィックがある場合にドメイン設定を完了するには**

1. **[ウェブトラフィックを指定する]** で、**[既存のトラフィックがある]** を選択し、**[次へ]** を選択します。

1. **[ドメインの所有権を検証する]** には、次のいずれかのオプションを選択します。
   + **[既存の証明書を使用する]** – 既存の ACM 証明書を検索するか、リストされているドメインを対象とする証明書 ARN を入力します。
   + **[手動ファイルアップロード]** – ウェブサーバーにファイルをアップロードするための直接アクセス権がある場合に選択します。

     ドメインごとに、**[トークンの場所]** から検証トークンを含むプレーンテキストファイルを作成し、既存のサーバーの指定された **[ファイルパス]** でオリジンにアップロードします。このファイルへのパスは次の例のようになります。`/.well-known/pki-validation/acm_9c2a7b2ec0524d09fa6013efb73ad123.txt`。このステップを完了すると、ACM はトークンを検証し、ドメインの TLS 証明書を発行します。
   + **[HTTP リダイレクト]** – ウェブサーバーにファイルをアップロードするための直接アクセスがない場合、または CDN またはプロキシサービスを使用している場合に選択します。

     ドメインごとに、既存のサーバーに 301 リダイレクトを作成します。**[リダイレクト元]** の下の既知のパスをコピーし、**[リダイレクト先]** の下の指定された証明書エンドポイントをポイントします。リダイレクトは次の例のようになります。

     ```
     If the URL matches: example.com/.well-known/pki-validation/leabe938a4fe077b31e1ff62b781c123.txt
     Then the settings are:Forwarding URL
     Then 301 Permanent Redirect:To validation.us-east-1.acm-validations.aws/123456789012/.well-known/pki-validation/leabe938a4fe077b31e1ff62b781c123.txt
     ```
**注記**  
**[証明書ステータスの確認]** を選択して、ACM がドメインの証明書を発行するタイミングを検証できます。

1. [**次へ**] を選択します。

1. 「[ドメインを CloudFront にポイントする](#point-domains-to-cloudfront)」のステップを完了します。

------
#### [ I don't have traffic ]

新しいドメインを追加する場合は、このオプションを選択します。CloudFront は証明書の検証を管理します。

**トラフィックがない場合にドメイン設定を完了するには**

1. **[ウェブトラフィックを指定する]** で、**[トラフィックがまだありません]** を選択します。

1. ドメイン名ごとに、「[ドメインを CloudFront にポイントする](#point-domains-to-cloudfront)」の手順を完了します。

1. 各ドメイン名の DNS レコードを更新したら、**[次へ]** を選択します。

1. 証明書が発行されるまで待ちます。
**注記**  
**[証明書ステータスの確認]** を選択して、ACM がドメインの証明書を発行するタイミングを検証できます。

1. [**Submit**] を選択してください。

------

## ドメインを CloudFront にポイントする
<a name="point-domains-to-cloudfront"></a>

DNS レコードを更新して、各ドメインから CloudFront ルーティングエンドポイントにトラフィックをルーティングします。複数のドメイン名を持つことができますが、すべてをこのエンドポイントに解決する必要があります。

**ドメインを CloudFront にポイントするには**

1. d111111abcdef8.cloudfront.net などの CloudFront ルーティングエンドポイント値をコピーします。

1. DNS レコードを更新して、各ドメインから CloudFront ルーティングエンドポイントにトラフィックをルーティングします。

   1. ドメインレジストラまたは DNS プロバイダーの管理コンソールにサインインします。

   1. ドメインの DNS 管理セクションに移動します。
      + **サブドメインの場合** – CNAME レコードを作成します。例えば、次のようになります。
        + **名前** – サブドメイン (`www` や `app` など)
        + **値/ターゲット** – CloudFront ルーティングエンドポイント
        + **レコードタイプ** – CNAME
        + **TTL** – 3600 (またはユースケースに適したもの)
      + **apex/root ドメインの場合** – 標準の CNAME レコードをルートまたは apex ドメインレベルで使用できないため、一意の DNS 設定が必要です。ほとんどの DNS プロバイダーは ALIAS レコードをサポートしていないため、Route 53 で ALIAS レコードを作成することをお勧めします。例えば、次のようになります。
        + **名前** – apex ドメイン (`example.com` など)
        + **レコードタイプ** – A
        + **エイリアス** – はい
        + **エイリアスターゲット** – CloudFront ルーティングエンドポイント
        + **ルーティングポリシー** – シンプル (またはユースケースに適したもの)

   1. DNS の変更が伝播されたことを確認します。(これは通常、TTL の有効期限が切れたときに発生します。場合によっては 24～48 時間かかることがあります。) `dig` や `nslookup` などのツールを使用します。

      ```
      dig www.example.com
      # Should eventually return a CNAME pointing to your CloudFront routing endpoint
      ```

1. CloudFront コンソールに戻り、**[送信]** を選択します。ドメインがアクティブになると、CloudFront はドメインのステータスを更新して、ドメインがトラフィックを処理する準備ができていることを示します。

詳細については、DNS プロバイダーのドキュメントを参照してください。
+ [Cloudflare](https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/)
+ [ClouDNS](https://www.cloudns.net/wiki/article/9/)
+ [DNSimple](https://support.dnsimple.com/categories/dns/)
+ [Gandi.net](https://www.gandi.net/)
+ [GoDaddy](https://www.godaddy.com/help/manage-dns-records-680)
+ [Google Cloud DNS](https://cloud.google.com/dns/docs/records)
+ [Namecheap](https://www.namecheap.com/support/knowledgebase/article.aspx/767/10/how-to-change-dns-for-a-domain/)

## ドメインに関する考慮事項 (ディストリビューションテナント)
<a name="tenant-domain-considerations"></a>

ドメインがアクティブになると、ドメインコントロールが確立され、CloudFront はこのドメインに対するすべてのビューワーリクエストに応答します。一度アクティブ化すると、ドメインを非アクティブ化したり、非アクティブステータスに変更したりすることはできません。ドメインは、既に使用中の別の CloudFront リソースに関連付けることはできません。ドメインを別のディストリビューションに関連付けるには、[UpdateDomainAssociation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDomainAssociation.html) リクエストを使用して、ドメインを 1 つの CloudFront リソースから別のリソースに移動します。

ドメインが非アクティブの場合、CloudFront はドメインへのビューワーリクエストに応答しません。ドメインが非アクティブの間は、次の点に注意してください。
+ 保留中の証明書リクエストがある場合、CloudFront は既知のパスのリクエストに応答します。リクエストが保留中の間は、ドメインを他の CloudFront リソースに関連付けることはできません。
+ 保留中の証明書リクエストがない場合、CloudFront はドメインのリクエストに応答しません。ドメインを他の CloudFront リソースに関連付けることができます。
+ ディストリビューションテナントごとの*保留中の証明書リクエストは 1 つ*のみです。追加のドメインに対して別の証明書をリクエストする前に、既存の保留中のリクエストをキャンセルする必要があります。既存の証明書リクエストをキャンセルしても、関連付けられた ACM 証明書は削除されません。ACM API を使用してディストリビューションを削除できます。
+ 新しい証明書をディストリビューションテナントに適用すると、以前の証明書の関連付けが解除されます。証明書を再利用して、別のディストリビューションテナントのドメインをカバーできます。

DNS 検証済み証明書の更新と同様に、証明書の更新が成功すると通知されます。それ以外に何かする必要はありません。CloudFront はドメインの証明書の更新を自動的に管理します。

**注記**  
証明書リソースを作成または更新するために ACM API オペレーションを呼び出す必要はありません。[CreateDistributionTenant](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistributionTenant.html) および [UpdateDistributionTenant](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistributionTenant.html) API オペレーションを使用して、マネージド証明書リクエストの詳細を指定することで、証明書を管理できます。

## ワイルドカードドメイン (ディストリビューションテナント)
<a name="tenant-wildcard-domains"></a>

ワイルドカードドメインは、以下の状況のディストリビューションテナントでサポートされています。
+ 親マルチテナントディストリビューションから継承された共有証明書にワイルドカードが含まれている場合
+ ディストリビューションテナントに有効な既存のカスタム TLS 証明書を使用する場合

# カスタム接続グループを作成する (オプション)
<a name="custom-connection-group"></a>

デフォルトでは、CloudFront はマルチテナントディストリビューションを作成するときに接続グループを作成します。接続グループは、コンテンツに対するビューワーリクエストが CloudFront に接続する方法を制御します。

デフォルトの接続グループを使用することをお勧めします。ただし、エンタープライズアプリケーションを分離したり、ディストリビューションテナントのグループを個別に管理する必要がある場合は、カスタム接続グループを作成することができます。例えば、DDoS 攻撃が発生した場合、ディストリビューションテナントを別の接続グループに移動する必要がある場合があります。これにより、他のディストリビューションテナントを影響から保護できます。

## カスタム接続グループを作成する (オプション)
<a name="create-connection-group"></a>

必要に応じて、ディストリビューションテナントのカスタム接続グループを作成できます。

**カスタム接続グループを作成するには (オプション)**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで **[設定]** を選択します。

1. **[接続グループ]** 設定をオンにします。

1. ナビゲーションペインで **[接続グループ]** を選択し、**[接続グループの作成]** を選択します。

1. **[接続グループ名]** に、接続グループの名前を入力します。接続グループを作成した後で、この名前を更新することはできません。

1. **[IPv6]** の場合、この IP プロトコルを有効にするかどうかを指定します。詳細については、「[IPv6 を有効にする (ビューワーリクエスト)](DownloadDistValuesGeneral.md#DownloadDistValuesEnableIPv6)」を参照してください。

1. **[エニーキャスト静的 IP リスト]** で、一連の IP アドレスからディストリビューションテナントにトラフィックを配信するかどうかを指定します。詳細については、「[エニーキャスト静的 IP リスト](request-static-ips.md)」を参照してください。

1. (オプション) 接続グループにタグを追加します。

1. **[接続グループの作成]** を選択します。

接続グループが作成されると、指定した設定と ARN とエンドポイントを確認できます。
+ ARN は次の例のようになります。`arn:aws:cloudfront::123456789012:connection-group/cg_2uVbA9KeWaADTbKzhj9lcKDoM25`
+ エンドポイントは次の例のようになります。d111111abcdef8.cloudfront.net

カスタム接続グループは、作成後に編集または削除できます。接続グループを削除する前に、関連するすべてのディストリビューションテナントを削除する必要があります。マルチテナントディストリビューションの作成時に CloudFront が作成したデフォルトの接続グループを削除することはできません。

**重要**  
ディストリビューションテナントの接続グループを変更すると、CloudFront は引き続きディストリビューションテナントのトラフィックを伝送しますが、レイテンシーが増加します。新しい接続グループから CloudFront ルーティングエンドポイントを使用するように、ディストリビューションテナントの DNS レコードを更新することをお勧めします。  
DNS レコードを更新するまで、CloudFront はウェブサイトが現在 DNS で指しているルーティングエンドポイントに定義されている設定に基づいてルーティングします。例えば、デフォルトの接続グループがエニーキャスト静的 IP を使用していないが、新しいカスタム接続グループが使用しているとします。CloudFront がカスタム接続グループのディストリビューションテナントにエニーキャスト静的 IP を使用する前に、DNS レコードを更新する必要があります。

# マルチテナントディストリビューションに移行する
<a name="template-migrate-distribution"></a>

CloudFront 標準ディストリビューションがあり、マルチテナントディストリビューションに移行する場合は、次の手順に従います。

**標準ディストリビューションからマルチテナントディストリビューションに移行するには**

1. 「[サポートされていない 機能](distribution-config-options.md#unsupported-saas)」を確認します。

1. サポートされていない機能を除く、標準ディストリビューションと同じ設定でマルチテナントディストリビューションを作成します。詳細については、「[コンソールに CloudFront ディストリビューションを作成する](distribution-web-creating-console.md#create-console-distribution)」を参照してください。

1. ディストリビューションテナントを作成し、所有する代替ドメイン名を追加します。
**警告**  
標準ディストリビューションに関連付けられている現在のドメイン名は使用*しない*でください。代わりにプレースホルダードメインを追加します。後でドメインを移動します。ディストリビューションテナントの作成については、「[コンソールに CloudFront ディストリビューションを作成する](distribution-web-creating-console.md#create-console-distribution)」を参照してください。

1. ディストリビューションテナントドメインの既存の証明書を指定します。これは、プレースホルダードメインと移動するドメインを対象とする証明書です。

1. コンソールのディストリビューションテナントの詳細ページから、CloudFront ルーティングエンドポイントをコピーします。または、「*Amazon CloudFront API リファレンス*」の [ListConnectionGroups](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListConnectionGroups.html) API アクションを使用して検索することもできます。

1. ドメインの所有権を確認するには、ディストリビューションテナントの CloudFront ルーティングエンドポイントを指すアンダースコア ( \$1 ) プレフィックスを持つ DCV TXT レコードを作成します。詳細については、「[ドメインを CloudFront にポイントする](managed-cloudfront-certificates.md#point-domains-to-cloudfront)」を参照してください。

1. 変更が伝播済みの場合、以前に標準ディストリビューションに使用したドメインを使用するようにディストリビューションテナントを更新します。
   + **コンソール** – 詳細な手順については、「[ドメインと証明書を追加する (ディストリビューションテナント)](managed-cloudfront-certificates.md#vanity-domain-tls-tenant)」を参照してください。
   + **API** – 「*Amazon CloudFront API リファレンス*」の [UpdateDomainAssociation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDomainAssociation.html) API アクションを使用します。
**重要**  
これにより、コンテンツのキャッシュキーがリセットされます。その後、CloudFront は新しいキャッシュキーを使用してコンテンツのキャッシュを開始します。詳細については、「[キャッシュキーを理解する](understanding-the-cache-key.md)」を参照してください。

1. DNS レコードを更新して、ドメインをディストリビューションテナントの CloudFront ルーティングエンドポイントにポイントします。このステップを完了すると、ドメインがディストリビューションテナントにトラフィックを提供する準備が整います。詳細については、「[ドメインを CloudFront にポイントする](managed-cloudfront-certificates.md#point-domains-to-cloudfront)」を参照してください。

1. (オプション) ドメインをディストリビューションテナントに正常に移行したら、ディストリビューションテナントのドメイン名をカバーする別の CloudFront マネージド証明書を使用できます。マネージド証明書をリクエストするには、別の TXT レコードを作成して証明書を発行し、「[ドメイン設定を完了する](managed-cloudfront-certificates.md#complete-domain-ownership)」のステップに従います。