CloudFront 継続的デプロイを使用して CDN 設定の変更を安全にテストする - Amazon CloudFront

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CloudFront 継続的デプロイを使用して CDN 設定の変更を安全にテストする

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

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


             CloudFront 継続的デプロイと継続的デプロイポリシーを使用すると、シミュレートされたトラフィックを使用する代わりに、本番トラフィックの一部をステージングディストリビューションに送信できます。

CloudFront 継続的デプロイを使用するワークフロー

次の大まかなワークフローでは、 CloudFront 継続的デプロイで設定変更を安全にテストしてデプロイする方法について説明します。

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

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

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

  4. ステージングディストリビューションの設定を更新します。更新できる設定の詳細については、「プライマリーディストリビューションとステージングディストリビューションの更新」を参照してください。

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

    ステージングディストリビューションをモニタリングしながら、以下のことを実行できます。

    • ステージングディストリビューションの設定を再度更新し、設定の変更のテストを続行します。

    • 継続的デプロイポリシー (トラフィック設定) を更新して、ステージングディストリビューションに送信するトラフィックを増減します。

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

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

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

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

ステージングディストリビューションと継続的デプロイポリシーの使用

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

Console

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

ステージングディストリビューションと継続的デプロイポリシーを作成するには (コンソール)
  1. にサインインAWS Management Consoleし、 で CloudFront コンソールを開きますhttps://console.aws.amazon.com/cloudfront/v4/home

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

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

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

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

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

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

    3. ステージングディストリビューションの設定を変更します。更新できる設定の詳細については、「プライマリーディストリビューションとステージングディストリビューションの更新」を参照してください。

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

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

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

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

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

CloudFront コンソールでステージングディストリビューションの作成ウィザードを終了すると、 は次の CloudFront 操作を行います。

  • ステップ 5c で指定した設定を使用して、ステージングディストリビューションを作成します。

  • ステップ 5d で指定したトラフィック設定を使用して、継続的デプロイポリシーを作成します。

  • ステージングディストリビューションの作成元のプライマリディストリビューションに継続的デプロイポリシーをアタッチします。

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

ステージングディストリビューションを更新するには (コンソール)
  1. で CloudFront コンソールを開きますhttps://console.aws.amazon.com/cloudfront/v4/home

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

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

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

  5. コンソールを使用して、ステージングディストリビューションの設定を変更します。更新できる設定の詳細については、「プライマリーディストリビューションとステージングディストリビューションの更新」を参照してください。

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

継続的デプロイポリシーを更新するには (コンソール)
  1. で CloudFront コンソールを開きますhttps://console.aws.amazon.com/cloudfront/v4/home

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

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

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

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

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

ステージングディストリビューションの設定を昇格させるには (コンソール)
  1. で CloudFront コンソールを開きますhttps://console.aws.amazon.com/cloudfront/v4/home

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

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

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

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

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

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

CLI

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

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

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

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

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

  2. aws cloudfront copy-distribution コマンドを使用してステージングディストリビューションを作成します。次のコマンド例では、読みやすくするためにエスケープ文字 (\) と改行を使用していますが、これらはコマンドから省略してください。次のコマンドの例で以下の操作を行います。

    • primary_distribution_ID をプライマリディストリビューションの ID に置き換えます。

    • primary_distribution_ETag をプライマリディストリビューションの ETag 値 (前のステップで取得したもの) に置き換えます。

    • (オプション) CLI_example を目的の発信者リファレンス 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 という名前のファイルを作成します。次のコマンドでは、読みやすくするためにエスケープ文字 (\) と改行を使用していますが、これらはコマンドから省略してください。

    aws cloudfront create-continuous-deployment-policy --generate-cli-skeleton yaml-input \ > continuous-deployment-policy.yaml
  2. 先ほど作成した continuous-deployment-policy.yaml という名前のファイルを開きます。このファイルを編集して、必要な継続的デプロイポリシー設定を指定し、ファイルを保存します。ファイルは以下のように編集します。

    • StagingDistributionDnsNames セクションでの編集

      • Quantity の値を 1 に変更します。

      • にはItems、ステージングディストリビューションの CloudFront ドメイン名を貼り付けます (前の手順で保存したもの)。

    • TrafficConfig セクションでの編集

      • Type として、SingleWeight または SingleHeader を選択します。

      • 他のタイプの設定を削除します。例えば、重みベースのトラフィック設定が必要な場合は、TypeSingleWeight に設定し、SingleHeaderConfig 設定を削除します。

      • 重みベースのトラフィック設定を使用するには、Weight の値を .01 (1%) から .15 (15%) までの 10 進数に設定します。

      TrafficConfig のオプションの詳細については、「ステージングディストリビューションへのリクエストのルーティング」および「重みベースの設定におけるセッションの維持」を参照してください。

  3. 次のコマンドで 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_distribution_ID をプライマリディストリビューションの ID に置き換えます。

    aws cloudfront get-distribution-config --id primary_distribution_ID --output yaml > primary-distribution.yaml
  2. 先ほど作成した primary-distribution.yaml という名前のファイルを開きます。ファイルを編集し、以下の変更を加えます。

    • 継続的デプロイポリシー ID (前のステップでコピーしたもの) を ContinuousDeploymentPolicyId フィールドに貼り付けます。

    • ETag フィールドの名前を IfMatch に変更します。ただし、フィールドの値は変更しないでください。

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

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

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

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

