

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

# 以早期成功條件提早完成 Amazon ECS 滾動部署
<a name="early-success-criteria"></a>

當您更新使用滾動部署策略的服務時，Amazon ECS 會啟動部署，將來源服務修訂版上的任務取代為目標服務修訂版上的新任務。Amazon ECS 會在下列所有條件成立後完成部署：
+ 目標服務修訂達到所需計數的 100%，而且其所有任務都執行正常。
+ 部署斷路器或 CloudWatch 警示不會觸發轉返。
+ 如果您使用警示型轉返，則會經過製作時間。
+ 來源服務修訂上的任務已清除。

透過早期成功條件，您可以根據工作負載的可信度和操作需求，在 Amazon ECS 完成部署時進行設定。

您可以在下列案例中使用早期成功條件：
+ 您確信目標服務修訂版上運作狀態良好的任務百分比足以完成部署，而且您想要提早完成，以便後續部署、CI/CD 管道和其他相依操作可以繼續進行。
+ 您的服務會在特殊化或限制容量上執行，例如 GPU 加速推論工作負載，因為硬體可用性，某些任務需要更長的時間才能啟動。
+ 您的服務在來源服務修訂版上有緩慢耗盡的任務，否則會使部署保持開啟，例如具有長期連線的任務。
+ 您希望部署斷路器或 CloudWatch 警示轉返保護部署，直到目標服務修訂版達到您定義的運作狀態層級，而且在該時間點之後您不希望轉返。

您可以在部署組態中使用下列設定來定義條件。

## 健康百分比
<a name="early-success-criteria-healthy-percent"></a>

`earlySuccessCriteria.healthyPercent` 代表在 Amazon ECS 完成部署之前，必須在目標服務修訂版上執行且運作狀態良好的任務數量，以服務所需任務數量的百分比表示。此值會向上捨入。例如，如果運作狀態良好的百分比為 90，而所需的計數為 100，Amazon ECS 會在 90 個任務正常運作後完成部署。如果運作狀態百分比為 50，且所需計數為 3，Amazon ECS 會在 2 個任務正常運作後完成部署。

當任務通過您為服務設定的運作狀態檢查時，其運作狀態良好。

Amazon ECS 透過定期服務擴展，在部署之外的目標服務修訂上啟動任何剩餘的任務。Amazon ECS 完成部署後，部署斷路器和 CloudWatch 警示復原將不再適用。

運作狀態百分比必須介於 服務`minimumHealthyPercent`與 100 之間。

## 來源服務修訂清除
<a name="early-success-criteria-source-cleanup"></a>

`earlySuccessCriteria.sourceServiceRevisionCleanup` 決定 Amazon ECS 何時清除來源服務修訂中的任務。它有兩個值， `BLOCKING`和 `DEFERRED`。

使用 時`BLOCKING`，部署會依下列順序進行：

1. 運作狀態良好的任務百分比，且目標服務修訂版運作狀態良好。

1. 如果您使用警示型轉返，則會經過製作時間。

1. Amazon ECS 會清除來源服務修訂版上的任務。

1. Amazon ECS 完成部署。

使用 時`DEFERRED`，部署會依下列順序進行：

1. 運作狀態良好的任務百分比，且目標服務修訂版運作狀態良好。

1. 如果您使用警示型轉返，則會經過製作時間。

1. Amazon ECS 完成部署。

1. Amazon ECS 會在部署之外清除來源服務修訂版上的任務。

使用 `DEFERRED`，Amazon ECS 會嘗試清除來源服務修訂中的任務長達兩週。

`DEFERRED` 用於具有長期連線或任務縮減保護的服務，其中來源服務修訂中的任務可能需要繼續執行，而不保持部署開啟。當耗盡來源服務修訂是長尾操作，而且您的 CI/CD 工具具有時間限制時，這很有用。當達到運作狀態良好的百分比時，Amazon ECS 會完成部署，而來源服務修訂上的任務會在部署之外耗盡。

## Amazon ECS 如何評估早期成功條件
<a name="early-success-criteria-evaluation"></a>

Amazon ECS 會在下列所有條件成立後，完成使用早期成功條件的部署：
+ 目標服務修訂版上執行且運作狀態良好的任務數量，至少是所需計數的運作狀態良好百分比，四捨五入。
+ 部署斷路器或 CloudWatch 警示不會觸發轉返。
+ 如果您使用警示型轉返，則會經過製作時間。
+ 如果來源服務修訂清除為 `BLOCKING`，則會清除來源服務修訂上的任務。

Amazon ECS 會在目標服務修訂版上啟動至少一個任務，並等待運作狀態良好，再評估運作狀態良好百分比。


**運作狀態良好的任務計數範例**  

| 所需計數 | 健康百分比 | 必要的正常運作任務 （四捨五入） | 
| --- | --- | --- | 
| 2 | 50 | 1 | 
| 3 | 50 | 2 | 
| 10 | 80 | 8 | 
| 100 | 90 | 90 | 
| 10 | 100 | 10 | 

## 設定早期成功條件
<a name="early-success-criteria-configure"></a>

您可以使用 主控台或 ，為新的或現有的服務設定早期成功條件 AWS CLI。

主控台  
在建立服務或更新服務流程的部署組態下，開啟早期成功條件。輸入運作狀態百分比的值，然後選擇封鎖或延遲的來源服務修訂清除選項。

AWS CLI  
當您建立或更新服務時，請在 `--deployment-configuration` 參數中設定`earlySuccessCriteria`值。  

```
aws ecs update-service \
    --cluster MyCluster \
    --service MyService \
    --deployment-configuration '{
        "strategy": "ROLLING",
        "earlySuccessCriteria": {
            "enable": true,
            "healthyPercent": 90,
            "sourceServiceRevisionCleanup": "BLOCKING"
        }
    }'
```

## 您觀察到的內容
<a name="early-success-criteria-observe"></a>
+ `DescribeServiceDeployments` 會傳回部署狀態和設定的早期成功條件。部署進行中時，任務計數為即時。部署完成後，任務計數是部署完成時的快照。這同時適用於 `BLOCKING`和 `DEFERRED`。
+ 若要檢視服務的即時任務計數，請使用 `DescribeServices`。
+ 當您`ListServiceDeployments`依 狀態篩選時，會包含提早完成的部署`SUCCESSFUL`。
+ 部署狀態變更事件和 AWS CloudTrail 記錄會顯示`IN_PROGRESS``SUCCESSFUL`生命週期的標準。早期成功條件不會新增部署狀態。

## 考量事項
<a name="early-success-criteria-considerations"></a>

在使用早期成功條件之前，請檢閱下列考量事項。

部署期間會套用轉返監控  
部署斷路器和 CloudWatch 警示復原是部署的故障偵測機制。他們可以在部署進行時轉返部署。Amazon ECS 完成部署後，這些機制不會再復原服務，包括當 Amazon ECS 透過定期服務擴展啟動任何剩餘任務時。您無法在部署完成後停止部署。將運作狀態百分比設定為您確信目標服務修訂版運作狀態良好的百分比。

`DEFERRED` 清除  
使用 `DEFERRED`，Amazon ECS 會在完成部署後清除來源服務修訂版上的任務。如果來源服務修訂版上的任務在部署後超過兩週內受到任務縮減保護或其他機制的保護，Amazon ECS 將無法清除它們。使用 `DescribeServices`來監控來源服務修訂版上的任務。