

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

# 在 CodeDeploy 中使用部署組態
<a name="deployment-configurations"></a>

部署組態是一組規則，以及 CodeDeploy 在部署期間所使用的成功和失敗條件。這些規則和條件不同，取決於您部署到 EC2/現場部署運算平台、 AWS Lambda 運算平台或 Amazon ECS 運算平台。

## EC2/內部部署運算平台上的部署組態
<a name="deployment-configuration-server"></a>



當您部署到 EC2/現場部署運算平台時，部署組態會透過使用「運作狀態良好主機」值和選用的「每個區域運作狀態良好主機」值，指定在部署期間必須隨時保持可用的執行個體數量或百分比。

您可以使用 提供的三個預先定義部署組態之一， AWS 或建立自訂部署組態。如需建立自訂部署組態的詳細資訊，請參閱 [使用 CodeDeploy 建立部署組態](deployment-configurations-create.md)。如果您未指定部署組態，CodeDeploy 會使用 CodeDeployDefault.OneAtATime 部署組態。

如需 CodeDeploy 在部署期間如何監控和評估執行個體運作狀態的詳細資訊，請參閱 [CodeDeploy 執行個體運作狀態](instances-health.md)。若要檢視已註冊至您 AWS 帳戶的部署組態清單，請參閱 [使用 CodeDeploy 檢視部署組態詳細資訊](deployment-configurations-view-details.md)。

### EC2/內部部署運算平台的預先定義部署組態
<a name="deployment-configurations-predefined"></a>

下表列出預先定義部署組態。

**注意**  
沒有預先定義的部署組態支援 [zonal configuration](deployment-configurations-create.md#zonal-config)功能 （這項功能可讓您指定每個可用區域運作狀態良好的主機數量）。如果您想要使用此功能，您必須[建立自己的部署組態](deployment-configurations-create.md)。


****  

| Deployment configuration (部署組態) | Description | 
| --- | --- | 
| CodeDeployDefault.AllAtOnce | **就地部署**：嘗試部署應用程式修訂版，一次盡可能部署任意數量的執行個體。如果應用程式版本被部署到一個或多個執行個體，整體的部署狀態會顯示為成功。如果應用程式修訂版沒有部署到任何一個執行個體，整體的部署狀態會顯示為失敗。以九個執行個體為例，CodeDeployDefault.AllAtOnce 會嘗試立即部署到全部九個執行個體。即使只有單一執行個體部署成功，整體部署也算成功。只有在部署到全部九個執行個體都失敗時，才算失敗。**藍/綠部署**：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/deployment-configurations.html) | 
| CodeDeployDefault.HalfAtATime |  **就地部署**： 一次部署到最多執行個體的一半 (分數無條件捨去)。如果應用程式修訂版部署到至少一半的執行個體，整體部署即為成功 (分數無條件計入)。否則，部署失敗。在九個執行個體的範例中，它將同時部署到最多四個執行個體。如果成功部署至五個或以上的執行個體，整體部署即為成功。否則，部署失敗。  如果您要部署到多個 Auto Scaling 群組中的執行個體，無論*執行個體所在的 Auto Scaling 群組為何*，CodeDeploy 一次最多都會部署到一半的執行個體。例如，假設您有兩個 Auto Scaling 群組 `ASG1`和 `ASG2`，每個群組都有 10 個執行個體。在此案例中，CodeDeploy 可能會在 中部署到 10 個執行個體`ASG1`，並將其視為成功，因為它已部署到至少一半的執行個體。  **藍/綠部署**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/deployment-configurations.html)  | 
| CodeDeployDefault.OneAtATime |  **就地部署**： 將應用程式修訂版一次部署到一個執行個體。 對於包含多個執行個體的部署群組： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/deployment-configurations.html) 對於僅包含一個執行個體的部署群組，如果部署到單一執行個體成功，整體部署便算成功。 **藍/綠部署**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/deployment-configurations.html)  | 

## Amazon ECS 運算平台上的部署組態
<a name="deployment-configuration-ecs"></a>