ステージングディストリビューションを更新するには (CLI および入力ファイル)
  1. 次のコマンドを使用して、ステージングディストリビューションの設定を staging-distribution.yaml という名前のファイルに保存します。staging_distribution_ID をステージングディストリビューションの ID に置き換えます。

    aws cloudfront get-distribution-config --id staging_distribution_ID --output yaml > staging-distribution.yaml
  2. 先ほど作成した staging-distribution.yaml という名前のファイルを開きます。ファイルを編集し、以下の変更を加えます。

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

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

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

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

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

    aws cloudfront get-continuous-deployment-policy-config --id continuous_deployment_policy_ID \ --output yaml > continuous-deployment-policy.yaml
  2. 先ほど作成した continuous-deployment-policy.yaml という名前のファイルを開きます。ファイルを編集し、以下の変更を加えます。

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

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

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

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

ステージングディストリビューションの設定を昇格させるには (CLI)
  • aws cloudfront update-distribution-with-staging-config コマンドを使用して、ステージングディストリビューションの設定をプライマリディストリビューションに昇格させます。次のコマンド例では、読みやすくするためにエスケープ文字 (\) と改行を使用していますが、これらはコマンドから省略してください。次のコマンドの例で以下の操作を行います。

    • primary_distribution_ID をプライマリディストリビューションの ID に置き換えます。

    • staging_distribution_ID をステージングディストリビューションの ID に置き換えます。

    • primary_distribution_ETagstaging_distribution_ETag をプライマリディストリビューションとステージングディストリビューションの 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'

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

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

API

CloudFront API を使用してステージングディストリビューションと継続的デプロイポリシーを作成するには、次の API オペレーションを使用します。

これらの API コールで指定するフィールドの詳細については、以下を参照してください。

ステージングディストリビューションと継続的デプロイポリシーを作成したら、 UpdateDistribution (プライマリディストリビューションで) を使用して継続的デプロイポリシーをプライマリディストリビューションにアタッチします。

ステージングディストリビューションの設定を更新するには、 UpdateDistribution (ステージングディストリビューションで) を使用してステージングディストリビューションの設定を変更します。更新できる設定の詳細については、「プライマリーディストリビューションとステージングディストリビューションの更新」を参照してください。

ステージングディストリビューションの設定をプライマリディストリビューションに昇格させるには、 を使用しますUpdateDistributionWithStagingConfig

この API コールで指定するフィールドの詳細については、AWS SDK またはその他の API クライアントの API リファレンスドキュメントを参照してください。

ステージングディストリビューションのモニタリング

ステージングディストリビューションのパフォーマンスをモニタリングするには、 がすべてのディストリビューションに対して CloudFront 提供するのと同じメトリクス、ログ、レポートを使用できます。例:

継続的デプロイの仕組みを理解する

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

ステージングディストリビューションへのリクエストのルーティング

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

重みベース

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

ヘッダーベース

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

注記

ステージングディストリビューションにルーティングするヘッダーには、プレフィックス aws-cf-cd- が含まれている必要があります。

重みベースの設定におけるセッションの維持

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

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

次の場合、 はすべてのセッション (アクティブなセッションも含む) CloudFront をリセットし、すべてのリクエストを新しいセッションと見なします。

  • 継続的デプロイポリシーを無効または有効にする。

  • セッションの維持の設定を無効または有効にする。

プライマリーディストリビューションとステージングディストリビューションの更新

プライマリディストリビューションに継続的デプロイポリシーがアタッチされている場合、プライマリーディストリビューションとステージングディストリビューションの両方で、以下の設定の変更が可能です。

  • すべてのキャッシュ動作設定 (デフォルトのキャッシュ動作を含む)

  • すべてのオリジン設定 (オリジンとオリジングループ)

  • カスタムエラーレスポンス (エラーページ)

  • 地理的制限

  • デフォルトのルートオブジェクト

  • ログ記録の設定

  • 説明 (コメント)

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

プライマリディストリビューションとステージングディストリビューションはキャッシュを共有しない

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

継続的デプロイに関するクォータとその他の考慮事項

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

クォータ

  • AWS アカウント あたりのステージングディストリビューションの最大数: 20

  • AWS アカウント あたりの継続的デプロイポリシーの最大数: 20

  • 重みベースの設定でステージングディストリビューションに送信できるトラフィックの最大割合: 15%

  • セッションの維持のアイドル期間の最小値と最大値: 300~3,600 秒

詳細については、「クォータ」を参照してください。

注記

継続的デプロイを使用し、プライマリディストリビューションに S3 バケットアクセス用の OAC が設定されている場合は、S3 バケットポリシーを更新してステージングディストリビューションへのアクセスを許可します。S3 バケットポリシーの例については、「」を参照してくださいS3 バケットへのアクセス許可をオリジンアクセスコントロールに付与する

HTTP/3

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

がすべてのリクエストをプライマリディストリビューション CloudFront に送信する場合

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

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