

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

# Amazon Amazon ECS 啟動類型和容量提供者
<a name="capacity-launch-type-comparison"></a>

Amazon ECS 提供兩種方法來設定工作負載的容量。您可以使用啟動類型或容量提供者。啟動類型包括 EC2、Fargate 和 External。容量提供者為容量管理提供增強的靈活性和進階功能。您可以使用 Fargate 和 Fargate Spot 容量提供者在無伺服器運算上執行工作負載、透過 Auto Scaling 群組容量提供者在自我管理的 EC2 執行個體上執行工作負載，或使用結合 Fargate 簡易性和 EC2 運算彈性的 Amazon ECS 受管執行個體容量提供者在全受管運算上執行工作負載。容量提供者可更好地控制資源配置，並有助於最佳化效能和成本。與傳統啟動類型相比，容量提供者是為工作負載設定容量的建議方法。使用下列內容來了解容量提供者與啟動類型之間的差異。

## 最佳實務
<a name="comparison-launch-types-vs-capacity-providers"></a>

以下是最佳實務：

使用啟動類型來定義基礎設施相容性  
啟動類型定義任務和服務執行所在的基礎設施。當您定義任務時，請指定 `RequiresCompatibilities` 以包含與任務相容的一或多個啟動類型。您可以使用下列啟動類型：EC2、Fargate、外部和 Amazon ECS 受管執行個體。雖然您也可以使用啟動類型來執行任務或服務，但我們建議您只將啟動類型用於在任務定義中定義相容性，並使用容量提供者來啟動任務或服務。請注意，您可以選擇一或多個啟動類型來定義任務的相容性。

使用容量提供者來設定運算容量  
當您啟動任務或服務時，請設定容量提供者策略。Amazon ECS 支援下列容量提供者：Fargate 和 FARGATE\$1SPOT、自我管理 EC2 執行個體的 Auto Scaling 群組，以及 Amazon ECS 受管執行個體。請注意，Spot Fleet 只能作為容量提供者使用，不能作為啟動類型使用。您可以在叢集中建立一或多個 Amazon ECS 受管執行個體或 Auto Scaling 群組容量提供者。Fargate 和 Fargate Spot 容量提供者是由 Amazon ECS 在每個叢集上建立和管理，您不需要建立它們。叢集可以混合所有容量提供者類型，但容量提供者策略不能混合不同的容量提供者類型。

更新 服務的容量  
您可以直接更新服務的容量提供者策略，將其從一種運算類型移至另一種。

## 服務可變性
<a name="service-mutability"></a>

 Amazon ECS 支援更新不同容量提供者之間的服務。這允許：
+ 從啟動類型無縫更新至容量提供者
+ 不同容量提供者類型之間的轉換
+ 在沒有服務重新建立的情況下測試不同的運算選項

以下是程序的高階概觀：

1. 更新任務定義 – 例如確保 `requiresCompatibilities` 包含目標容量提供者` MANAGED_INSTANCES`。
**注意**  
任務定義必須通過目標容量提供者的相容性驗證。如果任務定義版本的`requiresCompatibilities`檢查失敗，`UpdateService`呼叫會失敗。

1. 建立容量提供者 – 如果您使用自訂 Amazon EC2 Auto Scaling 群組，請建立容量提供者。

1. 更新服務 – 修改服務以使用容量提供者策略，而非啟動類型。

1. 驗證部署 – 確認任務部署成功。

1. 監控和最佳化 – 視需要調整容量提供者設定。

### 容量提供者至容量提供者
<a name="capacity-provider-to-capacity-provider"></a>

支援容量提供者到容量提供者的所有更新：
+ Amazon EC2 Auto Scaling 群組容量提供者至 Amazon ECS 受管執行個體
+ Fargate 容量提供者至 Amazon ECS 受管執行個體
+ Amazon EC2 Auto Scaling 群組容量提供者至 Fargate 容量提供者
+ Amazon ECS 受管執行個體到 Fargate 容量提供者
+ Fargate 容量提供者至 Amazon EC2 Auto Scaling 群組容量提供者
+ Amazon ECS 受管執行個體到 Amazon EC2 Auto Scaling 群組容量提供者

### 容量提供者的啟動類型
<a name="launch-type-to-capacity-provider"></a>

支援容量提供者更新的所有啟動類型：
+ Amazon ECS 受管執行個體的 EC2 啟動類型
+ Amazon ECS 受管執行個體的 Fargate 啟動類型
+ Fargate 容量提供者的 EC2 啟動類型
+ EC2 Auto Scaling 群組容量提供者的 EC2 啟動類型
+ Amazon EC2 Auto Scaling 群組容量提供者的 Fargate 啟動類型
+ Fargate 啟動類型至 Fargate 容量提供者
+ Amazon ECS 受管執行個體的外部啟動類型
+ Fargate 容量提供者的外部啟動類型
+ Amazon EC2 Auto Scaling 群組容量提供者的外部啟動類型

### 啟動類型以啟動類型
<a name="launch-type-to-launch-type"></a>

不支援啟動類型的啟動類型更新：
+ 從 EC2 啟動類型到 Fargate 啟動類型 （改用 Fargate 容量提供者）
+ Fargate 啟動類型至 EC2 啟動類型 （請改用 Amazon EC2 Auto Scaling 群組容量提供者）

遷移到同等容量提供者，以增強功能和未來相容性，而不是在啟動類型之間遷移。

### 要啟動類型的容量提供者
<a name="capacity-provider-to-launch-type"></a>

不支援啟動類型更新的容量提供者。如果您最初使用啟動類型建立服務，然後更新服務以使用容量提供者，您可以將服務還原為其原始啟動類型。若要還原，當您呼叫 `capacityProviderStrategy`時，請傳遞空清單做為 `UpdateService`。

JSON：

```
"capacityProviderStrategy": []
```

AWS CLI:

```
--capacity-provider-strategy '[]'
```

**注意**  
這只會將服務還原為最初建立服務時指定的啟動類型。您無法使用此方法將服務切換到不同的啟動類型。

**注意**  
任務定義必須通過目標容量提供者的相容性驗證。如果任務定義版本的`requiresCompatibilities`檢查失敗，`UpdateService`呼叫會失敗。