

# CloudFront の継続的デプロイを使用して CDN 設定の変更を安全にテストする
<a name="continuous-deployment"></a>

Amazon CloudFront の*継続的デプロイ*を使用すると、最初に本番トラフィックのサブセットでテストすることで、CDN 設定に変更を安全にデプロイできます。*ステージングディストリビューション*と*継続的デプロイポリシー*を使用して、実際 (本番環境) のビューワーからのトラフィックを新しい CDN 設定に送信し、正常に動作することを検証できます。新しい設定のパフォーマンスをリアルタイムでモニタリングし、準備ができたら、新しい設定を昇格させてすべてのトラフィックを*プライマリディストリビューション*で処理できます。

次の図は、CloudFront の継続的デプロイを使用するメリットを示しています。これを使用しない場合は、シミュレートしたトラフィックで CDN 設定の変更をテストする必要があります。継続的デプロイでは、本番トラフィックのサブセットで変更をテストし、準備ができたら、変更をプライマリディストリビューションに昇格させることができます。

![\[本番稼働用トラフィックをステージングディストリビューションに送信する CloudFront 継続的デプロイのグラフィックス。\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/images/cloudfront-continuous-deployment.png)


継続的デプロイの使用の詳細については、以下のトピックを参照してください。

**Topics**
+ [

# CloudFront の継続的デプロイのワークフロー
](continuous-deployment-workflow.md)
+ [

# ステージングディストリビューションと継続的デプロイポリシーを使用する
](working-with-staging-distribution-continuous-deployment-policy.md)
+ [

# ステージングディストリビューションをモニタリングする
](monitoring-staging-distribution.md)
+ [

# 継続的デプロイの仕組みについて説明します。
](understanding-continuous-deployment.md)
+ [

# 継続的デプロイに関するクォータとその他の考慮事項
](continuous-deployment-quotas-considerations.md)

# CloudFront の継続的デプロイのワークフロー
<a name="continuous-deployment-workflow"></a>

次の高レベルのワークフローでは、CloudFront の継続的デプロイを使用して、設定の変更を安全にテストしてデプロイする方法を説明しています。

1. *プライマリディストリビューション*として使用するディストリビューションを選択します。プライマリーディストリビューションは、本番トラフィックを現在処理しているディストリビューションです。

1. プライマリディストリビューションから、*ステージングディストリビューション*を作成します。ステージングディストリビューションは、プライマリディストリビューションのコピーとして開始します。

1. *継続的デプロイポリシー*内に*トラフィック設定*を作成し、それをプライマリディストリビューションにアタッチします。これにより、CloudFront がトラフィックをステージングディストリビューションにルーティングする方法が決まります。ステージングディストリビューションにリクエストをルーティングする方法の詳細については、「[ステージングディストリビューションにリクエストをルーティングする](understanding-continuous-deployment.md#understanding-continuous-deployment-routing)」を参照してください。

1. ステージングディストリビューションの設定を更新します。更新できる設定の詳細については、「[プライマリーディストリビューションとステージングディストリビューションを更新する](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)」を参照してください。

1. ステージングディストリビューションをモニタリングして、設定の変更が正常に動作するかどうかを確認します。ステージングディストリビューションのモニタリングの詳細については、「[ステージングディストリビューションをモニタリングする](monitoring-staging-distribution.md)」を参照してください。

   ステージングディストリビューションをモニタリングしながら、以下のことを実行できます。
   + ステージングディストリビューションの設定を再度更新し、設定の変更のテストを続行します。
   + 継続的デプロイポリシー (トラフィック設定) を更新して、ステージングディストリビューションに送信するトラフィックを増減します。

1. ステージングディストリビューションのパフォーマンスに満足したら、ステージングディストリビューションの設定をプライマリディストリビューションに*昇格*させます。これにより、ステージングディストリビューションの設定がプライマリディストリビューションにコピーされます。これに伴って、継続的デプロイポリシーが無効になるため、CloudFront はすべてのトラフィックをプライマリディストリビューションにルーティングします。

オートメーションを構築することで、ステージングディストリビューションのパフォーマンスをモニタリングして (ステップ 5)、特定の基準を満たしたときに自動的に設定を昇格させる (ステップ 6) ことができます。

設定を昇格させると、設定の変更を次回テストするときに、同じステージングディストリビューションを再利用できます。

CloudFront コンソール、AWS CLI、または CloudFront API でのステージングディストリビューションと継続的デプロイポリシーの使用方法の詳細については、次のセクションを参照してください。

# ステージングディストリビューションと継続的デプロイポリシーを使用する
<a name="working-with-staging-distribution-continuous-deployment-policy"></a>

ステージングディストリビューションと継続的デプロイポリシーは、CloudFront コンソール、AWS Command Line Interface (AWS CLI)、または CloudFront API で作成、更新、変更できます。

## ステージングディストリビューションと継続的デプロイポリシーを作成する
<a name="create-staging-distribution-continuous-deployment-policy"></a>

次の手順では、ステージングディストリビューションと継続的デプロイポリシーを作成する方法を示します。

------
#### [ Console ]

AWS マネジメントコンソール を使用して、ステージングディストリビューションと継続的デプロイポリシーを作成できます。

**ステージングディストリビューションと継続的デプロイポリシーを作成するには (コンソール)**

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

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

1. *プライマリディストリビューション*として使用するディストリビューションを選択します。プライマリーディストリビューションは、本番トラフィックを現在処理しているディストリビューションであり、これを元にしてステージングディストリビューションを作成します。

1. **[Continuous deployment]** (継続的デプロイ) セクションで、**[Create staging distribution]** (ステージングディストリビューションを作成) を選択します。**[Create staging distribution]** (ステージングディストリビューションを作成) ウィザードが開きます。

1. **[Create staging distribution]** (ステージングディストリビューションを作成) ウィザードで、以下の操作を行います。

   1. (オプション) ステージングディストリビューションの説明を入力します。

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

   1. ステージングディストリビューションの設定を変更します。更新できる設定の詳細については、「[プライマリーディストリビューションとステージングディストリビューションを更新する](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)」を参照してください。

      ステージングディストリビューションの設定の変更が完了したら、**[Next]** (次へ) を選択します。

   1. コンソールを使用して **[Traffic configuration]** (トラフィック設定) を指定します。これにより、CloudFront がトラフィックをステージングディストリビューションにルーティングする方法が決まります (CloudFront はトラフィック設定を*継続的デプロイポリシー*内に保存します)。

      **[Traffic configuration]** (トラフィック設定) のオプションの詳細については、「[ステージングディストリビューションにリクエストをルーティングする](understanding-continuous-deployment.md#understanding-continuous-deployment-routing)」を参照してください。

      **[Traffic configuration]** (トラフィック設定) が完了したら、**[Next]** (次へ) を選択します。

   1. トラフィック設定を含む、ステージングディストリビューションの設定を確認したら、**[Create staging distribution]** (ステージングディストリビューションを作成) を選択します。

CloudFront コンソールで **[Create staging distribution]** (ステージングディストリビューションを作成) ウィザードを完了すると、CloudFront は以下を実行します。
+ ステップ 5c で指定した設定を使用して、ステージングディストリビューションを作成します。
+ ステップ 5d で指定したトラフィック設定を使用して、継続的デプロイポリシーを作成します。
+ ステージングディストリビューションの作成元のプライマリディストリビューションに継続的デプロイポリシーをアタッチします。

継続的デプロイポリシーをアタッチした、プライマリディストリビューションの設定をエッジロケーションにデプロイすると、CloudFront はトラフィック設定に基づいてトラフィックの指定された部分をステージングディストリビューションに送信し始めます。

------
#### [ CLI ]

ステージングディストリビューションと継続的デプロイポリシーを AWS CLI で作成するには、次の手順に従います。

**ステージングディストリビューションを作成するには (CLI)**

1. **aws cloudfront get-distribution** コマンドと **grep** コマンドを一緒に使用して、*プライマリディストリビューション*として使用するディストリビューションの `ETag` 値を取得します。プライマリーディストリビューションは、本番トラフィックを現在処理しているディストリビューションであり、これを元にしてステージングディストリビューションを作成します。

   次のコマンドでは、例を示しています。次の例では、*primary\$1distribution\$1ID* をプライマリディストリビューションの ID に置き換えます。

   ```
   aws cloudfront get-distribution --id primary_distribution_ID | grep 'ETag'
   ```

   `ETag` 値をコピーします (次のステップで必要になります)。

1. **aws cloudfront copy-distribution** コマンドを使用してステージングディストリビューションを作成します。次のコマンド例では、読みやすくするためにエスケープ文字 (\$1) と改行を使用していますが、これらはコマンドから省略してください。次のコマンドの例で以下の操作を行います。
   + *primary\$1distribution\$1ID* をプライマリディストリビューションの ID に置き換えます。
   + *primary\$1distribution\$1ETag* をプライマリディストリビューションの `ETag` 値 (前のステップで取得したもの) に置き換えます。
   + (オプション) *CLI\$1example* を目的の発信者リファレンス ID に置き換えます。

   ```
   aws cloudfront copy-distribution --primary-distribution-id primary_distribution_ID \
                                    --if-match primary_distribution_ETag \
                                    --staging \
                                    --caller-reference 'CLI_example'
   ```

   コマンドの出力に、ステージングディストリビューションとその設定に関する情報が表示されます。ステージングディストリビューションの CloudFront ドメイン名をコピーします (次のステップで必要になります)。

**継続的デプロイポリシーを作成するには (CLI および入力ファイル)**

1. 次のコマンドを使用して、`continuous-deployment-policy.yaml` コマンドのすべての入力パラメータを含む、**create-continuous-deployment-policy** という名前のファイルを作成します。次のコマンドでは、読みやすくするためにエスケープ文字 (\$1) と改行を使用していますが、これらはコマンドから省略してください。

   ```
   aws cloudfront create-continuous-deployment-policy --generate-cli-skeleton yaml-input \
                                                      > continuous-deployment-policy.yaml
   ```

1. 先ほど作成した `continuous-deployment-policy.yaml` という名前のファイルを開きます。このファイルを編集して、必要な継続的デプロイポリシー設定を指定し、ファイルを保存します。ファイルは以下のように編集します。
   + `StagingDistributionDnsNames` セクションでの編集
     + `Quantity` の値を `1` に変更します。
     + `Items` に、ステージングディストリビューションの CloudFront ドメイン名 (前のステップで保存したもの) を貼り付けます。
   + `TrafficConfig` セクションでの編集
     + `Type` として、`SingleWeight` または `SingleHeader` を選択します。
     + 他のタイプの設定を削除します。例えば、重みベースのトラフィック設定が必要な場合は、`Type` を `SingleWeight` に設定し、`SingleHeaderConfig` 設定を削除します。
     + 重みベースのトラフィック設定を使用するには、`Weight` の値を `.01` (1%) から `.15` (15%) までの 10 進数に設定します。

     `TrafficConfig` のオプションの詳細については、「[ステージングディストリビューションにリクエストをルーティングする](understanding-continuous-deployment.md#understanding-continuous-deployment-routing)」および「[重みベースの設定におけるセッションの維持](understanding-continuous-deployment.md#understanding-continuous-deployment-sessions)」を参照してください。

1. 次のコマンドで `continuous-deployment-policy.yaml` ファイルの入力パラメータを使用し、継続的デプロイポリシーを作成します。

   ```
   aws cloudfront create-continuous-deployment-policy --cli-input-yaml file://continuous-deployment-policy.yaml
   ```

   コマンドの出力の `Id` 値をコピーします。これは継続的デプロイポリシー ID で、次のステップで必要になります。

**継続的デプロイポリシーをプライマリディストリビューションにアタッチするには (CLI および入力ファイル)**

1. 次のコマンドを使用して、プライマリディストリビューションの設定を `primary-distribution.yaml` という名前のファイルに保存します。*primary\$1distribution\$1ID* をプライマリディストリビューションの ID に置き換えます。

   ```
   aws cloudfront get-distribution-config --id primary_distribution_ID --output yaml > primary-distribution.yaml
   ```

1. 先ほど作成した `primary-distribution.yaml` という名前のファイルを開きます。ファイルを編集し、以下の変更を加えます。
   + 継続的デプロイポリシー ID (前のステップでコピーしたもの) を `ContinuousDeploymentPolicyId` フィールドに貼り付けます。
   + `ETag` フィールドの名前を `IfMatch` に変更します。ただし、フィールドの値は変更しないでください。

   完了したら、ファイルを保存します。

1. 次のコマンドを使用して、継続的デプロイポリシーを使用するようにプライマリディストリビューションを更新します。*primary\$1distribution\$1ID* をプライマリディストリビューションの ID に置き換えます。

   ```
   aws cloudfront update-distribution --id primary_distribution_ID --cli-input-yaml file://primary-distribution.yaml
   ```

継続的デプロイポリシーをアタッチした、プライマリディストリビューションの設定をエッジロケーションにデプロイすると、CloudFront はトラフィック設定に基づいてトラフィックの指定された部分をステージングディストリビューションに送信し始めます。

------
#### [ API ]

CloudFront API を使用してステージングポリシーと継続的デプロイポリシーを作成するには、以下の API オペレーションを使用します。
+ [CopyDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CopyDistribution.html)
+ [CreateContinuousDeploymentPolicy](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateContinuousDeploymentPolicy.html)

これらの API コールで指定するフィールドの詳細については、以下を参照してください。
+ [ステージングディストリビューションにリクエストをルーティングする](understanding-continuous-deployment.md#understanding-continuous-deployment-routing)
+ [重みベースの設定におけるセッションの維持](understanding-continuous-deployment.md#understanding-continuous-deployment-sessions)
+ AWS SDK またはその他の API クライアントの API リファレンスドキュメント

ステージングディストリビューションと継続的デプロイポリシーを作成したら、プライマリディストリビューションで [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) を使用して、継続的デプロイポリシーをプライマリディストリビューションにアタッチします。

------

## ステージングディストリビューションを更新する
<a name="update-staging-distribution"></a>

次の手順では、ステージングディストリビューションと継続的デプロイポリシーを更新する方法を示します。

------
#### [ Console ]

プライマリディストリビューションとステージングディストリビューションの両方で特定の設定を更新できます。詳細については、「[プライマリーディストリビューションとステージングディストリビューションを更新する](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)」を参照してください。

**ステージングディストリビューションを更新するには (コンソール)**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

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

1. プライマリディストリビューションを選択します。これは、本番トラフィックを現在処理しているディストリビューションで、ステージングディストリビューションの作成元のディストリビューションです。

1. **[View staging distribution]** (ステージングディストリビューションを表示) を選択します。

1. コンソールを使用して、ステージングディストリビューションの設定を変更します。更新できる設定の詳細については、「[プライマリーディストリビューションとステージングディストリビューションを更新する](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)」を参照してください。

ステージングディストリビューションの設定をエッジロケーションにデプロイするとすぐに、ステージングディストリビューションにルーティングされた受信トラフィックに設定が適用されます。

------
#### [ CLI ]

**ステージングディストリビューションを更新するには (CLI および入力ファイル)**

1. 次のコマンドを使用して、ステージングディストリビューションの設定を `staging-distribution.yaml` という名前のファイルに保存します。*staging\$1distribution\$1ID* をステージングディストリビューションの ID に置き換えます。

   ```
   aws cloudfront get-distribution-config --id staging_distribution_ID --output yaml > staging-distribution.yaml
   ```

1. 先ほど作成した `staging-distribution.yaml` という名前のファイルを開きます。ファイルを編集し、以下の変更を加えます。
   + ステージングディストリビューションの設定を変更します。更新できる設定の詳細については、「[プライマリーディストリビューションとステージングディストリビューションを更新する](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)」を参照してください。
   + `ETag` フィールドの名前を `IfMatch` に変更します。ただし、フィールドの値は変更しないでください。

   完了したら、ファイルを保存します。

1. 次のコマンドを使用して、ステージングディストリビューションの設定を更新します。*staging\$1distribution\$1ID* をステージングディストリビューションの ID に置き換えます。

   ```
   aws cloudfront update-distribution --id staging_distribution_ID --cli-input-yaml file://staging-distribution.yaml
   ```

ステージングディストリビューションの設定をエッジロケーションにデプロイするとすぐに、ステージングディストリビューションにルーティングされた受信トラフィックに設定が適用されます。

------
#### [ API ]

ステージングディストリビューションの設定を更新するには、ステージングディストリビューションで [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) を使用して、ステージングディストリビューションの設定を変更します。更新できる設定の詳細については、「[プライマリーディストリビューションとステージングディストリビューションを更新する](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)」を参照してください。

------

## 継続的デプロイポリシーを更新する
<a name="update-continuous-deployment-policy"></a>

次の手順では、継続的デプロイポリシーを更新する方法を示します。

------
#### [ Console ]

継続的デプロイポリシーを更新することで、ディストリビューションのトラフィック設定を更新できます。

**継続的デプロイポリシーを更新するには (コンソール)**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

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

1. プライマリディストリビューションを選択します。これは、本番トラフィックを現在処理しているディストリビューションで、ステージングディストリビューションの作成元のディストリビューションです。

1. **[Continuous deployment]** (継続的デプロイ) セクションで、**[Edit policy]** (ポリシーの編集) を選択します。

1. 継続的デプロイポリシーのトラフィック設定を変更します。完了したら、**[変更を保存]** を選択します。

継続的デプロイポリシーを更新した、プライマリディストリビューションの設定をエッジロケーションにデプロイすると、CloudFront は更新したトラフィック設定に基づいてステージングディストリビューションにトラフィックを送信し始めます。

------
#### [ CLI ]

**継続的デプロイポリシーを更新するには (CLI および入力ファイル)**

1. 次のコマンドを使用して、継続的デプロイポリシーの設定を `continuous-deployment-policy.yaml` という名前のファイルに保存します。*continuous\$1deployment\$1policy\$1ID* を継続的デプロイポリシーの ID に置き換えます。次のコマンドでは、読みやすくするためにエスケープ文字 (\$1) と改行を使用していますが、これらはコマンドから省略してください。

   ```
   aws cloudfront get-continuous-deployment-policy-config --id continuous_deployment_policy_ID \
                                                          --output yaml > continuous-deployment-policy.yaml
   ```

1. 先ほど作成した `continuous-deployment-policy.yaml` という名前のファイルを開きます。ファイルを編集し、以下の変更を加えます。
   + 継続的デプロイポリシーの設定を必要に応じて変更します。例えば、トラフィック設定をヘッダーベースから重みベースに変更したり、重みベースの設定でトラフィックの割合 (重み) を変更したりできます。詳細については、「[ステージングディストリビューションにリクエストをルーティングする](understanding-continuous-deployment.md#understanding-continuous-deployment-routing)」および「[重みベースの設定におけるセッションの維持](understanding-continuous-deployment.md#understanding-continuous-deployment-sessions)」を参照してください。
   + `ETag` フィールドの名前を `IfMatch` に変更します。ただし、フィールドの値は変更しないでください。

   完了したら、ファイルを保存します。

1. 次のコマンドを使用して、継続的デプロイポリシーを更新します。*continuous\$1deployment\$1policy\$1ID* を継続的デプロイポリシーの ID に置き換えます。次のコマンドでは、読みやすくするためにエスケープ文字 (\$1) と改行を使用していますが、これらはコマンドから省略してください。

   ```
   aws cloudfront update-continuous-deployment-policy --id continuous_deployment_policy_ID \
                                                      --cli-input-yaml file://continuous-deployment-policy.yaml
   ```

継続的デプロイポリシーを更新した、プライマリディストリビューションの設定をエッジロケーションにデプロイすると、CloudFront は更新したトラフィック設定に基づいてステージングディストリビューションにトラフィックを送信し始めます。

------
#### [ API ]

継続的デプロイポリシーを更新するには、[UpdateContinuousDeploymentPolicy](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateContinuousDeploymentPolicy.html) を使用します。

------

## ステージングディストリビューション設定を昇格させる
<a name="promote-staging-distribution-configuration"></a>

次の手順では、ステージングディストリビューション設定を昇格させる方法を示します。

------
#### [ Console ]

ステージングディストリビューションを*昇格*させると、CloudFront はステージングディストリビューションからプライマリディストリビューションに設定をコピーします。また、CloudFront は継続的デプロイポリシーを無効にし、すべてのトラフィックをプライマリディストリビューションにルーティングします。

設定を昇格させると、設定の変更を次回テストするときに、同じステージングディストリビューションを再利用できます。

**ステージングディストリビューションの設定を昇格させるには (コンソール)**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

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

1. プライマリディストリビューションを選択します。これは、本番トラフィックを現在処理しているディストリビューションで、ステージングディストリビューションの作成元のディストリビューションです。

1. **[Continuous deployment]** (継続的デプロイ) セクションで、**[Promote]** (昇格) を選択します。

1. 「**confirm**」と入力して **[Promote]** (昇格) を選択します。

------
#### [ CLI ]

ステージングディストリビューションを*昇格*させると、CloudFront はステージングディストリビューションからプライマリディストリビューションに設定をコピーします。また、CloudFront は継続的デプロイポリシーを無効にし、すべてのトラフィックをプライマリディストリビューションにルーティングします。

設定を昇格させると、設定の変更を次回テストするときに、同じステージングディストリビューションを再利用できます。

**ステージングディストリビューションの設定を昇格させるには (CLI)**
+ **aws cloudfront update-distribution-with-staging-config** コマンドを使用して、ステージングディストリビューションの設定をプライマリディストリビューションに昇格させます。次のコマンド例では、読みやすくするためにエスケープ文字 (\$1) と改行を使用していますが、これらはコマンドから省略してください。次のコマンドの例で以下の操作を行います。
  + *primary\$1distribution\$1ID* をプライマリディストリビューションの ID に置き換えます。
  + *staging\$1distribution\$1ID* をステージングディストリビューションの ID に置き換えます。
  + *primary\$1distribution\$1ETag* と *staging\$1distribution\$1ETag* をプライマリディストリビューションとステージングディストリビューションの `ETag` 値に置き換えます。例に示すように、プライマリディストリビューションの値が最初になっていることを確認します。

  ```
  aws cloudfront update-distribution-with-staging-config --id primary_distribution_ID \
                                                         --staging-distribution-id staging_distribution_ID \
                                                         --if-match 'primary_distribution_ETag,staging_distribution_ETag'
  ```

------
#### [ API ]

ステージングディストリビューションの設定をプライマリディストリビューションに昇格させるには、[UpdateDistributionWithStagingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistributionWithStagingConfig.html) を使用します。

------

# ステージングディストリビューションをモニタリングする
<a name="monitoring-staging-distribution"></a>

ステージングディストリビューションのパフォーマンスをモニタリングするには、CloudFront がすべてのディストリビューションに提供しているのと同じ[メトリクス、ログ、レポート](reports-and-monitoring.md)を使用できます。例えば、次のようになります。
+ CloudFront コンソールで[デフォルトの CloudFront ディストリビューションメトリクス](viewing-cloudfront-metrics.md#monitoring-console.distributions) (合計リクエスト数やエラー率など) を表示できます。また、追加料金を支払うことで、ステータスコード別のキャッシュヒットレートやエラー率など、[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)ことができます。これらのメトリクスに基づいてアラームを作成することもできます。
+ [標準ログ](AccessLogs.md)と[リアルタイムアクセスログ](real-time-logs.md)を表示して、ステージングディストリビューションが受信したリクエストに関する詳細情報を取得できます。標準ログは `primary-distribution-id` フィールドと `primary-distribution-dns-name` フィールドを示します。この 2 つのフィールドは、CloudFront からステージングディストリビューションにルーティングする前のリクエストが最初に送信された先のプライマリディストリビューションを特定するのに役立ちます。
+ CloudFront コンソールで[レポート](reports.md) (キャッシュ統計レポートなど) を表示およびダウンロードできます。

# 継続的デプロイの仕組みについて説明します。
<a name="understanding-continuous-deployment"></a>

以下のトピックでは、CloudFront の継続的デプロイの仕組みについて説明します。

**Topics**
+ [

## ステージングディストリビューションにリクエストをルーティングする
](#understanding-continuous-deployment-routing)
+ [

## 重みベースの設定におけるセッションの維持
](#understanding-continuous-deployment-sessions)
+ [

## プライマリーディストリビューションとステージングディストリビューションを更新する
](#updating-staging-and-primary-distributions)
+ [

## プライマリディストリビューションとステージングディストリビューションはキャッシュを共有しない
](#staging-and-primary-no-shared-cache)

## ステージングディストリビューションにリクエストをルーティングする
<a name="understanding-continuous-deployment-routing"></a>

CloudFront の継続的デプロイを使用する場合、ビューワーリクエストについては何も変更する必要がありません。ビューワーは、DNS 名、IP アドレス、または CNAME を使用してステージングディストリビューションにリクエストを直接送信することはできません。代わりに、ビューワーはプライマリ (本番稼働) ディストリビューションにリクエストを送信します。CloudFront は、継続的デプロイポリシーのトラフィック設定に基づいて、これらのリクエストの一部をステージングディストリビューションにルーティングします。トラフィック設定には次の 2 つの種類があります。

**重みベース**  
重みベースの設定では、ビューワーリクエストの指定された割合をステージングディストリビューションにルーティングします。重みベースの設定を使用する場合、*セッションの維持*を有効にすることもできます。これにより、CloudFront は同じビューワーからのリクエストを 1 つのセッションの一部として処理できるようになります。詳細については、「[重みベースの設定におけるセッションの維持](#understanding-continuous-deployment-sessions)」を参照してください。

**ヘッダーベース**  
ビューワーリクエストに特定の HTTP ヘッダーが含まれている (ヘッダーと値が指定されている) 場合、ヘッダーベースの設定は、リクエストをステージングディストリビューションにルーティングします。ヘッダーと値が指定されていないリクエストは、プライマリディストリビューションにルーティングされます。この設定は、ローカルでテストする場合や、ビューワーリクエストが制御可能である場合に便利です。  
ステージングディストリビューションにルーティングするヘッダーには、プレフィックス `aws-cf-cd-` が含まれている必要があります。

## 重みベースの設定におけるセッションの維持
<a name="understanding-continuous-deployment-sessions"></a>

重みベースの設定を使用してトラフィックをステージングディストリビューションにルーティングする場合、*セッションの維持*を有効にすることもできます。これにより、CloudFront は同じビューワーからのリクエストを 1 つのセッションの一部として処理できるようになります。セッションの維持を有効にすると、CloudFront は Cookie を設定して、1 つのセッション内における同じビューワーからのすべてのリクエストを 1 つのディストリビューション (プライマリまたはステージング) で処理します。

セッションの維持を有効にするときに、*アイドル期間*を指定することもできます。ビューワーのアイドル (リクエストを送信しない) 状態がこの期間を超えると、セッションは期限切れになり、CloudFront はこのビューワーからの以降のリクエストを新しいセッションとして扱います。アイドル期間は 300 (5 分) から 3,600 (1 時間) までの秒数で指定します。

以下の場合、CloudFront はすべてのセッション (アクティブなセッションも含む) をリセットし、すべてのリクエストを新しいセッションと見なします。
+ 継続的デプロイポリシーを無効または有効にする。
+ セッションの維持の設定を無効または有効にする。

## プライマリーディストリビューションとステージングディストリビューションを更新する
<a name="updating-staging-and-primary-distributions"></a>

プライマリディストリビューションに継続的デプロイポリシーがアタッチされている場合、プライマリーディストリビューションとステージングディストリビューションの両方で、以下の設定の変更が可能です。
+ すべてのキャッシュ動作設定 (デフォルトのキャッシュ動作を含む)
+ すべてのオリジン設定 (オリジンとオリジングループ)
+ カスタムエラーレスポンス (エラーページ)
+ 地理的制限
+ デフォルトのルートオブジェクト
+ ログ記録の設定
+ 説明 (コメント)

ディストリビューションの設定で参照される外部リソース (キャッシュポリシー、レスポンスヘッダーポリシー、CloudFront 関数、Lambda@Edge 関数など) を更新することもできます。

## プライマリディストリビューションとステージングディストリビューションはキャッシュを共有しない
<a name="staging-and-primary-no-shared-cache"></a>

プライマリディストリビューションとステージングディストリビューションはキャッシュを共有しません。CloudFront が最初のリクエストをステージングディストリビューションに送信するまで、キャッシュは空です。リクエストがステージングディストリビューションに到着すると、レスポンスのキャッシュが開始されます (そのように設定している場合)。

# 継続的デプロイに関するクォータとその他の考慮事項
<a name="continuous-deployment-quotas-considerations"></a>

CloudFront の継続的デプロイには、以下のクォータとその他の考慮事項が適用されます。

## クォータ
<a name="continuous-deployment-quotas"></a>
+ AWS アカウント あたりのステージングディストリビューションの最大数: 20
+ AWS アカウント あたりの継続的デプロイポリシーの最大数: 20
+ 重みベースの設定でステージングディストリビューションに送信できるトラフィックの最大割合: 15%
+ セッションの維持のアイドル期間の最小値と最大値: 300～3,600 秒

詳細については、「[クォータ](cloudfront-limits.md)」を参照してください。

**注記**  
継続的デプロイを使用しており、プライマリディストリビューションが S3 バケットアクセス用の OAC で設定されている場合は、S3 バケットポリシーを更新してステージングディストリビューションへのアクセスを許可します。S3 バケットポリシーの例については、「[S3 バケットへのアクセス許可を CloudFront に付与する](private-content-restricting-access-to-s3.md#oac-permission-to-access-s3)」を参照してください。

## AWS WAF ウェブ ACL
<a name="waf-web-acl"></a>

ディストリビューションで継続的デプロイを有効にする場合、AWS WAF には次の考慮事項が適用されます。
+ AWS WAF ウェブアクセスコントロールリスト (ACL) をディストリビューションに関連付けるのが初めての場合、ACL をディストリビューションに関連付けることはできません。
+ ディストリビューションから AWS WAF ウェブ ACL の関連付けを解除することはできません。

上記のタスクを実行する前に、本番稼働用ディストリビューションの継続的デプロイポリシーを削除する必要があります。これにより、ステージングディストリビューションも削除されます。詳細については、「[AWS WAF 保護を使用する](distribution-web-awswaf.md)」を参照してください。

## CloudFront がすべてのリクエストをプライマリディストリビューションに送信する場合
<a name="all-requests-to-primary-distribution"></a>

リソース使用率が高い期間など、状況に応じて、CloudFront は継続的デプロイポリシーで指定されている内容に関係なく、すべてのリクエストをプライマリディストリビューションに送信する場合があります。

CloudFront は、継続的デプロイポリシーで指定されている内容に関係なく、トラフィックのピーク時には、すべてのリクエストをプライマリディストリビューションに送信します。ピークトラフィックとは、CloudFront サービスのトラフィックであり、ディストリビューションのトラフィックではありません。**

## HTTP/3
<a name="continuous-deployment-http3"></a>

HTTP/3 をサポートするディストリビューションでは継続的デプロイを使用できません。