當您部署到 Amazon ECS 運算平台時，部署組態會指定流量如何轉移到更新的 Amazon ECS 任務集。您可以使用 **Canary**、**線性**或**all-at-once**組態來轉移流量。如需詳細資訊，請參閱[Deployment configuration (部署組態)](primary-components.md#primary-components-deployment-configuration)。

您也可以建立您自己的自訂 Canary 或線性部署組態。如需詳細資訊，請參閱[使用 CodeDeploy 建立部署組態](deployment-configurations-create.md)。

### Amazon ECS 運算平台的預先定義部署組態
<a name="deployment-configurations-predefined-ecs"></a>

下表列出可用於 Amazon ECS 部署的預先定義組態。

**注意**  
如果您使用的是 Network Load Balancer，則僅支援`CodeDeployDefault.ECSAllAtOnce`預先定義的部署組態。


****  

| Deployment configuration (部署組態) | Description | 
| --- | --- | 
|  CodeDeployDefault.ECSLinear10PercentEvery1Minutes  |  每分鐘移動 10% 的流量，直到所有流量移動完畢。  | 
|  CodeDeployDefault.ECSLinear10PercentEvery3Minutes   |  每三分鐘移動 10% 的流量，直到所有流量移動完畢。  | 
|  CodeDeployDefault.ECSCanary10Percent5Minutes  |  在第一個遞增中移動 10% 的流量。剩餘的 90% 會在五分鐘之後部署。  | 
| CodeDeployDefault.ECSCanary10Percent15Minutes |  在第一個遞增中移動 10% 的流量。剩餘的 90% 會在 15 分鐘後部署。  | 
|  CodeDeployDefault.ECSAllAtOnce  |  將所有流量一次轉移到更新的 Amazon ECS 容器。  | 

## CloudFormation 藍/綠部署的部署組態 (Amazon ECS)
<a name="deployment-configuration-cfn-bg"></a>

 當您透過 CloudFormation 藍/綠部署部署到 Amazon ECS 運算平台時，部署組態會指定流量如何轉移到更新的 Amazon ECS 容器。您可以使用 **Canary**、**線性**或**all-at-once**組態來轉移流量。如需詳細資訊，請參閱[Deployment configuration (部署組態)](primary-components.md#primary-components-deployment-configuration)。

使用 CloudFormation 藍/綠部署時，您無法建立自己的自訂 Canary 或線性部署組態。如需使用 CloudFormation 管理 Amazon ECS 藍/綠部署step-by-step說明，請參閱*CloudFormation 《 使用者指南*》中的[使用 CodeDeploy 自動化 ECS 藍/綠部署 CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)。

**注意**  
在歐洲 （米蘭）、非洲 （開普敦） 和亞太區域 （大阪） 區域 CloudFormation 無法使用 管理 Amazon ECS 藍/綠部署。

## AWS Lambda 運算平台上的部署組態
<a name="deployment-configuration-lambda"></a>

當您部署到 AWS Lambda 運算平台時，部署組態會指定流量轉移到應用程式中新 Lambda 函數版本的方式。您可以使用 **Canary**、**線性**或**all-at-once**組態來轉移流量。如需詳細資訊，請參閱[Deployment configuration (部署組態)](primary-components.md#primary-components-deployment-configuration)。

您也可以建立您自己的自訂 Canary 或線性部署組態。如需詳細資訊，請參閱[使用 CodeDeploy 建立部署組態](deployment-configurations-create.md)。

### AWS Lambda 運算平台的預先定義部署組態
<a name="deployment-configurations-predefined-lambda"></a>

下表列出 AWS Lambda 部署可用的預先定義組態。


****  

| Deployment configuration (部署組態) | Description | 
| --- | --- | 
|  CodeDeployDefault.LambdaCanary10Percent5Minutes  |  在第一個遞增中移動 10% 的流量。剩餘的 90% 會在五分鐘之後部署。  | 
|  CodeDeployDefault.LambdaCanary10Percent10Minutes  |  在第一個遞增中移動 10% 的流量。剩餘的 90% 會在 10 分鐘之後部署。  | 
|  CodeDeployDefault.LambdaCanary10Percent15Minutes  |  在第一個遞增中移動 10% 的流量。剩餘的 90% 會在 15 分鐘後部署。  | 
|  CodeDeployDefault.LambdaCanary10Percent30Minutes  |  在第一個遞增中移動 10% 的流量。剩餘的 90% 會在 30 分鐘之後部署。  | 
|  CodeDeployDefault.LambdaLinear10PercentEvery1Minute  | 每分鐘移動 10% 的流量，直到所有流量移動完畢。 | 
|  CodeDeployDefault.LambdaLinear10PercentEvery2Minutes  |  每兩分鐘移動 10% 的流量，直到所有流量移動完畢。  | 
|  CodeDeployDefault.LambdaLinear10PercentEvery3Minutes  |  每三分鐘移動 10% 的流量，直到所有流量移動完畢。  | 
| CodeDeployDefault.LambdaLinear10PercentEvery10Minutes | 每 10 分鐘移動 10% 的流量，直到所有流量移動完畢。 | 
|  CodeDeployDefault.LambdaAllAtOnce  |  將所有流量一次轉移到更新的 Lambda 函數。  | 

## 主題
<a name="topiclist-deployment-configurations"></a>
+ [Create a Deployment Configuration](deployment-configurations-create.md)
+ [View Deployment Configuration Details](deployment-configurations-view-details.md)
+ [Delete a Deployment Configuration](deployment-configurations-delete.md)

# 使用 CodeDeploy 建立部署組態
<a name="deployment-configurations-create"></a>

如果您不想使用 CodeDeploy 隨附的其中一個預設部署組態，您可以使用下列指示建立自己的組態。

您可以使用 CodeDeploy 主控台 AWS CLI、CodeDeploy APIs 或 CloudFormation 範本來建立自訂部署組態。

如需使用 CloudFormation 範本建立部署組態的詳細資訊，請參閱 [CloudFormation CodeDeploy 參考的 範本](reference-cloudformation-templates.md)。

**Topics**
+ [建立部署組態 （主控台）](#deployment-configurations-create-console)
+ [使用 CodeDeploy 建立部署組態 (AWS CLI)](#deployment-configurations-create-cli)

## 建立部署組態 （主控台）
<a name="deployment-configurations-create-console"></a>

使用以下指示，使用 AWS 主控台建立部署組態。

**使用主控台在 CodeDeploy 中建立部署組態**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，選擇**部署組態**。

   顯示內建部署組態的清單。

1. 選擇 **Create deployment configuration (建立部署組態)**。

1. 在**部署組態名稱**中，輸入部署組態的名稱。例如 **my-deployment-config**。

1. 在**運算平台**下，選擇下列其中一項：
   + **EC2/內部部署**
   + **AWS Lambda**
   + **Amazon ECS**

1. 執行以下任意一項：
   + 如果您選擇 **EC2/內部部署**：

     1. 在**運作狀態良好的最低主機**下，指定必須在部署期間隨時保持可用的執行個體數量或百分比。如需 CodeDeploy 在部署期間如何監控和評估執行個體運作狀態的詳細資訊，請參閱 [CodeDeploy 執行個體運作狀態](instances-health.md)。

     1. （選用） 在**區域組態**下，選取**啟用區域組態**，讓 CodeDeploy 一次將您的應用程式部署到區域內 AWS 的一個[可用區域](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones)。透過一次部署到一個可用區域，您可以向越來越多的受眾公開部署，因為對部署效能和可行性增加的信心。如果您未啟用區域組態，CodeDeploy 會將您的應用程式部署到跨區域的隨機主機選擇。

        如果您啟用區域組態功能，請注意下列事項：
        + 只有在 Amazon EC2 執行個體就地部署時，才支援區域組態功能。（不支援藍/綠部署和內部部署執行個體。) 如需就地部署的詳細資訊，請參閱 [部署類型](primary-components.md#primary-components-deployment-type)。
        + [預先定義的部署](deployment-configurations.md#deployment-configurations-predefined)組態不支援區域組態功能。若要使用區域組態，您必須建立自訂部署組態，如此處所述。
        + 如果 CodeDeploy 需要復原部署，CodeDeploy 將在隨機主機上執行復原操作。(CodeDeploy 不會如您預期一次復原一個區域。) 基於效能原因選擇此轉返行為。如需轉返的詳細資訊，請參閱 [使用 CodeDeploy 重新部署以及復原部署](deployments-rollback-and-redeploy.md)。

     1. 如果您選取**啟用區域組態**核取方塊，請選擇性地指定下列選項：
        + （選用） 在**監控持續時間**中，指定 CodeDeploy 在完成部署至可用區域後必須等待的期間，以秒為單位。CodeDeploy 會等待這段時間，再開始部署到下一個可用區域。考慮新增監控持續時間，讓部署有時間在一個可用區域中證明自己 （或「製作」)，然後再在下一個區域中發佈。如果您未指定監控持續時間，則 CodeDeploy 會立即開始部署到下一個可用區域。如需**監控持續時間**設定如何運作的詳細資訊，請參閱 [每個可用區域的運作狀態良好執行個體數量下限](instances-health.md#minimum-healthy-hosts-az)。
        + （選用） 選取**新增第一個區域的監控持續時間**，以設定僅適用於第一個可用區域的監控持續時間。如果您想要為第一個可用區域允許額外的製作時間，您可以設定此選項。如果您未在**新增第一個區域監控持續時間**中指定值，則 CodeDeploy 會使用第一個可用區域的**監控持續時間**值。
        + （選用） 在**每個區域運作狀態良好的最低主機**下，指定部署期間每個可用區域必須保持可用的執行個體數量或百分比。選擇 **FLEET\$1PERCENT** 以指定百分比，或選擇 **HOST\$1COUNT** 以指定數字。此欄位可與運作**狀態良好的主機下限**欄位搭配使用。如需詳細資訊，請參閱[每個可用區域的運作狀態良好執行個體數量下限](instances-health.md#minimum-healthy-hosts-az)。

          如果您未在**每個區域運作狀態良好的最低主機下指定值**，則 CodeDeploy 會使用預設值 `0`%。
   + 如果您選擇 **AWS Lambda**或 **Amazon ECS**：

     1. 針對**類型**，選擇**線性**或 **Canary**。

     1. 在**步驟**和**間隔**欄位中，執行下列其中一項：
        + 如果您選擇 **Canary**，請在**步驟**中輸入要轉移的流量百分比，介於 1 到 99 之間。這是在第一個增量中轉移的流量百分比。剩餘的流量會在第二個增量之選定間隔後轉移。

          針對**間隔**，輸入第一個和第二個流量轉移之間的分鐘數。
        + 如果您選擇**線性**，請在**步驟**中輸入要轉移的流量百分比，介於 1 到 99 之間。這是在每個間隔開始時轉移的流量百分比。

          針對**間隔**，輸入每個增量輪班之間的分鐘數。

1. 選擇 **Create deployment configuration (建立部署組態)**。

   您現在擁有可與部署群組建立關聯的部署組態。

## 使用 CodeDeploy 建立部署組態 (AWS CLI)
<a name="deployment-configurations-create-cli"></a>

若要使用 AWS CLI 建立部署組態，請呼叫 [create-deployment-config](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-config.html) 命令。



下列範例會建立名為 的 EC2/現場部署組態`ThreeQuartersHealthy`，要求 75% 的目標執行個體在部署期間保持運作狀態：

```
aws deploy create-deployment-config --deployment-config-name ThreeQuartersHealthy --minimum-healthy-hosts type=FLEET_PERCENT,value=75
```



下列範例會建立名為 的 EC2/現場部署組態`300Total50PerAZ`，每個部署總共需要 300 個目標執行個體才能維持運作狀態，而每個可用區域需要 50 個執行個體才能維持運作狀態。它也會設定 1 小時的監控持續時間。

```
aws deploy create-deployment-config --deployment-config-name 300Total50PerAZ --minimum-healthy-hosts type=HOST_COUNT,value=300 --zonal-config '{"monitorDurationInSeconds":3600,"minimumHealthyHostsPerZone":{"type":"HOST_COUNT","value":50}}'
```





下列範例會建立名為 的 AWS Lambda 部署組態`Canary25Percent45Minutes`。它使用 Canary 轉換功能，轉換第一個遞增的 25% 的流量。剩餘的 75% 會在 45 分鐘之後轉移。

```
aws deploy create-deployment-config --deployment-config-name Canary25Percent45Minutes --traffic-routing-config "type="TimeBasedCanary",timeBasedCanary={canaryPercentage=25,canaryInterval=45}" --compute-platform Lambda
```



下列範例會建立名為 的 Amazon ECS 部署組態`Canary25Percent45Minutes`。它使用 Canary 轉換功能，轉換第一個遞增的 25% 的流量。剩餘的 75% 會在 45 分鐘之後轉移。

```
aws deploy create-deployment-config --deployment-config-name Canary25Percent45Minutes --traffic-routing-config "type="TimeBasedCanary",timeBasedCanary={canaryPercentage=25,canaryInterval=45}" --compute-platform ECS
```

# 使用 CodeDeploy 檢視部署組態詳細資訊
<a name="deployment-configurations-view-details"></a>

您可以使用 CodeDeploy 主控台 AWS CLI、 或 CodeDeploy APIs 來檢視與 AWS 您的帳戶相關聯的部署組態詳細資訊。如需預先定義 CodeDeploy 部署組態的說明，請參閱 [EC2/內部部署運算平台的預先定義部署組態](deployment-configurations.md#deployment-configurations-predefined)。

**Topics**
+ [檢視部署組態詳細資訊 （主控台）](#deployment-configurations-view-details-console)
+ [檢視部署組態 (CLI)](#deployment-configurations-view-details-cli)

## 檢視部署組態詳細資訊 （主控台）
<a name="deployment-configurations-view-details-console"></a>

若要使用 CodeDeploy 主控台檢視部署組態名稱清單：

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，展開**部署**，然後選擇**部署組態**。

    您可以在此看到部署組態名稱和每個部署組態的條件。
**注意**  
如果未顯示任何項目，請確定已選取正確的區域。在導覽列的區域選擇器中，選擇 中[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一個區域*AWS 一般參考*。CodeDeploy 僅支援這些區域。

## 檢視部署組態 (CLI)
<a name="deployment-configurations-view-details-cli"></a>

若要使用 AWS CLI 來檢視部署組態詳細資訊，請呼叫 `get-deployment-config`命令或 `list-deployment-configs`命令。

若要檢視單一部署組態的詳細資訊，請呼叫 [get-deployment-config](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-config.html) 命令，指定唯一的部署組態名稱。

若要檢視多個部署組態的詳細資訊，請呼叫 [list-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html) 命令。

# 使用 CodeDeploy 刪除部署組態
<a name="deployment-configurations-delete"></a>

您可以使用 AWS CLI 或 CodeDeploy APIs來刪除與 AWS 您的帳戶相關聯的自訂部署組態。您無法刪除內建的部署組態，例如 `CodeDeployDefault.AllAtOnce`、`CodeDeployDefault.HalfAtATime` 和 `CodeDeployDefault.OneAtATime`。

**警告**  
您無法刪除仍在使用中的自訂部署組態。如果您刪除一個未使用的自訂部署組態，您將無法再為它與新的部署及新的部署群組建立關聯性。這個操作無法復原。

若要使用 AWS CLI 刪除部署組態，請呼叫 [delete-deployment-config](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-deployment-config.html) 命令，指定部署組態名稱。若要檢視部署組態名稱清單，請呼叫 [list-deployment-configs](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-configs.html) 命令。

以下範例刪除名為 ThreeQuartersHealthy 的部署組態。

```
aws deploy delete-deployment-config --deployment-config-name ThreeQuartersHealthy
```