

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用臨時分佈和持續部署政策
<a name="working-with-staging-distribution-continuous-deployment-policy"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 或 CloudFront API，在 CloudFront 主控台中建立、更新和修改預備分佈和持續部署政策。

## 使用持續部署政策建立臨時分佈
<a name="create-staging-distribution-continuous-deployment-policy"></a>

以下程序介紹如何使用持續部署政策來建立臨時分佈。

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

您可以使用 AWS 管理主控台建立具有連續部署政策的臨時分佈。

**建立臨時分佈和持續部署政策 (主控台)**

1. 登入 AWS 管理主控台 並開啟位於 的 CloudFront 主控台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在導覽窗格中，選擇 **Distributions (分佈)**。

1. 選擇您要做為*主要分佈*的分佈。主要分佈目前為生產流量提供服務，也就是您從中建立臨時分佈的地方。

1. 在 **Continuous deployment** (持續部署) 區段中，選擇 **Create staging distribution** (建立臨時分佈)。這項操作會開啟 **Create staging distribution** (建立臨時分佈) 精靈。

1. 在 **Create staging distribution** (建立臨時分佈) 精靈中，執行下列動作：

   1. (選用) 輸入臨時分佈的描述。

   1. 選擇**下一步**。

   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\_distribution\_ID}} 取代為主要分佈的 ID。

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

   請複製 `ETag` 值，因為您會在以下步驟使用該值。

1. 使用 **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
   ```

1. 開啟您剛才建立且命名為 `continuous-deployment-policy.yaml` 的檔案。編輯檔案以指定您想要的持續部署政策設定，然後儲存檔案。當您編輯檔案時：
   + `StagingDistributionDnsNames` 區段：
     + 將 `Quantity` 的值變更為 `1`。
     + 對於 `Items`，貼上於上一個步驟儲存的臨時分佈的 CloudFront 網域名稱。
   + `TrafficConfig` 區段：
     + 選擇 `Type`，可為 `SingleWeight` 或 `SingleHeader`。
     + 移除其他類型的設定。例如，若您要以權重為基礎的流量組態，請將 `Type` 設定為 `SingleWeight`，然後移除 `SingleHeaderConfig` 設定。
     + 若要使用以權重為基礎的流量組態，請將 `Weight` 值設定為介於 `.01` (百分之一) 到 `.15` (百分之十五) 間的十進位數字。

     如需 `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\_distribution\_ID}} 取代為主要分佈的 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\_distribution\_ID}} 取代為主要分佈的 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)
+ SDK AWS 或其他 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. 在導覽窗格中，選擇 **Distributions (分佈)**。

1. 選擇主要分佈。這是目前為生產流量提供服務的分佈，也就是您從中建立臨時分佈的地方。

1. 選擇 **View staging distribution** (檢視臨時分佈)。

1. 使用主控台修改臨時分佈的組態。如需詳細了解您可以更新的設定，請參閱 [更新主要分佈或臨時分佈](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)。

一旦臨時分佈的組態部署到邊緣節點，即對路由至臨時分佈的傳入流量產生效果。

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

**更新臨時分佈 (包含輸入檔案的 CLI)**

1. 使用下列命令，將臨時分佈的組態儲存至名為 `staging-distribution.yaml` 的檔案。將 {{staging\_distribution\_ID}} 取代為暫存分佈的 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\_distribution\_ID}} 取代為暫存分佈的 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. 在導覽窗格中，選擇 **Distributions (分佈)**。

1. 選擇主要分佈。這是目前為生產流量提供服務的分佈，也就是您從中建立臨時分佈的地方。

1. 在 **Continuous deployment** (持續部署) 區段中，選擇 **Edit policy** (編輯政策)。

1. 修改持續部署政策中的流量組態。完成時，請選擇 **Save changes (儲存變更)**。

當主要分佈的組態使用更新的持續部署政策部署到邊緣節點時，CloudFront 會開始根據更新的流量組態，將流量傳送至臨時分佈。

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

**更新持續部署政策 (包含輸入檔案的 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
   ```

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\_deployment\_policy\_ID}} 取代為持續部署政策的 ID。下列命令使用逸出字元 (\\) 和換行符號以提高可讀性，但您應在命令中省略這些字元。

   ```
   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. 在導覽窗格中，選擇 **Distributions (分佈)**。

1. 選擇主要分佈。這是目前為生產流量提供服務的分佈，也就是您從中建立臨時分佈的地方。

1. 在 **Continuous deployment** (持續部署) 區段中，選擇 **Promote** (提升)。

1. 輸入 **confirm**，然後選擇 **Promote** (提升)。

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

*提升*臨時分佈時，CloudFront 會將組態從臨時分佈複製到主要分佈。CloudFront 也會停用持續部署政策，並將所有流量路由至主要分佈。

提升組態之後，您可以在下次測試組態變更時，重複使用相同的臨時分佈。

**提升臨時分佈組態 (CLI)**
+ 使用 **aws cloudfront update-distribution-with-staging-config** 命令，將臨時分佈的組態提升為主要分佈。下列範例命令使用逸出字元 (\\) 和換行符號以提高可讀性，但您應在命令中省略這些字元。以下是範例命令：
  + 將 {{primary\_distribution\_ID}} 取代為主要分佈的 ID。
  + 將 {{staging\_distribution\_ID}} 取代為臨時分佈的 ID。
  + 將 {{primary\_distribution\_ETag}} 和 {{staging\_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}}'
  ```

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

若要將臨時分佈的組態提升為主要分佈，請使用 [UpdateDistributionWithStagingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistributionWithStagingConfig.html)。

------