

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

# 使用部署策略
<a name="appconfig-creating-deployment-strategy"></a>

部署策略可讓您在幾分鐘或數小時內緩慢地發佈所有目標或特定客群的變更，無論是以工作階段為基礎，或是利用以實體為基礎的部署沿著您自己的目標維度。

**注意**  
AWS AppConfig 代理程式 (2.0.136060 版或更新版本） 支援在逐步推出期間，將功能旗標或自由格式組態資料部署至特定客群或個別使用者。以實體為基礎的逐步部署可確保一旦使用者或客群收到組態版本，就會在整個部署期間持續收到相同的版本，無論哪些運算資源提供其請求。如需詳細資訊，請參閱[使用 AWS AppConfig 代理程式進行以使用者或實體為基礎的逐步部署](appconfig-agent-how-to-use.md#appconfig-entity-based-gradual-deployments)。

 AWS AppConfig 部署策略定義了組態部署的下列重要層面。


****  

| 設定 | Description | 
| --- | --- | 
| 經過時間 | 部署進度 | 
| --- | --- | 
|  部署類型  | 部署類型定義組態如何部署或*推出*。 AWS AppConfig 支援**線性**和**指數**部署類型。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/appconfig/latest/userguide/appconfig-creating-deployment-strategy.html)  | 
|  步驟百分比 (成長係數)  |  這個設定會指定要在部署的每個步驟期間鎖定的呼叫端百分比。  在開發套件和 [AWS AppConfig API 參考](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateDeploymentStrategy.html)中，`step percentage` 稱為 `growth factor`。   | 
|  部署時間  |  此設定會指定 AWS AppConfig 部署到主機的時間量。這不是逾時值。它是以間隔處理部署的時段。 | 
|  封裝時間  |  此設定指定在將組態部署至其 100% 目標之後，考慮完成部署之前，Amazon CloudWatch 警示的時間 AWS AppConfig 監控量。如果在此期間觸發警示， AWS AppConfig 會復原部署。您必須設定 的許可 AWS AppConfig ，才能根據 CloudWatch 警示復原。如需詳細資訊，請參閱[設定自動轉返的許可](setting-up-appconfig.md#getting-started-with-appconfig-cloudwatch-alarms-permissions)。  | 
|  0 小時  |  0%  | 
|  2 小時  |  20%  | 
|  4 小時  |  40%  | 
|  6 小時  |  60%  | 
|  8 小時  |  80%  | 
|  10 小時  |  100%  | 

您可以選擇 隨附的預先定義策略， AWS AppConfig 或建立自己的策略。

**注意**  
AWS AppConfig 代理程式 (2.0.136060 版或更新版本） 支援在逐步推出期間，將功能旗標或自由格式組態資料部署至特定客群或個別使用者。以實體為基礎的逐步部署可確保一旦使用者或客群收到組態版本，就會在整個部署期間持續收到相同的版本，無論哪些運算資源提供其請求。如需詳細資訊，請參閱[使用 AWS AppConfig 代理程式進行以使用者或實體為基礎的逐步部署](appconfig-agent-how-to-use.md#appconfig-entity-based-gradual-deployments)。

**Topics**
+ [使用預先定義的部署策略](appconfig-creating-deployment-strategy-predefined.md)
+ [建立部署策略](appconfig-creating-deployment-strategy-create.md)

# 使用預先定義的部署策略
<a name="appconfig-creating-deployment-strategy-predefined"></a>

AWS AppConfig 包含預先定義的部署策略，可協助您快速部署組態。您不用建立自己的策略，而可以在部署組態時選擇下列其中一項。


****  

| 部署策略 | Description | 
| --- | --- | 
|  AppConfig.Linear20PercentEvery6Minutes  | **AWS 建議**： 此策略會每六分鐘將組態部署到所有目標的 20%，以進行 30 分鐘的部署。系統會監控 Amazon CloudWatch 警示 30 分鐘。如果此時沒有收到任何警示，表示部署已完成。如果在此期間觸發警示， 會 AWS AppConfig 轉返部署。我們建議將此策略用於生產部署，因為它符合 AWS 最佳實務，並且由於其持續時間長和製作時間，包括對部署安全性的額外重視。  | 
|  AppConfig.Canary10Percent20Minutes  | **AWS 建議**： 此策略使用 10% 成長係數超過 20 分鐘，以指數方式處理部署。系統會監控 CloudWatch 警示 10 分鐘。如果此時沒有收到任何警示，表示部署已完成。如果在此期間觸發警示， 會 AWS AppConfig 轉返部署。我們建議您將此策略用於生產部署，因為它符合組態部署的 AWS 最佳實務。  | 
|  AppConfig.AllAtOnce  | **快速**： 此策略會立即將組態部署到所有目標。系統會監控 CloudWatch 警示 10 分鐘。如果此時沒有收到任何警示，表示部署已完成。如果在此期間觸發警示， AWS AppConfig 會復原部署。  | 
|  AppConfig.Linear50PercentEvery30Seconds  | **測試/示範**： 此策略每隔 30 秒會將組態部署到所有目標的一半，以進行一分鐘部署。系統會監控 Amazon CloudWatch 警示 1 分鐘。如果此時沒有收到任何警示，表示部署已完成。如果在此期間觸發警示， 會 AWS AppConfig 轉返部署。我們建議您僅將此策略用於測試或示範目的，因為它的持續時間和封裝時間很短。  | 

# 建立部署策略
<a name="appconfig-creating-deployment-strategy-create"></a>

如果您不想使用其中一個預先定義的部署策略，您可以建立自己的部署策略。您最多可以建立 20 個部署策略。部署組態時，您可以選擇最適合應用程式和環境的部署策略。

## 建立 AWS AppConfig 部署策略 （主控台）
<a name="appconfig-creating-deployment-strategy-create-console"></a>

使用下列程序，透過 AWS Systems Manager 主控台建立 AWS AppConfig 部署策略。

**建立部署策略**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇**部署策略**，然後選擇**建立部署策略**。

1. 對於 **Name (名稱)**，輸入部署策略的名稱。

1. 對於 **Description (描述)**，輸入有關部署策略的資訊。

1. 對於 **Deployment type (部署類型)**，請選擇類型。

1. 對於 **Step percentage (步驟百分比)**，選擇要在部署的每個步驟期間鎖定的呼叫端百分比。

1. 對於 **Deployment time (部署時間)**，輸入部署的總持續時間 (以分鐘或小時為單位)。

1. 對於**製作時間**，輸入總時間，以分鐘或小時為單位，監控 Amazon CloudWatch 警示，然後再繼續進行部署的下一個步驟或考慮完成部署。

1. 在 **Tags (標籤)** 區段中，輸入一個鍵和一個選用值。您可以為資源指定最多 50 個標籤。

1. 選擇 **Create deployment strategy (建立部署策略)**。

**重要**  
如果您為 建立組態設定檔 AWS CodePipeline，則必須在 CodePipeline 中建立管道，指定 AWS AppConfig 做為*部署提供者*。您不需要執行 [部署組態](appconfig-deploying.md)。不過，您必須設定用戶端來接收應用程式組態更新，如中所述[在沒有 AWS AppConfig 代理程式的情況下擷取組態資料](about-data-plane.md)。如需建立指定 AWS AppConfig 做為部署提供者的管道的相關資訊，請參閱*AWS CodePipeline 《 使用者指南*》中的[教學課程：建立使用 AWS AppConfig 做為部署提供者的管道](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-AppConfig.html)。

繼續執行「[部署組態](appconfig-deploying.md)」。

## 建立 AWS AppConfig 部署策略 （命令列）
<a name="appconfig-creating-deployment-strategy-create-commandline"></a>

下列程序說明如何使用 AWS CLI （在 Linux 或 Windows 上） 或 AWS Tools for PowerShell 來建立 AWS AppConfig 部署策略。

**逐步建立部署策略**

1. 開啟 AWS CLI。

1. 執行下列命令來建立部署策略。

------
#### [ Linux ]

   ```
   aws appconfig create-deployment-strategy \
     --name A_name_for_the_deployment_strategy \
     --description A_description_of_the_deployment_strategy \
     --deployment-duration-in-minutes Total_amount_of_time_for_a_deployment_to_last \
     --final-bake-time-in-minutes Amount_of_time_AWS AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete \
     --growth-factor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval \
     --growth-type The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time \
     --replicate-to To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document \
     --tags User_defined_key_value_pair_metadata_of_the_deployment_strategy
   ```

------
#### [ Windows ]

   ```
   aws appconfig create-deployment-strategy ^
     --name A_name_for_the_deployment_strategy ^
     --description A_description_of_the_deployment_strategy ^
     --deployment-duration-in-minutes Total_amount_of_time_for_a_deployment_to_last ^
     --final-bake-time-in-minutes Amount_of_time_AWS AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete ^
     --growth-factor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval ^
     --growth-type The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time ^
     --name A_name_for_the_deployment_strategy ^
     --replicate-to To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document ^
     --tags User_defined_key_value_pair_metadata_of_the_deployment_strategy
   ```

------
#### [ PowerShell ]

   ```
   New-APPCDeploymentStrategy ` 
     --Name A_name_for_the_deployment_strategy ` 
     --Description A_description_of_the_deployment_strategy `
     --DeploymentDurationInMinutes Total_amount_of_time_for_a_deployment_to_last `
     --FinalBakeTimeInMinutes Amount_of_time_AWS AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete `
     --GrowthFactor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval `
     --GrowthType The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time `
     --ReplicateTo To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document `
     --Tag Hashtable_type_User_defined_key_value_pair_metadata_of_the_deployment_strategy
   ```

------

   系統會傳回如下資訊。

------
#### [ Linux ]

   ```
   {
      "Id": "Id of the deployment strategy",
      "Name": "Name of the deployment strategy",
      "Description": "Description of the deployment strategy",
      "DeploymentDurationInMinutes": "Total amount of time the deployment lasted",
      "GrowthType": "The linear or exponential algorithm used to define how percentage grew over time",
      "GrowthFactor": "The percentage of targets that received a deployed configuration during each interval",  
      "FinalBakeTimeInMinutes": "The amount of time AWS AppConfig monitored for alarms before considering the deployment to be complete",
      "ReplicateTo": "The Systems Manager (SSM) document where the deployment strategy is saved"
   }
   ```

------
#### [ Windows ]

   ```
   {
      "Id": "Id of the deployment strategy",
      "Name": "Name of the deployment strategy",
      "Description": "Description of the deployment strategy",
      "DeploymentDurationInMinutes": "Total amount of time the deployment lasted",
      "GrowthType": "The linear or exponential algorithm used to define how percentage grew over time",
      "GrowthFactor": "The percentage of targets that received a deployed configuration during each interval",  
      "FinalBakeTimeInMinutes": "The amount of time AWS AppConfig monitored for alarms before considering the deployment to be complete",
      "ReplicateTo": "The Systems Manager (SSM) document where the deployment strategy is saved"
   }
   ```

------
#### [ PowerShell ]

   ```
   ContentLength               : Runtime of the command
   DeploymentDurationInMinutes : Total amount of time the deployment lasted
   Description                 : Description of the deployment strategy
   FinalBakeTimeInMinutes      : The amount of time AWS AppConfig monitored for alarms before considering the deployment to be complete
   GrowthFactor                : The percentage of targets that received a deployed configuration during each interval
   GrowthType                  : The linear or exponential algorithm used to define how percentage grew over time
   HttpStatusCode              : HTTP Status of the runtime
   Id                          : The deployment strategy ID
   Name                        : Name of the deployment strategy
   ReplicateTo                 : The Systems Manager (SSM) document where the deployment strategy is saved
   ResponseMetadata            : Runtime Metadata
   ```

------