

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

# Amazon ECS 的 Amazon EC2 容器執行個體
<a name="create-capacity"></a>

Amazon ECS 容器執行個體是執行 Amazon ECS 容器代理程式並已在叢集中註冊的 Amazon EC2 執行個體。使用容量提供者、外部容量提供者或 Auto Scaling 群組容量提供者透過 Amazon ECS 執行任務時，任務會置放在作用中的容器執行個體上。您必須負責容器執行個體的管理與維護。

雖然您可以建立自己的 Amazon EC2 執行個體 AMI，以符合在 Amazon ECS 上執行容器化工作負載所需的基本規格，但 Amazon ECS 最佳化 AMIs 是由 AWS 工程師在 Amazon ECS 上預先設定和測試。這是讓您快速上手並在 AWS 上執行容器最簡單的方法。

透過主控台建立叢集時，Amazon ECS 會使用與所選作業系統相關聯的最新 AMI 為執行個體建立啟動範本。

當您使用 CloudFormation 建立叢集時，SSM 參數是 Auto Scaling 群組執行個體的 Amazon EC2 啟動範本的一部分。您可以設定範本，透過動態 Systems Manager 參數來決定要部署的 Amazon ECS 最佳化 AMI。此參數可確保每次部署堆疊時，檢查是否有需要套用至 EC2 執行個體的可用更新。如需如何使用 Systems Manager 參數的範例，請參閱 *AWS CloudFormation User Guide* 中的 [Create an Amazon ECS cluster with the Amazon ECS-optimized Amazon Linux 2023 AMI](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#aws-resource-ecs-cluster--examples--Create_an_cluster_with_the_Amazon_Linux_2023_ECS-Optimized-AMI)。
+ [擷取 Amazon ECS 最佳化 Linux AMI 中繼資料](retrieve-ecs-optimized_AMI.md)
+ [擷取 Amazon ECS 最佳化 Bottlerocket AMI 中繼資料](ecs-bottlerocket-retrieve-ami.md)
+ [擷取 Amazon ECS 最佳化 Windows AMI 中繼資料](retrieve-ecs-optimized_windows_AMI.md)

您可以從與應用程式相容的執行個體類型中選擇。使用容量較大的執行個體，您可以同時啟動更多任務。使用較小的執行個體，您能夠以更精細的橫向擴充方式節省成本。您不需要選擇適合叢集中所有應用程式的單一 Amazon EC2 執行個體類型。相反地，您可以建立多個 Auto Scaling 群組，每個群組使用不同的執行個體類型。然後，您可以為這些群組中的每一個建立 Amazon EC2 容量提供者。

依據以下準則，決定要使用的執行個體系列類型與執行個體類型：
+ 排除不符合應用程式特定需求的執行個體類型或執行個體系列。例如，如果您的應用程式需要 GPU，您可以排除任何沒有 GPU 的執行個體類型。
+ 考量包括網路輸送量與儲存空間在內的需求。
+ 考量 CPU 與記憶體。一般而言，CPU 和記憶體必須足夠容納至少一個要執行任務的複本。

## Spot 執行個體
<a name="container-instance-spot"></a>

相較於隨需執行個體，Spot 容量可大幅節省成本。Spot 容量是指超額容量，其價格明顯低於隨需或預留容量。Spot 容量適用於批次處理和機器學習工作負載，以及開發和預備環境。更一般來說，它適用於任何能容忍暫時停機的工作負載。

了解下列結果，因為 Spot 容量可能無法隨時可用。
+ 在需求極高期間，Spot 容量可能無法使用。這可能會導致 Amazon EC2 Spot 執行個體啟動延遲。在這些事件中，Amazon ECS 服務會重試啟動任務，而 Amazon EC2 Auto Scaling 群組也會重試啟動執行個體，直到所需的容量可用為止。Amazon EC2 不會以隨需容量取代 Spot 容量。
+ 當容量的整體需求增加時，Spot 執行個體與任務可能只會在收到警告兩分鐘後隨即終止。在傳送警告之後，任務應該在執行個體完全終止之前，視需要開始依序關機。這有助於將錯誤的可能性降至最低。如需正常關機的詳細資訊，請參閱[使用 ECS 正常關機](https://aws.amazon.com/blogs/containers/graceful-shutdowns-with-ecs/)。

若要協助減少 Spot 容量短缺，請考慮下列建議：
+ 使用多個區域和可用區域：Spot 容量會因區域和可用區域而異。您可以透過在多個區域和可用區域執行工作負載來提高 Spot 可用性。如果可能，請在您執行任務和執行個體的區域中，在所有可用區域中指定子網路。
+ 使用多個 Amazon EC2 執行個體類型：當您將混合執行個體政策與 Amazon EC2 Auto Scaling 搭配使用時，會在您的 Auto Scaling 群組中啟動多個執行個體類型。這可確保在需要時能滿足 Spot 容量的請求。為了將可靠性最大化並將複雜性最小化，請在混合執行個體政策中使用 CPU 和記憶體數量大致相同的執行個體類型。這些執行個體可以來自不同世代，也可以是相同基礎執行個體類型的變體。請注意，它們可能擁有您可能不需要的其他功能。這類清單的範例可能包括 m4.large、m5.large、m5a.large、m5d.large、m5n.large、m5dn.large 和 m5ad.large。如需詳細資訊，請參閱「Amazon EC2 Auto Scaling 使用者指南」**中的[具備多個執行個體類型及購買選項的 Auto Scaling 群組](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)。
+ 使用容量最佳化的 Spot 配置策略：使用 Amazon EC2 Spot，您可以在容量和成本最佳化配置策略之間進行選擇。如果您在啟動新執行個體時選擇容量最佳化策略，Amazon EC2 Spot 會在所選可用區域中選取具有最高可用性的執行個體類型。這有助於降低執行個體在啟動後立即終止的可能性。

如需有關如何在容器執行個體上設定 Spot 終止通知的資訊，請參閱：
+ [設定 Amazon ECS Linux 容器執行個體接收 Spot 執行個體通知](spot-instance-draining-linux-container.md)
+ [設定 Amazon ECS Windows 容器執行個體接收 Spot 執行個體通知](windows-spot-instance-draining-container.md)

# Amazon ECS 最佳化 Linux AMI
<a name="ecs-optimized_AMI"></a>

**重要**  
Amazon ECS 最佳化 Amazon Linux 2 AMI 將於 2026 年 6 月 30 日終止服務，與上游 Amazon Linux 2 作業系統的相同終止服務日期同步 (如需詳細資訊，請參閱 [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/))。建議客戶將應用程式升級至 Amazon Linux 2023，該版本提供直至 2028 年的長期技術支援。如需有關從 Amazon Linux 2 遷移至 Amazon Linux 2023 的資訊，請參閱[從 Amazon Linux 2 Amazon ECS 最佳化 AMI 遷移至 Amazon Linux 2023 Amazon ECS 最佳化 AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/al2-to-al2023-ami-transition.html)。

根據預設，所有 Amazon ECS 最佳化 AMIs 的棄用日期都會設為 AMI 建立日期的兩年後。您可以使用 Amazon EC2 `DescribeImages` API 來檢查 AMI 的棄用狀態和日期。如需詳細資訊，請參閱《*Amazon Elastic Compute Cloud API 參考*》中的 [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html)。

Amazon ECS 會提供根據執行容器工作負載的需求與建議而預先設定的 Amazon ECS 最佳化 AMI。建議為 Amazon EC2 執行個體使用 Amazon ECS 最佳化 Amazon Linux 2023 AMI。透過最新的 Amazon ECS 最佳化 AMI 啟動您的容器執行個體時，可確保您接收到最新的安全性更新和容器代理程式版本。如需執行個體啟動方式的詳細資訊，請參閱 [啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

透過主控台建立叢集時，Amazon ECS 會使用與所選作業系統相關聯的最新 AMI 為執行個體建立啟動範本。

當您使用 CloudFormation 建立叢集時，SSM 參數是 Auto Scaling 群組執行個體的 Amazon EC2 啟動範本的一部分。您可以設定範本，透過動態 Systems Manager 參數來決定要部署的 Amazon ECS 最佳化 AMI。此參數可確保每次部署堆疊時，檢查是否有需要套用至 EC2 執行個體的可用更新。如需如何使用 Systems Manager 參數的範例，請參閱 *AWS CloudFormation User Guide* 中的 [Create an Amazon ECS cluster with the Amazon ECS-optimized Amazon Linux 2023 AMI](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#aws-resource-ecs-cluster--examples--Create_an_cluster_with_the_Amazon_Linux_2023_ECS-Optimized-AMI)。

如需自訂 Amazon ECS 最佳化 AMI，請參閱 GitHub 上的 [Amazon ECS Optimized AMI Build Recipes](https://github.com/aws/amazon-ecs-ami)。

下列 Amazon ECS 最佳化 AMI 的變體適用於搭配 Amazon Linux 2023 作業系統的 Amazon EC2 執行個體。


| 作業系統 | AMI | Description | 儲存組態 | 
| --- | --- | --- | --- | 
| Amazon Linux 2023 |  Amazon ECS 最佳化 Amazon Linux 2023 AMI |  Amazon Linux 2023 是新一代的 Amazon Linux AWS。建議在大部分情況下為 Amazon ECS 工作負載啟動 Amazon EC2 執行個體。如需詳細資訊，請參閱 *Amazon Linux 2023 使用者指南*中的[什麼是 Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html)。  | 根據預設，Amazon ECS 最佳化 Amazon Linux 2023 AMI 附有單個 30 GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2023 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2023 (arm64) |  Amazon ECS 最佳化 Amazon Linux 2023 (arm64) AMI |  此 AMI 以 Amazon Linux 2023 為基礎，建議在啟動 Amazon EC2 執行個體 (採用 ARM 型 AWS Graviton/Graviton 2/Graviton 3/Graviton 4 處理器的執行個體) 時為 Amazon ECS 工作負載採用。如需詳細資訊，請參閱 *Amazon EC2 Instance Types guide* 中的 [Specifications for the Amazon EC2 general purpose instances](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html)。  | 根據預設，Amazon ECS 最佳化 Amazon Linux 2023 AMI 附有單個 30 GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2023 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2023 (Neuron) |  Amazon ECS 最佳化 Amazon Linux 2023 AMI  |  此 AMI 以 Amazon Linux 2023 為基礎，適用於 Amazon EC2 Inf1、Trn1 或 Inf2 執行個體。它預先設定了 AWS Inferentia 和 AWS Trainium 驅動程式，以及 Docker 的 AWS Neuron 執行時間，這使得在 Amazon ECS 上執行機器學習推論工作負載更加輕鬆。如需詳細資訊，請參閱[AWS Neuron 機器學習工作負載的 Amazon ECS 任務定義](ecs-inference.md)。 Amazon ECS 最佳化 Amazon Linux 2023 (Neuron) AMI 未預先安裝 AWS CLI 。  | 根據預設，Amazon ECS 最佳化 Amazon Linux 2023 AMI 附有單個 30 GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2023 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2023 GPU | Amazon ECS 最佳化 Amazon Linux 2023 GPU AMI |  根據 Amazon Linux 2023，建議在為 Amazon ECS 工作負載啟動 Amazon EC2 GPU 型執行個體時使用此 AMI。它配備有已預先設定的 NVIDIA 核心驅動程式和 Docker GPU 執行時間，可讓您在 Amazon ECS 上執行利用 GPU 的工作負載。如需詳細資訊，請參閱[GPU 工作負載的 Amazon ECS 任務定義](ecs-gpu.md)。  | 根據預設，Amazon ECS 最佳化 Amazon Linux 2023 AMI 附有單個 30 GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2023 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 

下列 Amazon ECS 最佳化 AMI 的變體適用於搭配 Amazon Linux 2 作業系統的 Amazon EC2 執行個體。


| 作業系統 | AMI | Description | 儲存組態 | 
| --- | --- | --- | --- | 
|  **Amazon Linux 2**   |  Amazon ECS 最佳化 Amazon Linux 2 核心 5.10 AMI | 以 Amazon Linux 2 為基礎，在啟動 Amazon EC2 執行個體時使用此 AMI，而針對 Amazon ECS 工作負載，則使用 Linux 核心 5.10 而不是核心 4.14。Amazon ECS 最佳化 Amazon Linux 2 核心 5.10 AMI 未預先安裝 AWS CLI 。 | 依預設，基於 Amazon Linux 2 的 Amazon ECS 最佳化 AMI (Amazon ECS 最佳化 Amazon Linux 2 AMI、Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 和 Amazon ECS GPU 最佳化 AMI) 隨附有一個 30-GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
|  **Amazon Linux 2**  |  Amazon ECS 最佳化 Amazon Linux 2 AMI | 這適用於您的 Amazon ECS 工作負載。Amazon ECS 最佳化 Amazon Linux 2 AMI 不提供 AWS CLI 預先安裝。 | 依預設，基於 Amazon Linux 2 的 Amazon ECS 最佳化 AMI (Amazon ECS 最佳化 Amazon Linux 2 AMI、Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 和 Amazon ECS GPU 最佳化 AMI) 隨附有一個 30-GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
|  **Amazon Linux 2 (arm64)**  |  Amazon ECS 最佳化 Amazon Linux 2 核心 5.10 (arm64) AMI |  以 Amazon Linux 2 為基礎，此 AMI 適用於您的 Amazon EC2 執行個體，其採用 Arm 型 AWS Graviton/Graviton 2/Graviton 3/Graviton 4 處理器，而且您想要針對 Amazon ECS 工作負載使用 Linux 核心 5.10 而非 Linux 核心 4.14。如需詳細資訊，請參閱 *Amazon EC2 Instance Types guide* 中的 [Specifications for Amazon EC2 general purpose instances](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html)。 Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 不會隨附 AWS CLI 預先安裝的 。  | 依預設，基於 Amazon Linux 2 的 Amazon ECS 最佳化 AMI (Amazon ECS 最佳化 Amazon Linux 2 AMI、Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 和 Amazon ECS GPU 最佳化 AMI) 隨附有一個 30-GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2 (arm64) | Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI |  根據 Amazon Linux 2，此 AMI 適用於啟動 Amazon EC2 執行個體時，這些執行個體採用 Arm 型 AWS Graviton/Graviton 2/Graviton 3/Graviton 4 處理器，適用於 Amazon ECS 工作負載。 Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 不會隨附 AWS CLI 預先安裝的 。  | 依預設，基於 Amazon Linux 2 的 Amazon ECS 最佳化 AMI (Amazon ECS 最佳化 Amazon Linux 2 AMI、Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 和 Amazon ECS GPU 最佳化 AMI) 隨附有一個 30-GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
|  **Amazon Linux 2 (GPU)**  | Amazon ECS GPU 最佳化核心 5.10 AMI | 此 AMI 以 Amazon Linux 2 為基礎，建議在啟動基於 Amazon EC2 GPU 的執行個體時，搭配 Linux 核心 5.10 為 Amazon ECS 工作負載採用。它配備有已預先設定的 NVIDIA 核心驅動程式和 Docker GPU 執行時間，可讓您在 Amazon ECS 上執行利用 GPU 的工作負載。如需詳細資訊，請參閱[GPU 工作負載的 Amazon ECS 任務定義](ecs-gpu.md)。 | 依預設，基於 Amazon Linux 2 的 Amazon ECS 最佳化 AMI (Amazon ECS 最佳化 Amazon Linux 2 AMI、Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 和 Amazon ECS GPU 最佳化 AMI) 隨附有一個 30-GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2 (GPU) | Amazon ECS GPU 最佳化 AMI | 此 AMI 以 Amazon Linux 2 為基礎，建議在啟動基於 Amazon EC2 GPU 的執行個體時，搭配 Linux 核心 4.14 為 Amazon ECS 工作負載採用。它配備有已預先設定的 NVIDIA 核心驅動程式和 Docker GPU 執行時間，可讓您在 Amazon ECS 上執行利用 GPU 的工作負載。如需詳細資訊，請參閱[GPU 工作負載的 Amazon ECS 任務定義](ecs-gpu.md)。 | 依預設，基於 Amazon Linux 2 的 Amazon ECS 最佳化 AMI (Amazon ECS 最佳化 Amazon Linux 2 AMI、Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 和 Amazon ECS GPU 最佳化 AMI) 隨附有一個 30-GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2 (Neuron)  | Amazon ECS 最佳化 Amazon Linux 2 (Neuron) 核心 5.10 AMI  | 以 Amazon Linux 2 為基礎，此 AMI 適用於 Amazon EC2 Inf1、Trn1 或 Inf2 執行個體。它預先設定了 AWS Inferentia 搭配 Linux 核心 5.10 和 AWS Trainium 驅動程式，以及 Docker 的 AWS Neuron 執行期，這使得在 Amazon ECS 上執行機器學習推論工作負載更加輕鬆。如需詳細資訊，請參閱[AWS Neuron 機器學習工作負載的 Amazon ECS 任務定義](ecs-inference.md)。Amazon ECS 最佳化 Amazon Linux 2 (Neuron) AMI 不會隨附 AWS CLI 預先安裝的 。 | 依預設，基於 Amazon Linux 2 的 Amazon ECS 最佳化 AMI (Amazon ECS 最佳化 Amazon Linux 2 AMI、Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 和 Amazon ECS GPU 最佳化 AMI) 隨附有一個 30-GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 
| Amazon Linux 2 (Neuron)  | Amazon ECS 最佳化 Amazon Linux 2 (Neuron) AMI | 以 Amazon Linux 2 為基礎，此 AMI 適用於 Amazon EC2 Inf1、Trn1 或 Inf2 執行個體。它預先設定了 AWS Inferentia 和 AWS Trainium 驅動程式，以及 Docker 的 AWS Neuron 執行期，這使得在 Amazon ECS 上執行機器學習推論工作負載更加輕鬆。如需詳細資訊，請參閱[AWS Neuron 機器學習工作負載的 Amazon ECS 任務定義](ecs-inference.md)。Amazon ECS 最佳化 Amazon Linux 2 (Neuron) AMI 不會隨附 AWS CLI 預先安裝的 。 | 依預設，基於 Amazon Linux 2 的 Amazon ECS 最佳化 AMI (Amazon ECS 最佳化 Amazon Linux 2 AMI、Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 和 Amazon ECS GPU 最佳化 AMI) 隨附有一個 30-GiB 的根磁碟區。您可以在修改啟動階段的這個 30 GiB 根磁碟區，增加或減少您容器執行個體的可用儲存體。此儲存體用於作業系統和 Docker 映像及中繼資料。Amazon ECS 最佳化 Amazon Linux 2 AMI 的預設檔案系統為 `xfs`，並且 Docker 使用 `overlay2` 儲存驅動程式。如需詳細資訊，請參閱 Docker 文件中的[使用 OverlayFS 儲存體驅動程式](https://docs.docker.com/engine/storage/drivers/overlayfs-driver/)。 | 

Amazon ECS 在 GitHub 上提供了 Amazon ECS 最佳化 AMI 的 Linux 變體變更記錄。如需詳細資訊，請參閱[變更記錄](https://github.com/aws/amazon-ecs-ami/blob/main/CHANGELOG.md)。

Amazon ECS 最佳化 AMI 的 Linux 變體使用 Amazon Linux 2 AMI 或 Amazon Linux 2023 AMI 作為其基礎。透過查詢 Systems Manager Parameter Store API，即可擷取每個變體的 AMI 名稱。如需詳細資訊，請參閱[擷取 Amazon ECS 最佳化 Linux AMI 中繼資料](retrieve-ecs-optimized_AMI.md)。此外，還提供 Amazon Linux 2 AMI 版本備註。如需詳細資訊，請參閱 [Amazon Linux 2 版本備註](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)。此外，還提供 Amazon Linux 2023 版本備註。如需詳細資訊，請參閱 [Amazon Linux 2023 版本備註](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html)。

下列頁面提供變更的其他資訊：
+ 在 GitHub 上取得[來源 AMI 發行](https://github.com/aws/amazon-ecs-ami/releases)說明
+ Docker 文件中的 [Docker 引擎版本備註](https://docs.docker.com/engine/release-notes/)
+ NVIDIA 文件中的 [NVIDIA 驅動程式文件](https://docs.nvidia.com/datacenter/tesla/index.html)
+ GitHub 上的 [Amazon ECS agent changelog](https://github.com/aws/amazon-ecs-agent/blob/master/CHANGELOG.md)

  `ecs-init` 應用程式的原始程式碼，以及用來封裝代理程式的指令碼和組態，現在已成為代理程式儲存庫的一部分。對於 `ecs-init` 舊版本和封裝，請參閱 GitHub 上的 [Amazon ecs-init 變更紀錄](https://github.com/aws/amazon-ecs-init/blob/master/CHANGELOG.md)

## 將安全性更新套用至 Amazon ECS 最佳化 AMI
<a name="ecs-optimized-AMI-security-changes"></a>

Amazon ECS 最佳化 AMI 以 Amazon Linux 為基礎，包含自訂版本的 cloud-init。Cloud-init 是一種套件，用於在雲端運算環境中引導 Linux 映像，並在啟動執行個體時執行所需的動作。依預設，在 2024 年 6 月 12 日之前發行的所有以 Amazon Linux 為基礎的 Amazon ECS 最佳化 AMI，皆會在執行個體啟動時套用所有「關鍵」與「重要」安全性更新。

自 2024 年 6 月 12 日起，以 Amazon Linux 2 為基礎的 Amazon ECS 最佳化 AMI 版本將不再預設在啟動時更新套件。因此，建議在新版 Amazon ECS 最佳化 AMI 發布時，及時更新至最新版本。Amazon ECS 最佳化 AMI 會在有可用安全性更新或基礎 AMI 變更時發行。這將確保您收到最新的套件版本與安全性更新，而且套件版本在執行個體啟動時不可變。如需有關擷取最新 Amazon ECS 最佳化 AMI 的詳細資訊，請參閱[擷取 Amazon ECS 最佳化 Linux AMI 中繼資料](retrieve-ecs-optimized_AMI.md)。

建議將環境自動化，以便在可用時自動更新至新 AMI。如需有關可用選項的資訊，請參閱 [Amazon ECS enables easier EC2 capacity management, with managed instance draining](https://aws.amazon.com/blogs/containers/amazon-ecs-enables-easier-ec2-capacity-management-with-managed-instance-draining/)。

若要在 AMI 版本上繼續手動套用「關鍵」與「重要」安全性更新，您可以在 Amazon EC2 執行個體上執行下列命令。

```
yum update --security
```

**警告**  
 更新 docker 或容器化套件會停止主機上所有執行中的容器，這表示所有執行中的 Amazon ECS 任務都會停止。據以規劃，將服務中斷降至最低。

若要在啟動時重新啟用安全性更新，您可以在啟動 Amazon EC2 執行個體時，將以下一行新增至 cloud-init 使用者資料的 `#cloud-config` 區段。如需詳細資訊，請參閱 *Amazon Linux User Guide* 中的[Using cloud-init on Amazon Linux 2](https://docs.aws.amazon.com/linux/al2/ug/amazon-linux-cloud-init.html)。

```
#cloud-config
repo_upgrade: security
```

## Amazon ECS 最佳化 AL2023 GPU AMIs 中的版本鎖定套件
<a name="ecs-optimized-ami-version-locked-packages"></a>

某些套件對於 Amazon ECS 最佳化 AL2023 GPU AMIs 中 GPU 功能的正確、高效能行為至關重要。其中包含：
+ NVIDIA 驅動程式 (`nvidia*`)
+ 核心模組 (`kmod*`)
+ NVIDIA 程式庫 (`libnvidia*`)
+ 核心套件 (`kernel*`)

**注意**  
這並非一份詳盡無遺的清單。鎖定套件的完整清單可透過 取得 `dnf versionlock list`

這些套件為版本鎖定，以確保穩定性，並防止可能中斷 GPU 工作負載的意外變更。因此，這些套件通常應該在受管程序的範圍內進行修改，以正常處理潛在問題並維護 GPU 功能。

為了防止意外修改，`dnf versionlock`外掛程式會用於這些套件。

如果您想要修改鎖定的套件，您可以：

```
# unlock a single package
sudo dnf versionlock delete $PACKAGE_NAME

# unlock all packages
sudo dnf versionlock clear
```

**重要**  
需要更新這些套件時，客戶應考慮使用包含必要更新的最新 AMI 版本。如果需要更新現有的執行個體，則應採用涉及解鎖、更新和重新鎖定套件的謹慎方法，始終確保在整個過程中維護 GPU 功能。

# 擷取 Amazon ECS 最佳化 Linux AMI 中繼資料
<a name="retrieve-ecs-optimized_AMI"></a>

您能以程式設計方式擷取 Amazon ECS 最佳化 AMI 中繼資料。中繼資料包括 AMI 名稱、Amazon ECS 容器代理程式版本，以及包含 Docker 版本的 Amazon ECS 執行時期版本。

透過主控台建立叢集時，Amazon ECS 會使用與所選作業系統相關聯的最新 AMI 為執行個體建立啟動範本。

當您使用 CloudFormation 建立叢集時，SSM 參數是 Auto Scaling 群組執行個體的 Amazon EC2 啟動範本的一部分。您可以設定範本，透過動態 Systems Manager 參數來決定要部署的 Amazon ECS 最佳化 AMI。此參數可確保每次部署堆疊時，檢查是否有需要套用至 EC2 執行個體的可用更新。如需如何使用 Systems Manager 參數的範例，請參閱 *AWS CloudFormation User Guide* 中的 [Create an Amazon ECS cluster with the Amazon ECS-optimized Amazon Linux 2023 AMI](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#aws-resource-ecs-cluster--examples--Create_an_cluster_with_the_Amazon_Linux_2023_ECS-Optimized-AMI)。

透過查詢 Systems Manager 參數存放區 API，可以程式設計方式擷取 Amazon ECS 最佳化 AMI 的每個變體的 AMI ID、映像名稱、作業系統、容器代理程式版本、來源映像名稱以及執行時間版本。如需有關 Systems Manager 參數存放區 API 的詳細資訊，請參閱 [GetParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameters.html) 和 [GetParametersByPath](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParametersByPath.html)。

**注意**  
您的管理使用者必須擁有以下 IAM 許可，才能擷取 Amazon ECS 最佳化 AMI 中繼資料。已將這些權限新增至 `AmazonECS_FullAccess` IAM 政策。  
ssm:GetParameters
ssm:GetParameter
ssm:GetParametersByPath

## Systems Manager 參數存放區參數格式。
<a name="ecs-optimized-ami-parameter-format"></a>

以下是每個 Amazon ECS 最佳化 AMI 變體的參數名稱格式。

**Linux Amazon ECS 最佳化 AMI**
+ Amazon Linux 2023 AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2023/<version>
  ```
+ Amazon Linux 2023 (arm64) AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2023/arm64/<version>
  ```
+ Amazon Linux 2023 (Neuron) AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/<version>
  ```
+ Amazon Linux 2023 (GPU) AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2023/gpu/<version>
  ```

  Amazon Linux 2 AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/<version>
  ```
+ Amazon Linux 2 核心 5.10 AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/<version>
  ```
+ Amazon Linux 2 (arm64) AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/arm64/<version>
  ```
+ Amazon Linux 2 核心 5.10 (arm64) AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/arm64/<version>
  ```
+ Amazon ECS GPU 最佳化核心 5.10 AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/gpu/<version>
  ```
+ Amazon Linux 2 (GPU) AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/<version>
  ```
+ Amazon ECS 最佳化 Amazon Linux 2 (Neuron) 核心 5.10 AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/inf/<version>
  ```
+ Amazon Linux 2 (Neuron) AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/inf/<version>
  ```

以下參數名稱格式使用子參數 `image_id` 來擷取最新的建議 Amazon ECS 最佳化 Amazon Linux 2 AMI 的映像 ID。

```
/aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id
```

以下參數名稱格式透過指定 AMI 名稱來擷取特定 Amazon ECS 最佳化 AMI 版本的中繼資料。
+ Amazon ECS 最佳化 Amazon Linux 2 AMI 中繼資料：

  ```
  /aws/service/ecs/optimized-ami/amazon-linux-2/amzn2-ami-ecs-hvm-2.0.20181112-x86_64-ebs
  ```

**注意**  
可擷取 Amazon ECS 最佳化 Amazon Linux 2 AMI 的所有版本。只能擷取 Amazon ECS 最佳化 AMI 版本 `amzn-ami-2017.09.l-amazon-ecs-optimized` (Linux) 及更新版本。

## 範例
<a name="ecs-optimized-ami-parameter-examples"></a>

下列範例顯示您可擷取每個 Amazon ECS 最佳化 AMI 變體中繼資料的方法。

### 擷取最新的建議 Amazon ECS 最佳化 AMI 的中繼資料
<a name="ecs-optimized-ami-parameter-examples-1"></a>

您可以使用 AWS CLI 搭配下列 AWS CLI 命令，擷取最新建議的 Amazon ECS 最佳化 AMI。

**Linux Amazon ECS 最佳化 AMI**
+ **對於 Amazon ECS 最佳化 Amazon Linux 2023 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/recommended --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Amazon Linux 2023 (arm64) AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/arm64/recommended --region us-east-1
  ```
+ **Amazon ECS 最佳化 Amazon Linux 2023 (Neuron) AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended --region us-east-1
  ```
+ **Amazon ECS 最佳化 Amazon Linux 2023 GPU AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/gpu/recommended --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Amazon Linux 2 核心 5.10 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/recommended --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Amazon Linux 2 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Amazon Linux 2 核心 5.10 (arm64) AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/arm64/recommended --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/arm64/recommended --region us-east-1
  ```
+ **Amazon ECS GPU 最佳化核心 5.10 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/gpu/recommended --region us-east-1
  ```
+ **對於 Amazon ECS GPU 最佳化 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region us-east-1
  ```
+ **Amazon ECS 最佳化 Amazon Linux 2 (Neuron) 核心 5.10 AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/inf/recommended --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Amazon Linux 2 (Neuron) AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/inf/recommended --region us-east-1
  ```

### 擷取最新建議的 Amazon ECS 最佳化 Amazon Linux 2023 AMI 的映像 ID
<a name="ecs-optimized-ami-parameter-examples-6"></a>

您可以使用子參數 `image_id` 來擷取最新建議的 Amazon ECS 最佳化 Amazon Linux 2023 AMI ID 的映像 ID。

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id --region us-east-1
```

若只要擷取 `image_id` 值，您可以查詢特定的參數值，例如：

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id --region us-east-1 --query "Parameters[0].Value"
```

### 擷取特定 Amazon ECS 最佳化 Amazon Linux 2 AMI 版本的中繼資料
<a name="ecs-optimized-ami-parameter-examples-2"></a>

使用 AWS CLI 搭配下列 AWS CLI 命令，擷取特定 Amazon ECS 最佳化 Amazon Linux AMI 版本的中繼資料。將 AMI 名稱替換為要擷取的 Amazon ECS 最佳化 Amazon Linux AMI 的名稱。

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/amzn2-ami-ecs-hvm-2.0.20200928-x86_64-ebs --region us-east-1
```

### 利用 Systems Manager GetParametersByPath API 來擷取 Amazon ECS 最佳化 Amazon Linux 2 核心 5.10 AMI 中繼資料
<a name="ecs-optimized-ami-parameter-examples-3"></a>

使用 Systems Manager GetParametersByPath API 搭配 AWS CLI 下列命令擷取 Amazon ECS 最佳化 Amazon Linux 2 AMI 中繼資料。

```
aws ssm get-parameters-by-path --path /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/ --region us-east-1
```

### 擷取最新的建議 Amazon ECS 最佳化 Amazon Linux 2 核心 5.10 AMI 的映像 ID
<a name="ecs-optimized-ami-parameter-examples-4"></a>

您可以使用子參數 `image_id` 來擷取最新的建議 Amazon ECS 最佳化 Amazon Linux 2 核心 5.10 AMI ID 的映像 ID。

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/recommended/image_id --region us-east-1
```

若只要擷取 `image_id` 值，您可以查詢特定的參數值，例如：

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id --region us-east-1 --query "Parameters[0].Value"
```

### 在 CloudFormation 範本中使用最新建議的 Amazon ECS 最佳化 AMI
<a name="ecs-optimized-ami-parameter-examples-5"></a>

透過參考 Systems Manager 參數存放區名稱，可以在 CloudFormation 範本中參考最新建議的 Amazon ECS 最佳化 AMI。

**Linux 範例**

```
Parameters:kernel-5.10
  LatestECSOptimizedAMI:
    Description: AMI ID
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/recommended/image_id
```

# 從 Amazon Linux 2 遷移至 Amazon Linux 2023 Amazon ECS 最佳化 AMI
<a name="al2-to-al2023-ami-transition"></a>

遵循 [Amazon Linux](https://aws.amazon.com/amazon-linux-2/faqs) 支援政策，Amazon ECS 將於 2026 年 6 月 30 日起終止對 Amazon Linux 2 Amazon ECS 最佳化 AMI 的標準支援。此日期之後，Amazon ECS 代理程式版本將被固定，且僅當來源 Amazon Linux 2 AMI 進行更新時，才會發布新的 Amazon Linux 2 Amazon ECS 最佳化 AMI。完整終止服務 (EOL) 將與 2026 年 6 月 30 日生效，此後將不再發布 Amazon ECS 最佳化的 Amazon Linux 2 AMI，即使來源 AMI 有更新亦是如此。

Amazon Linux 2023 採用預設安全的方式，具備預先設定的安全政策、處於寬容模式的 SELinux、預設啟用的僅 IMDSv2 模式、最佳化的開機時間以及改善的套件管理功能，可大幅提升安全性與效能。

Amazon Linux 2 與 Amazon Linux 2023 Amazon ECS 最佳化 AMI 之間具有高度相容性，大多數客戶在這兩個作業系統之間遇到的工作負載變更很小，甚至為零。

如需詳細資訊，請參閱 *Amazon Linux 2023 User Guide* 中的 [Comparing Amazon Linux 2 and *Amazon Linux 2023*](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html)，以及 [AL2023 FAQs](https://aws.amazon.com/linux/amazon-linux-2023/faqs)。

## 相容性考量
<a name="al2-to-al2023-ami-transition-compatibility"></a>

### 套件管理與作業系統更新
<a name="al2-to-al2023-ami-transition-compatibility-package-management"></a>

與舊版本的 Amazon Linux 不同，Amazon ECS 最佳化 Amazon Linux 2023 AMI 會鎖定到特定版本的 Amazon Linux 儲存庫。這可以防止使用者意外更新套件，導致非必要變更或重大變更。如需詳細資訊，請參閱 *Amazon Linux 2023 User Guide* 中的 [Managing repositories and OS updates in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html)。

### Linux 核心版本
<a name="al2-to-al2023-ami-transition-compatibility-kernel"></a>

Amazon Linux 2 AMI 以 Linux 核心 4.14 與 5.10 為基礎，而 Amazon Linux 2023 使用 Linux 核心 6.1 與 6.12。如需詳細資訊，請參閱 *Amazon Linux 2023 User Guide* 中的 [Comparing Amazon Linux 2 and Amazon Linux 2023 kernels](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2-kernel.html)。

### 套件可用性變更
<a name="al2-to-al2023-ami-transition-compatibility-packages"></a>

以下是 Amazon Linux 2023 中的重要套件變更：
+ Amazon Linux 2 中的部分來源二進位套件在 Amazon Linux 2023 中不再提供。如需詳細資訊，請參閱 *Amazon Linux 2023 Release Notes* 中的 [Packages removed from Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/release-notes/removed.html)。
+ Amazon Linux 支援不同版本套件方式的變更。Amazon Linux 2 中使用的 `amazon-linux-extras` 系統不存在於 Amazon Linux 2023 中。所有套件皆可在「核心」儲存庫中使用。
+ Amazon Linux 2023 不支援適用於 Enterprise Linux (EPEL) 的額外套件。如需詳細資訊，請參閱 *Amazon Linux 2023 User Guide* 中的 [EPEL compatibility in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/epel.html)。
+ Amazon Linux 2023 不支援 32 位元應用程式。如需詳細資訊，請參閱 *Amazon Linux 2023 User Guide* 中的 [Deprecated features from Amazon Linux 2](https://docs.aws.amazon.com/linux/al2023/ug/deprecated-al2.html#deprecated-32bit-rpms)。

### 控制群組 (cgroups) 變更
<a name="al2-to-al2023-ami-transition-compatibility-cgroups"></a>

控制群組 (cgroup) 是 Linux 核心功能，用於階層式整理程序並為其分配系統資源。控制組廣泛用於執行容器執行期，並由 `systemd` 執行。

Amazon ECS 代理程式、Docker 與 containerd 都支援 cgroupv1 及 cgroupv2。Amazon ECS 代理程式與容器執行時期會代為管理 cgroup，因此 Amazon ECS 客戶不需要為此底層 cgroup 升級進行任何變更。

如需有關 cgroupv2 的更多詳細資訊，請參閱 *Amazon Linux 2023 User Guide* 中的 [Control groups v2 in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/cgroupv2.html)。

### 執行個體中繼資料服務 (IMDS) 變更
<a name="al2-to-al2023-ami-transition-compatibility-imds"></a>

Amazon Linux 2023 預設需要執行個體中繼資料服務第 2 版 (IMDSv2)。IMDSv2 有多項優勢，有助於改善安全狀態。它使用面向工作階段的身分驗證方法，需要透過一個簡單的 HTTP PUT 請求來建立一個秘密權杖以啟動工作階段。工作階段的權杖有效期可設定為 1 秒至 6 小時之間的任何時間。

如需有關從 IMDSv1 轉換至 IMDSv2 的詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [Transition to using Instance Metadata Service Version 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html)。

若您仍想使用 IMDSv1，可以透過使用執行個體中繼資料選項啟動屬性，手動覆寫設定來實現。

### 記憶體交換積極性變更
<a name="al2-to-al2023-ami-transition-compatibility-memory-swappiness"></a>

Amazon Linux 2023 與 cgroups v2 不支援容器層級的記憶體交換積極性。如需詳細資訊，請參閱[在 Amazon ECS 上管理容器交換記憶體空間](container-swap.md)。

### FIPS 驗證變更
<a name="al2-to-al2023-ami-transition-compatibility-fips"></a>

Amazon Linux 2 已通過 FIPS 140-2 認證，Amazon Linux 2023 已通過 FIPS 140-3 認證。

若要在 Amazon Linux 2023 上啟用 FIPS 模式，需在 Amazon EC2 執行個體上安裝必要套件，並遵循 *Amazon Linux 2023 User Guide* 中 [Enable FIPS Mode on Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/fips-mode.html) 的說明執行設定步驟。

### 加速執行個體支援
<a name="al2-to-al2023-ami-transition-compatibility-accelerated"></a>

Amazon ECS 最佳化 Amazon Linux 2023 AMI 同時支援 Neuron 與 GPU 兩種加速執行個體類型。如需詳細資訊，請參閱[Amazon ECS 最佳化 Linux AMI](ecs-optimized_AMI.md)。

## 建置自訂 AMI
<a name="al2-to-al2023-ami-transition-custom-ami"></a>

雖然建議遷移至官方支援與發布的 Amazon Linux 2023 Amazon ECS 最佳化 AMI，但也可透過用於建置 Amazon ECS 最佳化 AMI Linux 變體的開放原始碼建置指令碼，繼續建置自訂的 Amazon Linux 2 Amazon ECS 最佳化 AMI。如需詳細資訊，請參閱[Amazon ECS 最佳化 Linux AMI 建置指令碼](ecs-ami-build-scripts.md)。

## 遷移策略
<a name="al2-to-al2023-ami-transition-migration"></a>

建議建立並實作包含完整應用程式測試的遷移計畫。以下各節根據您管理 Amazon ECS 基礎結構的方式概述不同的遷移策略。

### 透過 Amazon ECS 容量提供者進行遷移
<a name="al2-to-al2023-ami-transition-migration-capacity-providers"></a>

1. 建立使用新啟動範本的新容量提供者。這個容量提供者應參考一個 Auto Scaling 群組，其啟動範本與您現有的類似，但需指定其中一種 Amazon Linux 2023 變體，而非 Amazon Linux 2 Amazon ECS 最佳化 AMI。將此新容量提供者新增至現有的 Amazon ECS 叢集。

1. 更新叢集的預設容量提供者策略，使其同時包含現有的 Amazon Linux 2 容量提供者與新的 Amazon Linux 2023 容量提供者。初始權重設定應以 Amazon Linux 2 提供者為主 (例如權重 80)，Amazon Linux 2023 提供者為輔 (例如權重 20)。這會使 Amazon ECS 在排程新任務時，開始佈建 Amazon Linux 2023 執行個體。確認這些執行個體能正確註冊，且任務能在新的執行個體上順利執行。

1. 隨著時間推移逐漸調整叢集預設策略中的容量提供者權重，增加 Amazon Linux 2023 提供者的權重，同時減少 Amazon Linux 2 提供者權重 (例如從 60/40 調整為 40/60，然後是 20/80)。您也可以更新個別服務容量提供者策略，排定 Amazon Linux 2023 執行個體的優先順序。監控任務置放，確保任務在 Amazon Linux 2023 執行個體上順利執行。

1. 選擇性地排空 Amazon Linux 2 容器執行個體，加速實現任務遷移。如果您有足夠的 Amazon Linux 2023 替換容量，您可以透過 Amazon ECS 主控台手動耗盡 Amazon Linux 2 容器執行個體 AWS CLI ，或加速將任務從 Amazon Linux 2 轉移至 Amazon Linux 2023。遷移完成後，從叢集中移除 Amazon Linux 2 容量提供者，同時刪除相關聯的 Auto Scaling 群組。

### 透過 Amazon EC2 Auto Scaling 群組進行遷移
<a name="al2-to-al2023-ami-transition-migration-asg"></a>

1. 建立使用新啟動範本的新 Amazon EC2 Auto Scaling 群組。這應該與您現有的啟動範本類似，但需指定其中一種 Amazon Linux 2023 變體，而非 Amazon Linux 2 Amazon ECS 最佳化 AMI。這個新建的 Auto Scaling 群組可將執行個體啟動至現有的叢集。

1. 向上擴展 Auto Scaling 群組，使 Amazon Linux 2023 執行個體開始向叢集進行註冊。確認這些執行個體能正確註冊，且任務能在新的執行個體上順利執行。

1. 確認任務在 Amazon Linux 2023 上運作後，請向上擴展 Amazon Linux 2023 Auto Scaling 群組，同時逐步縮減 Amazon Linux 2 Auto Scaling 群組規模，直至完全替換所有 Amazon Linux 2 執行個體為止。

1. 如果有足夠的 Amazon Linux 2023 替代容量，建議您明確排空容器執行個體，加速將任務從 Amazon Linux 2 轉換至 Amazon Linux 2023。如需詳細資訊，請參閱[排空 Amazon ECS 容器執行個體](container-instance-draining.md)。

### 透過手動受管執行個體進行遷移
<a name="al2-to-al2023-ami-transition-migration-manual"></a>

1. 透過 Amazon ECS 最佳化 Amazon Linux 2023 AMI 而非 Amazon Linux 2 手動啟動 (或調整啟動的指令碼) 新的 Amazon EC2 執行個體。確保這些執行個體採用與現有 Amazon Linux 2 執行個體相同的安全群組、子網路、IAM 角色與叢集組態。執行個體應在啟動時自動註冊至現有的 Amazon ECS 叢集。

1. 確認新的 Amazon Linux 2023 執行個體已成功註冊至 Amazon ECS 叢集且處於 `ACTIVE` 狀態。透過等待自然任務置放或手動停止/啟動部分任務來觸發重新排程，測試任務是否可以排程並在這些新執行個體上正常執行。

1. 透過隨需啟動額外的 Amazon Linux 2023 執行個體，逐步取代 Amazon Linux 2 執行個體，接著手動逐台排空並終止 Amazon Linux 2 執行個體。您可以透過 Amazon ECS 主控台將執行個體設定為 `DRAINING` 狀態來排空執行個體，這會停止在其中置放新任務，並允許現有任務完成或在別處重新排程。

# Amazon ECS 最佳化 Linux AMI 建置指令碼
<a name="ecs-ami-build-scripts"></a>

Amazon ECS 已採用開放原始碼的形式提供建置指令碼，可用於建置 Amazon ECS 最佳化 AMI 的 Linux 變體。這些建置指令碼現可於 GitHub 取得。如需詳細資訊，請參閱 GitHub 上的 [amazon-ecs-ami](https://github.com/aws/amazon-ecs-ami)。

如需自訂 Amazon ECS 最佳化 AMI，請參閱 GitHub 上的 [Amazon ECS Optimized AMI Build Recipies](https://github.com/aws/amazon-ecs-ami)。

此建置指令碼儲存庫包含 [HashiCorp Packer](https://developer.hashicorp.com/packer/docs) 範本及用於產生 Amazon ECS 最佳化 AMI 每個 Linux 變數的建置指令碼。這些指令碼是 Amazon ECS 最佳化 AMI 建置的真實來源，因此您可遵循 GitHub 儲存庫來監控我們 AMI 的變更。例如，您可能希望自己的 AMI 使用的 Docker 版本，與 Amazon ECS 團隊用於官方 AMI 的版本相同。

如需詳細資訊，請參閱 GitHub 上的 Amazon ECS AMI 儲存庫，網址為 [aws/amazon-ecs-ami](https://github.com/aws/amazon-ecs-ami)。

**建置 Amazon ECS 最佳化 Linux AMI**

1. 複製 `aws/amazon-ecs-ami` GitHub 儲存庫。

   ```
   git clone https://github.com/aws/amazon-ecs-ami.git
   ```

1. 為建立 AMI 時要使用 AWS 的區域新增環境變數。將 `us-west-2` 值替換為要使用的區域。

   ```
   export REGION=us-west-2
   ```

1. 提供 Makefile 以用於建置 AMI。在已複製儲存庫的根目錄中，使用以下其中一項與您要建置的 Amazon ECS 最佳化 AMI 的 Linux 變數相對應的命令。
   + Amazon ECS 最佳化 Amazon Linux 2 AMI

     ```
     make al2
     ```
   + Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI

     ```
     make al2arm
     ```
   + Amazon ECS GPU 最佳化 AMI

     ```
     make al2gpu
     ```
   + Amazon ECS 最佳化 Amazon Linux 2 (Neuron) AMI

     ```
     make al2inf
     ```
   + Amazon ECS 最佳化 Amazon Linux 2023 AMI

     ```
     make al2023
     ```
   + Amazon ECS 最佳化 Amazon Linux 2023 (arm64) AMI

     ```
     make al2023arm
     ```
   + Amazon ECS 最佳化 Amazon Linux 2023 GPU AMI

     ```
     make al2023gpu
     ```
   + Amazon ECS 最佳化 Amazon Linux 2023 (Neuron) AMI

     ```
     make al2023neu
     ```

# Amazon ECS 最佳化 Bottlerocket AMI
<a name="ecs-bottlerocket"></a>

Bottlerocket 是以 Linux為基礎的開放原始碼作業系統，專為在虛擬機器或裸機主機上執行容器 AWS 而建置。Amazon ECS 最佳化 Bottlerocket AMI 非常安全，只包括執行容器所需的最少數量套件。這可改善資源使用率、減少安全性受攻擊面，並有助於降低管理負荷。Bottlerocket AMI 也與 Amazon ECS 整合，有助於減少更新叢集中容器執行個體所涉及的營運開銷。

Bottlerocket 在以下方面不同於 Amazon Linux：
+ Bottlerocket 不包括套件管理工具，其軟體僅可作為容器執行。Bottlerocket 的更新一律套用，而且可以在單一步驟中復原，以減少發生更新錯誤的可能性。
+ 管理 Bottlerocket 主機的主要機制是使用容器排程器。與 Amazon Linux 不同的是，登入個別 Bottlerocket 執行個體的用意只是為了進階偵錯和故障排除目的，而非經常執行的操作。

如需有關 Bottlerocket 的詳細資訊，請參閱 GitHub 上的[文件](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md)和[版本](https://github.com/bottlerocket-os/bottlerocket/releases)。

有多種 Amazon ECS 最佳化 Bottlerocket AMI 核心 6.1 與核心 5.10 變體。

下列變體使用核心 6.1：
+ `aws-ecs-2`
+ `aws-ecs-2-nvidia`

下列變體使用核心 5.10：
+ `aws-ecs-1`
+ `aws-ecs-1-nvidia`

  如需有關 `aws-ecs-1-nvidia` 變體的詳細資訊，請參閱[宣布 NVIDIA GPU 支援 Amazon ECS 上的 Bottlerocket](https://aws.amazon.com/blogs/containers/announcing-nvidia-gpu-support-for-bottlerocket-on-amazon-ecs/)。

## 考量事項
<a name="ecs-bottlerocket-considerations"></a>

搭配使用 Bottlerocket AMI 與 Amazon ECS 時，應考慮以下事項。
+ Bottlerocket 支援具有 `x86_64` 與 `arm64` 處理器的 Amazon EC2 執行個體。Bottlerocket AMI 不建議與採用 Inferentia 晶片的 Amazon EC2 執行個體搭配使用。
+ Bottlerocket 映像不包含 SSH 伺服器或 Shell。不過，您可以使用頻外管理工具取得 SSH 管理員存取權並執行啟動引導。

   如需詳細資訊，請參閱 GitHub 上 [bottlerocket README.md](https://github.com/bottlerocket-os/bottlerocket) 中的這些章節：
  + [探勘](https://github.com/bottlerocket-os/bottlerocket#exploration)
  + [管理員容器](https://github.com/bottlerocket-os/bottlerocket#admin-container)
+ 在預設情況下，Bottlerocket 具有已啟用的[控制容器](https://github.com/bottlerocket-os/bottlerocket-control-container)。此容器會執行 [AWS Systems Manager 代理程式](https://github.com/aws/amazon-ssm-agent)，可以讓您在 Amazon EC2 Bottlerocket 執行個體上執行命令或啟動 Shell 工作階段。如需詳細資訊，請參閱《AWS Systems Manager 使用者指南》中的[設定工作階段管理員](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)。
+ Bottlerocket 已針對容器工作負載進行了最佳化，並著重於安全性。Bottlerocket 不包括套件管理工具，且不可變。

  如需有關安全性功能和指引的詳細資訊，請參閱 GitHub 上的[安全性功能](https://github.com/bottlerocket-os/bottlerocket/blob/develop/SECURITY_FEATURES.md)和[安全性指引](https://github.com/bottlerocket-os/bottlerocket/blob/develop/SECURITY_GUIDANCE.md)。
+ Bottlerocket AMI 版本 `1.1.0` 或更新版本支援 `awsvpc` 網路模式。
+ Bottlerocket AMI 版本 `1.15.0` 或更新版本支援任務定義中的 App Mesh。
+ Bottlerocket AMI 版本 `1.19.0` 或更新版本支援 `initProcessEnabled` 任務定義參數。
+ Bottlerocket AMI 也不支援下列服務和功能：
  + ECS Anywhere
  + Service Connect
  + Amazon EFS 處於加密模式
  + `awsvpc` 網路模式中的 Amazon EFS
  + 無法掛載 Amazon EBS 磁碟區
  + Elastic Inference 加速器

# 擷取 Amazon ECS 最佳化 Bottlerocket AMI 中繼資料
<a name="ecs-bottlerocket-retrieve-ami"></a>

您可以查詢 AWS Systems Manager 參數存放區 API，擷取 Amazon ECS 最佳化 AMIs) ID。若使用此參數，您無需手動查詢 Amazon ECS 最佳化 AMI ID。如需 Systems Manager 參數存放區 API 的詳細資訊，請參閱 [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)。您使用的使用者必須擁有 `ssm:GetParameter` IAM 許可，才能擷取 Amazon ECS 最佳化 AMI 中繼資料。

## `aws-ecs-2` Bottlerocket AMI 變體
<a name="ecs-bottlerocket-aws-ecs-2-variant"></a>

您可以透過 AWS 區域 和使用 AWS CLI 或 的架構，擷取最新的穩定 `aws-ecs-2` Bottlerocket AMI 變體 AWS 管理主控台。
+ **AWS CLI** – 您可以使用子參數 ，使用以下 AWS CLI 命令擷取最新建議的 Amazon ECS 最佳化 Bottlerocket AMI 影像 ID`image_id`。將 `region` 替換為您需要 AMI ID 的區域代碼。

  如需支援 AWS 區域的相關資訊，請參閱 GitHub 上的[尋找 AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#finding-an-ami)。若要擷取最新版本以外的版本，請以版本號碼取代 `latest`。
  + 對於 64 位元 (`x86_64`) 架構：

    ```
    aws ssm get-parameter --region us-east-2 --name "/aws/service/bottlerocket/aws-ecs-2/x86_64/latest/image_id" --query Parameter.Value --output text
    ```
  + 對於 64 位元 Arm (`arm64`) 架構：

    ```
    aws ssm get-parameter --region us-east-2 --name "/aws/service/bottlerocket/aws-ecs-2/arm64/latest/image_id" --query Parameter.Value --output text
    ```
+ **AWS 管理主控台**：您可以使用 AWS 管理主控台中的 URL 查詢建議的 Amazon ECS 最佳化 AMI ID。此 URL 會以參數的 ID 值開啟 Amazon EC2 Systems Manager 主控台。在下列 URL 中，將 `region` 替換為您需要 AMI ID 的區域代碼。

   如需 支援的資訊 AWS 區域，請參閱[在 GitHub 上尋找 AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#finding-an-ami)。 GitHub
  + 對於 64 位元 (`x86_64`) 架構：

    ```
    https://console.aws.amazon.com/systems-manager/parameters/aws/service/bottlerocket/aws-ecs-2/x86_64/latest/image_id/description?region=region#
    ```
  + 對於 64 位元 Arm (`arm64`) 架構：

    ```
    https://console.aws.amazon.com/systems-manager/parameters/aws/service/bottlerocket/aws-ecs-2/arm64/latest/image_id/description?region=region#
    ```

## `aws-ecs-2-nvidia` Bottlerocket AMI 變體
<a name="ecs-bottlerocket-aws-ecs-1-nvidia-variants"></a>

您可以使用 AWS CLI 或 ，依區域和架構擷取最新的穩定 `aws-ecs-2-nvdia` Bottlerocket AMI 變體 AWS 管理主控台。
+ **AWS CLI** – 您可以使用子參數 ，使用以下 AWS CLI 命令擷取最新建議的 Amazon ECS 最佳化 Bottlerocket AMI 的影像 ID`image_id`。將 `region` 替換為您需要 AMI ID 的區域代碼。

   如需支援 AWS 區域的相關資訊，請參閱 GitHub 上的[尋找 AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#finding-an-ami)。若要擷取最新版本以外的版本，請以版本號碼取代 `latest`。
  + 對於 64 位元 (`x86_64`) 架構：

    ```
    aws ssm get-parameter --region us-east-1 --name "/aws/service/bottlerocket/aws-ecs-2-nvidia/x86_64/latest/image_id" --query Parameter.Value --output text
    ```
  + 對於 64 位元 Arm (`arm64`) 架構：

    ```
    aws ssm get-parameter --region us-east-1 --name "/aws/service/bottlerocket/aws-ecs-2-nvidia/arm64/latest/image_id" --query Parameter.Value --output text
    ```
+ **AWS 管理主控台**：您可以使用 AWS 管理主控台中的 URL 查詢建議的 Amazon ECS 最佳化 AMI ID。此 URL 會以參數的 ID 值開啟 Amazon EC2 Systems Manager 主控台。在下列 URL 中，將 `region` 替換為您需要 AMI ID 的區域代碼。

  如需 支援的資訊 AWS 區域，請參閱[在 GitHub 上尋找 AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#finding-an-ami)。 GitHub
  + 對於 64 位元 (`x86_64`) 架構：

    ```
    https://regionconsole.aws.amazon.com/systems-manager/parameters/aws/service/bottlerocket/aws-ecs-2-nvidia/x86_64/latest/image_id/description?region=region#
    ```
  + 對於 64 位元 Arm (`arm64`) 架構：

    ```
    https://regionconsole.aws.amazon.com/systems-manager/parameters/aws/service/bottlerocket/aws-ecs-2-nvidia/arm64/latest/image_id/description?region=region#
    ```

## `aws-ecs-1` Bottlerocket AMI 變體
<a name="ecs-bottlerocket-aws-ecs-1-variant"></a>

您可以使用 AWS CLI 或 擷取最新的穩定 `aws-ecs-1` Bottlerocket AMI 變體 AWS 區域 和架構 AWS 管理主控台。
+ **AWS CLI** – 您可以使用子參數 ，使用以下 AWS CLI 命令擷取最新建議的 Amazon ECS 最佳化 Bottlerocket AMI 影像 ID`image_id`。將 `region` 替換為您需要 AMI ID 的區域代碼。

  如需支援 AWS 區域的相關資訊，請參閱 GitHub 上的[尋找 AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#finding-an-ami)。若要擷取最新版本以外的版本，請以版本號碼取代 `latest`。
  + 對於 64 位元 (`x86_64`) 架構：

    ```
    aws ssm get-parameter --region us-east-1 --name "/aws/service/bottlerocket/aws-ecs-1/x86_64/latest/image_id" --query Parameter.Value --output text
    ```
  + 對於 64 位元 Arm (`arm64`) 架構：

    ```
    aws ssm get-parameter --region us-east-1 --name "/aws/service/bottlerocket/aws-ecs-1/arm64/latest/image_id" --query Parameter.Value --output text
    ```
+ **AWS 管理主控台**：您可以使用 AWS 管理主控台中的 URL 查詢建議的 Amazon ECS 最佳化 AMI ID。此 URL 會以參數的 ID 值開啟 Amazon EC2 Systems Manager 主控台。在下列 URL 中，將 `region` 替換為您需要 AMI ID 的區域代碼。

  如需 支援的資訊 AWS 區域，請參閱[在 GitHub 上尋找 AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#finding-an-ami)。 GitHub
  + 對於 64 位元 (`x86_64`) 架構：

    ```
    https://region.console.aws.amazon.com/systems-manager/parameters/aws/service/bottlerocket/aws-ecs-1/x86_64/latest/image_id/description
    ```
  + 對於 64 位元 Arm (`arm64`) 架構：

    ```
    https://region.console.aws.amazon.com/systems-manager/parameters/aws/service/bottlerocket/aws-ecs-1/arm64/latest/image_id/description
    ```

## `aws-ecs-1-nvidia` Bottlerocket AMI 變體
<a name="ecs-bottlerocket-aws-ecs-1-nvidia-variants"></a>

您可以使用 AWS CLI 或 ，依區域和架構擷取最新的穩定 `aws-ecs-1-nvdia` Bottlerocket AMI 變體 AWS 管理主控台。
+ **AWS CLI** – 您可以使用子參數 ，使用以下 AWS CLI 命令擷取最新建議的 Amazon ECS 最佳化 Bottlerocket AMI 的影像 ID`image_id`。將 `region` 替換為您需要 AMI ID 的區域代碼。

  如需 支援的資訊 AWS 區域，請參閱[在 GitHub 上尋找 AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#finding-an-ami)。 GitHub
  + 對於 64 位元 (`x86_64`) 架構：

    ```
    aws ssm get-parameter --region us-east-1 --name "/aws/service/bottlerocket/aws-ecs-1-nvidia/x86_64/latest/image_id" --query Parameter.Value --output text
    ```
  + 對於 64 位元 Arm (`arm64`) 架構：

    ```
    aws ssm get-parameter --region us-east-1 --name "/aws/service/bottlerocket/aws-ecs-1-nvidia/arm64/latest/image_id" --query Parameter.Value --output text
    ```
+ **AWS 管理主控台**：您可以使用 AWS 管理主控台中的 URL 查詢建議的 Amazon ECS 最佳化 AMI ID。此 URL 會以參數的 ID 值開啟 Amazon EC2 Systems Manager 主控台。在下列 URL 中，將 `region` 替換為您需要 AMI ID 的區域代碼。

  如需支援 的資訊 AWS 區域，請參閱[在 GitHub 上尋找 AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#finding-an-ami)。 GitHub
  + 對於 64 位元 (`x86_64`) 架構：

    ```
    https://console.aws.amazon.com/systems-manager/parameters/aws/service/bottlerocket/aws-ecs-1-nvidia/x86_64/latest/image_id/description?region=region#
    ```
  + 對於 64 位元 Arm (`arm64`) 架構：

    ```
    https://console.aws.amazon.com/systems-manager/parameters/aws/service/bottlerocket/aws-ecs-1-nvidia/arm64/latest/image_id/description?region=region#
    ```

## 後續步驟
<a name="bottlerocket-next-steps"></a>

如需如何在 Amazon ECS 上開始使用 Bottlerocket 作業系統的詳細教學課程，請參閱 GitHub 上的 [Using a Bottlerocket AMI with Amazon ECS](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md)，以及 AWS 部落格網站上的 [ Getting started with Bottlerocket and Amazon ECS](https://aws.amazon.com/blogs/containers/getting-started-with-bottlerocket-and-amazon-ecs/)。

如需有關 Bottlerocket 執行個體啟動方式的資訊，請參閱[啟動 Amazon ECS 的 Bottlerocket 執行個體](bottlerocket-launch.md)

# 啟動 Amazon ECS 的 Bottlerocket 執行個體
<a name="bottlerocket-launch"></a>

您可以啟動 Bottlerocket 執行個體，以便執行容器工作負載。

您可以使用 AWS CLI 來啟動Bottlerocket執行個體。

1. 建立稱為 `userdata.toml` 的檔案。此檔案會用於執行個體使用者資料。以您的叢集名稱取代 *cluster-name*。

   ```
   [settings.ecs]
   cluster = "cluster-name"
   ```

1. 使用 [擷取 Amazon ECS 最佳化 Bottlerocket AMI 中繼資料](ecs-bottlerocket-retrieve-ami.md) 中包含的其中一個命令來取得 Bottlerocket AMI ID。您會在以下步驟中使用此 ID。

1. 執行下列命令以啟動 Bottlerocket 執行個體。請記得替換以下參數：
   + 將*子網路*替換為執行個體將在其中啟動的私有或公有子網路的 ID。
   + 將 *bottlerocket\$1ami* 替換為上一個步驟中取得的 AMI ID。
   + 將 *t3.large* 替換為您要使用的執行個體類型。
   + 將 *region* 替換為區域代碼。

   ```
   aws ec2 run-instances --key-name ecs-bottlerocket-example \
      --subnet-id subnet \
      --image-id bottlerocket_ami \
      --instance-type t3.large \
      --region region \
      --tag-specifications 'ResourceType=instance,Tags=[{Key=bottlerocket,Value=example}]' \
      --user-data file://userdata.toml \
      --iam-instance-profile Name=ecsInstanceRole
   ```

1. 執行下列命令來驗證容器執行個體是否已註冊至叢集。當您執行此命令時，請記得替代下列參數：
   + 將 *cluster* 替代為叢集名稱。
   + 將 *region* 替換為您的區域代碼。

   ```
   aws ecs list-container-instances --cluster cluster-name --region region
   ```

如需如何在 Amazon ECS 上開始使用Bottlerocket作業系統的詳細演練，請參閱 GitHub 上的[搭配使用 Bottlerocket AMI 與 Amazon ECS](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md)，以及 AWS 部落格網站上的開始使用 [Bottlerocket和 Amazon ECS](https://aws.amazon.com/blogs/containers/getting-started-with-bottlerocket-and-amazon-ecs/)。

# Amazon ECS Linux 容器執行個體管理
<a name="manage-linux"></a>

在將 EC2 執行個體用於 Amazon ECS 工作負載時，您必須負責維護執行個體

**Topics**
+ [啟動容器執行個體](launch_container_instance.md)
+ [引導 Linux 容器執行個體](bootstrap_container_instance.md)
+ [設定容器執行個體接收 Spot 執行個體通知](spot-instance-draining-linux-container.md)
+ [啟動容器執行個體時執行指令碼](start_task_at_launch.md)
+ [增加 Amazon ECS Linux 容器執行個體網路介面數量](container-instance-eni.md)
+ [保留容器執行個體記憶體](memory-management.md)
+ [遠端管理容器執行個體](ec2-run-command.md)
+ [為 Linux 容器執行個體使用 HTTP Proxy](http_proxy_config.md)
+ [為 Auto Scaling 群組設定預先初始化的執行個體](using-warm-pool.md)
+ [更新 Amazon ECS 容器代理程式](ecs-agent-update.md)

每個 Amazon ECS 容器代理程式版本都支援不同的功能集，並提供先前版本的錯誤修復。可能的話，我們建議您一律使用最新版本的 Amazon ECS 容器代理程式。若要將您的容器代理更新到最新版本，請參閱「[更新 Amazon ECS 容器代理程式](ecs-agent-update.md)」。

若要查看每個代理版本中包含哪些功能和強化功能，請參閱 [https://github.com/aws/amazon-ecs-agent/releases](https://github.com/aws/amazon-ecs-agent/releases)。

**重要**  
可靠指標的最低 Docker 版本是 Docker 版本 `v20.10.13` 及更新版本，該版本隨附於 Amazon ECS 最佳化 AMI `20220607` 及更新版本中。  
Amazon ECS 代理程式版本 `1.20.0` 和更新版本已不支援 `18.01.0` 之前的 Docker 版本。

# 啟動 Amazon ECS Linux 容器執行個體
<a name="launch_container_instance"></a>

您可以使用 Amazon EC2 主控台建立 Amazon ECS 容器執行個體。

您可以透過各種方法啟動執行個體 AWS CLI，包括 Amazon EC2 主控台和 SDK。如需有關啟動執行個體其他方法的資訊，請參閱 *Amazon EC2 User Guide* 中的 [Launch your instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)。

如需有關啟動精靈的詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [Launch an instance using the new launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)。

開始之前，請完成 [設定以使用 Amazon ECS。](get-set-up-for-amazon-ecs.md) 中的步驟。

您可以使用新的 Amazon EC2 精靈啟動執行個體。啟動執行個體精靈會指定啟動執行個體所需的所有啟動參數。

**Topics**
+ [程序](#linux-liw-initiate-instance-launch)
+ [名稱和標籤](#linux-liw-name-and-tags)
+ [應用程式和作業系統映像 (Amazon Machine Image)](#linux-liw-ami)
+ [執行個體類型](#linux-liw-instance-type)
+ [金鑰對 （登入）](#linux-liw-key-pair)
+ [網路設定](#linux-liw-network-settings)
+ [設定儲存](#linux-liw-storage)
+ [進階詳細資訊](#linux-liw-advanced-details)

## 程序
<a name="linux-liw-initiate-instance-launch"></a>

開始之前，請完成 [設定以使用 Amazon ECS。](get-set-up-for-amazon-ecs.md) 中的步驟。

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在畫面頂端的導覽列中，會顯示目前的 AWS 區域 （例如美國東部 （俄亥俄）)。選取要在其中啟動執行個體的區域。

1. 從 Amazon EC2 主控台儀表板選擇 **Launch Instance (啟動執行個體)**。

## 名稱和標籤
<a name="linux-liw-name-and-tags"></a>

執行個體名稱是一個標籤，其中鍵是 **Name** (名稱)，而值是您指定的名稱。您可以標記執行個體、磁碟區和彈性圖形。對於 Spot 執行個體，您只能標記 Spot 執行個體請求。

指定執行個體名稱和其他標籤是選用的。
+ 對於 **Name** (名稱)，輸入執行個體的描述性名稱。如果您未指定名稱，則可以透過其 ID 來標識執行個體，該 ID 將在您啟動執行個體時自動產生。
+ 若要新增其他標籤，請選擇 **Add additional tags** (新增其他標籤)。選取 **Add tag** (新增標籤)，然後輸入鍵和值，然後選取要標記的資源類型。為每個要新增的其他標籤重新選擇 **Add tag** (新增標籤)。

## 應用程式和作業系統映像 (Amazon Machine Image)
<a name="linux-liw-ami"></a>

Amazon Machine Image (AMI) 包含建立執行個體所需的資訊。例如，AMI 可能包含作為 Web 伺服器所必需的軟體，例如 Apache 和您的網站。

使用**搜尋**列尋找由 發佈的適當 Amazon ECS 最佳化 AMI AWS。

1. 在 **Search** (搜尋) 列中輸入以下其中一個詞語。
   + **ami-ecs**
   + Amazon ECS 最佳化 AMI 的 **Value** (值)。

     如需最新的 Amazon ECS 最佳化 AMI 及其值，請參閱《[Linux Amazon ECS 最佳化 AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html#ecs-optimized-ami-linux)》。

1. 按 **Enter**。

1. 在 **Choose an Amazon Machine Image (AMI)** (選擇 Amazon Machine Image (AMI)) 頁面上，選取 **AWS Marketplace AMIs** 索引標籤。

1. 在左側的 **Refine results** (細化結果) 窗格中，選取 **Amazon Web Services** 作為 **Publisher** (發佈者)。

1. 在您要使用的 AMI 的列上選擇 **Select** (選取)。

   或者，選擇右上方的 **Cancel** (取消)，以返回啟動執行個體精靈，而不選擇 AMI。將會選取預設 AMI。確保 AMI 符合 [Amazon ECS 最佳化 Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) 中概述的要求。

## 執行個體類型
<a name="linux-liw-instance-type"></a>

執行個體類型定義執行個體的硬體組態和大小。較大的執行個體類型具有較多的 CPU 和記憶體。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的[執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。如果您想要執行純 IPv6 工作負載，某些執行個體類型不支援 IPv6 位址。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的 [IPv6 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#ipv6-addressing)。
+ 針對 **Instance type** (執行個體類型)，選取執行個體的執行個體類型。

   您選取的執行個體類型，會決定您任務執行所在的可用資源。

## 金鑰對 （登入）
<a name="linux-liw-key-pair"></a>

針對 **Key pair name** (金鑰對名稱)，選擇現有的金鑰對，或選擇 **Create new key pair** (建立新的金鑰對) 以建立新的金鑰對。

**重要**  
如果您選擇 **Proceed without key pair (Not recommended)** (繼續而不使用金鑰對 (不建議)) 選項，您將無法連線到執行個體，除非您選擇已設定為允許使用者透過其他方式登入的 AMI。

## 網路設定
<a name="linux-liw-network-settings"></a>

選擇表單的**網路設定**區段的**編輯**按鈕後，視需要設定網路設定。
+ 在 **VPC** 欄位中，選擇執行個體啟動所在的 VPC。若要執行純 IPv6 工作負載，請選擇同時包含 IPv4 與 IPv6 CIDR 區塊的雙堆疊 VPC。
+ 在**子網路**欄位中，請選擇要在其中啟動執行個體的子網路。您可以在與可用區域、Local Zone、Wavelength Zone 或 Outpost 相關聯的子網路中啟動執行個體。

  若要在可用區域中啟動執行個體，請選取要在當中啟動執行個體的子網路。若要建立新的子網路，請選擇**建立新的子網路**，前往 Amazon VPC 主控台。完成後，請返回啟動執行個體精靈並選擇「重新整理」圖示，載入清單中的子網路。

  在 Local Zone 中啟動執行個體，選取您在 Local Zone 中建立的子網路。

  若要在 Outpost 中啟動執行個體，請在與 Outpost 相關聯的 VPC 中選取子網路。

  若要執行純 IPv6 工作負載，請選擇僅包含 IPv6 CIDR 區塊的子網路。
+ **Auto-assign Public IP** (自動指派公有 IP)：如果您的執行個體應從網際網路存取，請確認 **Auto-assign Public IP** (自動指派公有 IP) 欄位設為 **Enable** (啟用)。如果不是，請將此欄位設為 **Disable** (停用)。
**注意**  
容器執行個體需要存取，才可以與 Amazon ECS 服務端點通訊。可透過介面 VPC 端點或透過具備公有 IP 位址的容器執行個體來實現。  
如需介面 VPC 端點的詳細資訊，請參閱 [Amazon ECS 介面 VPC 端點 (AWS PrivateLink)](vpc-endpoints.md)  
如果您沒有設定介面 VPC 端點，且容器執行個體沒有公有 IP 位址，則它們必須使用網路位址轉譯 (NAT) 來提供此存取。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)和本指南中的 [為 Amazon ECS Linux 容器執行個體使用 HTTP Proxy](http_proxy_config.md)。
+ 如果選擇雙堆疊 VPC 與純 IPv6 子網路，請在**自動指派 IPv6 IP** 欄位中選取**啟用**。
+ **Firewall (security groups)** (防火牆 (安全群組))：使用安全群組定義容器執行個體的防火牆規則。這些規則指定傳遞至容器執行個體的傳入網路流量。所有其他流量都會遭到忽略。
  + 若要選取現有的安全群組，請選擇 **Select existing security group** (選取現有安全群組)，然後從您在 [設定以使用 Amazon ECS。](get-set-up-for-amazon-ecs.md) 建立的安全群組選取您的安全群組。
+ 如果要為純 IPv6 工作負載啟動執行個體，請選擇**進階網路組態**，然後在**指派主要 IPv6 IP** 欄位中選擇**是**。
**注意**  
如果沒有主要 IPv6 位址，在容器執行個體上以主機或橋接網路模式執行的任務，將無法向負載平衡器或 AWS Cloud Map註冊。

## 設定儲存
<a name="linux-liw-storage"></a>

您選取的 AMI 包含一或多個儲存體磁碟區，包括根磁碟區。您可以指定要連接至執行個體的其他磁碟區。

您可以使用 **Simple** (簡單) 檢視。
+ **Storage type** (儲存類型)：為您的容器執行個體設定儲存。

  如果您使用的是 Amazon ECS 最佳化 Amazon Linux 2 AMI，則您的執行個體已設定單一 30 GiB 磁碟區 (在作業系統和 Docker 之間共用)。

  如果您使用的是 Amazon ECS 最佳化 AMI，則您的執行個體已設定兩個磁碟區。**Root** (根目錄) 磁碟區供作業系統使用，而第二個 Amazon EBS 磁碟區 (連接到 `/dev/xvdcz`) 則供 Docker 使用。

  您可以選擇性地增加或減少您執行個體的磁碟區大小，使其符合您的應用程式需求。

## 進階詳細資訊
<a name="linux-liw-advanced-details"></a>

針對 **Advanced Details (進階詳細資訊)**，展開此區段來檢視欄位，指定執行個體的其他參數。
+ **Purchasing option** (購買選項)：選擇 **Request Spot instances** (請求 Spot 執行個體) 以請求 Spot 執行個體。您也需要設定與 Spot 執行個體相關的其他欄位。如需詳細資訊，請參閱「[Spot 執行個體要求](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)」。
**注意**  
如果您使用的是 Spot 執行個體，而且看到 `Not available` 訊息，您可能需要選擇不同的執行個體類型。
+ **IAM instance profile** (IAM 執行個體設定檔)：選取您的容器執行個體 IAM 角色。這通常命名為 `ecsInstanceRole`。
**重要**  
如果您未使用適當的 IAM 許可啟動容器執行個體，Amazon ECS 代理程式就無法連線到叢集。如需詳細資訊，請參閱[Amazon ECS 容器執行個體 IAM 角色](instance_IAM_role.md)。
+ **使用者資料**：利用使用者資料設定您的 Amazon ECS 容器執行個體，例如 [Amazon ECS 容器代理程式組態](ecs-agent-config.md) 中的代理程式環境變數。Amazon EC2 使用者資料指令碼僅於執行個體初次啟動時執行一次。以下是使用者資料用途的常見範例：
  + 您的容器執行個體預設會在您的預設叢集中啟動。若要在非預設的叢集中啟動，請選擇 **Advanced Details** (進階詳細資訊) 清單。然後，將以下指令碼貼入 **User data** (使用者資料) 欄位，以您的叢集名稱取代 *your\$1cluster\$1name*。

    ```
    #!/bin/bash
    echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
    ```
  + 如果您在 Amazon S3 中有一個 `ecs.config` 檔案，並已為您的容器執行個體角色啟用 Amazon S3 唯讀存取，請選擇 **Advanced Details** (進階詳細資訊) 清單。然後，將下列指令碼貼到**使用者資料**欄位中，將 *your\$1bucket\$1name* 取代為儲存貯體的名稱，以安裝 AWS CLI 並在啟動時寫入您的組態檔案。
**注意**  
如需此組態的詳細資訊，請參閱「[將 Amazon ECS 容器執行個體組態儲存於 Amazon S3 中](ecs-config-s3.md)」。

    ```
    #!/bin/bash
    yum install -y aws-cli
    aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
    ```
  + 使用 `ECS_CONTAINER_INSTANCE_TAGS` 組態參數為您的容器執行個體指定標籤。這會建立只與 Amazon ECS 相關聯的標籤，所以無法使用 Amazon EC2 API 列出這些標籤。
**重要**  
如果您使用 Amazon EC2 Auto Scaling 群組啟動容器執行個體，則應使用 ECS\$1CONTAINER\$1INSTANCE\$1TAGS 代理程式組態參數來新增標籤。這是由於標籤新增到了使用 Auto Scaling 群組啟動的 Amazon EC2 執行個體。

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"}
    EOF
    ```
  + 為您的容器執行個體指定標籤，然後使用 `ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM` 組態參數將它們從 Amazon EC2 傳播到 Amazon ECS

    以下的使用者資料指令碼範例會傳播與容器執行個體相關聯的標籤，還會向名為 `your_cluster_name` 的叢集註冊容器執行個體：

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM=ec2_instance
    EOF
    ```
  + 依預設，Amazon ECS 容器代理程式會透過偵測執行個體的預設 IPv4 與 IPv6 路由，判斷容器執行個體是否相容純 IPv6 組態。若要覆寫此行為，您可以在執行個體的 `/etc/ecs/ecs.config` 檔案中將 ` ECS_INSTANCE_IP_COMPATIBILITY` 參數設定為 `ipv4` 或 `ipv6`。

    ```
    #!/bin/bash
    cat <<'EOF' >> /etc/ecs/ecs.config
    ECS_CLUSTER=your_cluster_name
    ECS_INSTANCE_IP_COMPATIBILITY=ipv6
    EOF
    ```

  如需詳細資訊，請參閱[引導 Amazon ECS Linux 容器執行個體傳遞資料](bootstrap_container_instance.md)。

# 引導 Amazon ECS Linux 容器執行個體傳遞資料
<a name="bootstrap_container_instance"></a>

當您啟動 Amazon EC2 執行個體時，可以將使用者資料傳送到 EC2 執行個體。此資料可用來執行常見的自動化組態任務，甚至在執行個體啟動時，執行指令碼。對於 Amazon ECS，使用者資料的最常用案例是將組態資訊傳送到 Docker 常駐程式和 Amazon ECS 容器代理程式。

您可以將多種類型的使用者資料傳遞給 Amazon EC2，包含雲端 boothook、shell 指令碼和 `cloud-init` 指令。如需這些和其他格式類型的詳細資訊，請參閱 [Cloud-Init 文件](https://cloudinit.readthedocs.io/en/latest/explanation/format.html)。

若要在使用 Amazon EC2 啟動精靈時傳遞此使用者資料，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

您可以設定容器執行個體，在容器代理程式組態或 Docker 常駐程式組態中傳遞資料。

## Amazon ECS 容器代理程式
<a name="bootstrap_container_agent"></a>

Amazon ECS 最佳化 AMI 的 Linux 變體會在容器代理程式啟動時，於 `/etc/ecs/ecs.config` 檔案中尋找代理程式組態資料。您可以使用 Amazon EC2 使用者資料在啟動時指定此組態資料。如需可用 Amazon ECS 容器代理程式組態變數的詳細資訊，請參閱 [Amazon ECS 容器代理程式組態](ecs-agent-config.md)。

若只要設定單一代理程式組態變數 (例如叢集名稱)，請使用 **echo** 將變數複製至組態檔案：

```
#!/bin/bash
echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config
```

如有多個變數要寫入 `/etc/ecs/ecs.config`，請使用以下 `heredoc` 格式。此格式會將開頭為 **cat** 和 `EOF` 之行間的所有項目寫入組態檔案。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
ECS_LOGLEVEL=debug
ECS_WARM_POOLS_CHECK=true
EOF
```

若要設定自訂執行個體屬性，請設定 `ECS_INSTANCE_ATTRIBUTES` 環境變數。

```
#!/bin/bash
cat <<'EOF' >> ecs.config
ECS_INSTANCE_ATTRIBUTES={"envtype":"prod"}
EOF
```

## Docker 常駐程式
<a name="bootstrap_docker_daemon"></a>

您可以使用 Amazon EC2 使用者資料指定 Docker 常駐程式組態資訊。如需組態選項的詳細資訊，請參閱 [Docker 常駐程式文件](https://docs.docker.com/reference/cli/dockerd/)。

**注意**  
AWS 不支援自訂 Docker 組態，因為它們有時可能會與未來的 Amazon ECS 變更或功能衝突，而不會出現警告。

在下例中，自訂選項會新增到 Docker 常駐程式組態檔案，`/etc/docker/daemon.json`，然後在執行個體啟動時在使用者資料中指定它。

```
#!/bin/bash
cat <<EOF >/etc/docker/daemon.json
{"debug": true}
EOF
systemctl restart docker --no-block
```

在下例中，自訂選項會新增到 Docker 常駐程式組態檔案，`/etc/docker/daemon.json`，然後在執行個體啟動時在使用者資料中指定它。此範例顯示如何停用 Docker 常駐程式組態檔案中的 Docker 代理。

```
#!/bin/bash
cat <<EOF >/etc/docker/daemon.json
{"userland-proxy": false}
EOF
systemctl restart docker --no-block
```

# 設定 Amazon ECS Linux 容器執行個體接收 Spot 執行個體通知
<a name="spot-instance-draining-linux-container"></a>

當 Spot 價格超過請求的最高價或容量不再可用時，Amazon EC2 會終止、停止或休眠您的 Spot 執行個體。Amazon EC2 會針對終止和停止動作提前兩分鐘發出 Spot 執行個體中斷通知。其不會針對休眠動作提前兩分鐘發出通知。如果在執行個體上啟用 Amazon ECS Spot 執行個體排空，則 Amazon ECS 會收到 Spot 執行個體中斷通知，並將執行個體置於 `DRAINING` 狀態。

**重要**  
當透過 Auto Scaling 容量重新平衡移除執行個體時，Amazon ECS 不會收到 Amazon EC2 發出的通知。如需詳細資訊，請參閱 [Amazon EC2 Auto Scaling 容量重新平衡](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)。

將容器執行個體設定為 `DRAINING` 時，Amazon ECS 會避免在容器執行個體中放置新的任務排程。`PENDING` 狀態下即將耗盡的容器執行個體服務任務會立即停止。如果叢集有可用的容器執行個體，則會在這些容器執行個體上啟動替代服務任務。

Spot 執行個體排空預設為停用。

您可以在啟動執行個體時啟用 Spot 執行個體排空。將下列指令碼新增至**使用者資料**欄位。將 *MyCluster* 取代為叢集名稱，以完成容器執行個體註冊。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
EOF
```

如需詳細資訊，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

**針對現有的容器執行個體開啟 Spot 執行個體耗盡**

1. 透過 SSH 連接到 Spot 執行個體。

1. 編輯 `/etc/ecs/ecs.config` 檔案並新增以下內容：

   ```
   ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
   ```

1. 重新啟動 `ecs` 服務。
   + 對於 Amazon ECS 最佳化 Amazon Linux 2 AMI：

     ```
     sudo systemctl restart ecs
     ```

1. (選用) 您可以驗證代理已在執行中，並透過查詢代理自我檢查 API 操作，查看您新的容器執行個體的一些資訊。如需詳細資訊，請參閱[Amazon ECS 容器自我檢查](ecs-agent-introspection.md)。

   ```
   curl http://localhost:51678/v1/metadata
   ```

# 啟動 Amazon ECS Linux 容器執行個體時執行指令碼
<a name="start_task_at_launch"></a>

您可能需要在每個容器執行個體上執行特定的容器，以處理營運或安全性相關事項，例如監控、安全性、指標、服務探索或記錄。

若要執行此作業，您可以將您的容器執行個體設定為在啟動時或在某些 init 系統中 (例如 Upstart 或 **systemd**)，以使用者資料指令碼呼叫 **docker run** 命令。雖然此方法可行，但有一些缺點，因為 Amazon ECS 對容器一無所知，也無法監控 CPU、記憶體、連接埠或任何其他使用的資源。為確保 Amazon ECS 可正確說明所有任務資源，請為在您容器執行個體上執行的容器建立任務定義。然後，使用 Amazon ECS，利用 Amazon EC2 使用者資料在啟動時放置任務。

下列程序中的 Amazon EC2 使用者資料指令碼會使用 Amazon ECS 自我檢查 API 來識別容器執行個體。然後，它會使用 AWS CLI 和 **start-task**命令在啟動期間自行執行指定的任務。

**在容器執行個體啟動階段啟動任務**

1. 修改您的 `ecsInstanceRole` IAM 角色，新增 `StartTask` API 操作的許可。如需詳細資訊，請參閱 *AWS Identity and Access Management User Guide* 中的 [Update permissions for a role](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_update-role-permissions.html)。

1. 使用 Amazon ECS 最佳化 Amazon Linux 2 AMI 啟動一或多個容器執行個體。啟動新的容器執行個體，並在 EC2 使用者資料中使用如下範例指令碼。將 *your\$1cluster\$1name* 取代為容器執行個體要註冊的目標叢集，並將 *my\$1task\$1def* 取代為要在啟動時於執行個體上執行的任務定義。

   如需詳細資訊，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。
**注意**  
以下的 MIME 多分段內容使用 shell 指令碼來設定組態值並安裝套件。在 **ecs** 服務已執行，並可使用自我檢查 API 之後，還會使用 systemd 工作啟動任務。

   ```
   Content-Type: multipart/mixed; boundary="==BOUNDARY=="
   MIME-Version: 1.0
   
   --==BOUNDARY==
   Content-Type: text/x-shellscript; charset="us-ascii"
   
   #!/bin/bash
   # Specify the cluster that the container instance should register into
   cluster=your_cluster_name
   
   # Write the cluster configuration variable to the ecs.config file
   # (add any other configuration variables here also)
   echo ECS_CLUSTER=$cluster >> /etc/ecs/ecs.config
   
   START_TASK_SCRIPT_FILE="/etc/ecs/ecs-start-task.sh"
   cat <<- 'EOF' > ${START_TASK_SCRIPT_FILE}
   	exec 2>>/var/log/ecs/ecs-start-task.log
   	set -x
   	
   	# Install prerequisite tools
   	yum install -y jq aws-cli
   	
   	# Wait for the ECS service to be responsive
   	until curl -s http://localhost:51678/v1/metadata
   	do
   		sleep 1
   	done
   
   	# Grab the container instance ARN and AWS Region from instance metadata
   	instance_arn=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .ContainerInstanceArn' | awk -F/ '{print $NF}' )
   	cluster=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .Cluster' | awk -F/ '{print $NF}' )
   	region=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .ContainerInstanceArn' | awk -F: '{print $4}')
   
   	# Specify the task definition to run at launch
   	task_definition=my_task_def
   
   	# Run the AWS CLI start-task command to start your task on this container instance
   	aws ecs start-task --cluster $cluster --task-definition $task_definition --container-instances $instance_arn --started-by $instance_arn --region $region
   EOF
   
   # Write systemd unit file
   UNIT="ecs-start-task.service"
   cat <<- EOF > /etc/systemd/system/${UNIT}
         [Unit]
         Description=ECS Start Task
         Requires=ecs.service
         After=ecs.service
    
         [Service]
         Restart=on-failure
         RestartSec=30
         ExecStart=/usr/bin/bash ${START_TASK_SCRIPT_FILE}
   
         [Install]
         WantedBy=default.target
   EOF
   
   # Enable our ecs.service dependent service with `--no-block` to prevent systemd deadlock
   # See https://github.com/aws/amazon-ecs-agent/issues/1707
   systemctl enable --now --no-block "${UNIT}"
   --==BOUNDARY==--
   ```

1. 確認您的容器執行個體在正確的叢集中啟動，而且您的任務已啟動。

   1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

   1. 從導覽列選擇您叢集所在的區域。

   1. 在導覽窗格中選擇 **Clusters** (叢集)，並選取託管您容器執行個體的叢集。

   1. 在**叢集**頁面上，選擇**任務**，然後選擇您的任務。

      您啟動的每個容器執行個體都應該有任務在正在其中執行。

      如果您沒有看到您的任務，您可以使用 SSH 登入您的容器執行個體，檢查 `/var/log/ecs/ecs-start-task.log` 檔案的偵錯資訊。

# 增加 Amazon ECS Linux 容器執行個體網路介面數量
<a name="container-instance-eni"></a>

**注意**  
此功能不適用於 Fargate。

每個使用 `awsvpc` 網路模式的任務都會收到專用的彈性網路介面 (ENI)，該介面會連接至託管此任務的容器執行個體。Amazon EC2 執行個體可連接的網路介面數量有預設限制，主要網路介面計算在內。例如，根據預設，`c5.large` 執行個體最多可連接三個 ENI。執行個體的主要網路界面計算在內，所以您可以再連接兩個 ENI 到執行個體。因為每個使用 `awsvpc` 網路模式的任務都需要 ENI，所以通常只能對此執行個體類型執行兩個這類任務。

Amazon ECS 支援使用受支援的 Amazon EC2 執行個體類型，以更高的 ENI 密度來啟動容器執行個體。當您使用這些執行個體類型並啟用 `awsvpcTrunking` 帳戶設定時，新啟動的容器執行個體會提供額外的 ENI。此組態可讓您在每個容器執行個體中安排更多任務。若要使用主控台啟用此功能，請參閱[修改 Amazon ECS 帳戶設定](ecs-modifying-longer-id-settings.md)。若要使用 AWS CLI 開啟功能，請參閱 [使用 管理 Amazon ECS 帳戶設定 AWS CLI](account-setting-management-cli.md)。

例如，啟用 `awsvpcTrunking` 的 `c5.large` 執行個體，其 ENI 限制會增加至 12 個。容器執行個體會有主要網路介面，而 Amazon ECS 會建立「幹線」網路介面，並將它連接到容器執行個體。因此，此組態可讓您在容器執行個體中啟動十項任務，而不是目前的兩項任務。

幹線網路介面由 Amazon ECS 全受管，當您在叢集中終止或取消註冊您的容器執行個體時，會將其刪除。如需詳細資訊，請參閱[EC2 的 Amazon ECS 任務聯網選項](task-networking.md)。

## 考量事項
<a name="eni-trunking-considerations"></a>

使用 ENI 主幹功能時，建議考量下列事項。
+ 只有 Amazon ECS 最佳化 AMI 的 Linux 變體，或具有 `1.28.1` 版本或更新版本容器代理程式和版本 `1.28.1-2` 或更新版本 ecs-init 套件的其他 Amazon Linux 變體，才支援更高的 ENI 限制。如果您使用 Amazon ECS 最佳化 AMI 的最新 Linux 變體，將會滿足這些要求。目前不支援 Windows 容器。
+ 只有在啟用 `awsvpcTrunking` 後啟動的新 Amazon EC2 執行個體，才會收到更高的 ENI 限制和幹線網路介面。無論採取何種動作，先前啟動的執行個體都不會收到這些功能。
+ Amazon EC2 執行個體必須關閉資源型 IPv4 DNS 請求。若要停用此選項，在 Amazon EC2 主控台中建立新執行個體時，請清除**啟用資源型 IPV4 (A 記錄) DNS 請求**選項。若要使用 停用此選項 AWS CLI，請使用下列命令。

  ```
  aws ec2 modify-private-dns-name-options --instance-id i-xxxxxxx --no-enable-resource-name-dns-a-record --no-dry-run
  ```
+ 不支援共用子網路中的 Amazon EC2 執行個體。就算使用也無法註冊到叢集。
+ 您的任務必須使用 `awsvpc` 網路模式和 EC2。使用 Fargate 的任務，會一律收到專用的 ENI (不論啟動多少)，因此不需要此功能。
+ 您的任務必須與容器執行個體在相同的 Amazon VPC 中啟動。如果您的任務不在同一 VPC 中，則任務會因為屬性錯誤而失敗。
+ 啟動新的容器執行個體時，執行個體將轉換為 `REGISTERING` 狀態，同時為執行個體佈建幹線彈性網路介面。如果註冊失敗，執行個體會轉換到 `REGISTRATION_FAILED` 狀態。透過說明容器執行個體以檢視說明失敗原因的 `statusReason` 欄位，可對失敗註冊進行故障排除。然後可以手動解除註冊或終止容器執行個體。容器執行個體成功取消註冊或終止後，Amazon ECS 將刪除幹線 ENI。
**注意**  
Amazon ECS 會發出容器執行個體狀態變更事件，您可以監控執行個體是否轉換為 `REGISTRATION_FAILED` 狀態。如需詳細資訊，請參閱[Amazon ECS 容器執行個體狀態變更事件](ecs_container_instance_events.md)。
+ 容器執行個體終止後，執行個體將轉換為 `DEREGISTERING` 狀態，同時解除佈建幹線彈性網路介面。然後，執行個體會轉換為 `INACTIVE` 狀態。
+ 如果具有更高 ENI 限制之公有子網路中的容器執行個體停止再重新啟動，執行個體會遺失其公有 IP 位址，且容器代理程式將失去其連線。
+ 啟用 `awsvpcTrunking` 時，容器執行個體會收到使用 VPC 預設安全群組的額外 ENI，並由 Amazon ECS 管理。

  預設 VPC 在每個可用區域附帶一個公有子網路、一個網際網路閘道，以及啟用 DNS 解析的設定。子網路是公有子網路，因為主路由表會將以網際網路為目標的子網路流量傳送至網際網路閘道。您可將路由從目標 0.0.0.0/0 移至網際網路閘道，將預設子網路變成私有子網路。但若如此做，在該子網路中執行的任何容器執行個體都無法存取網際網路。您可以新增或刪除安全群組規則，控制進出子網路的流量。如需詳細資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html)。

## 先決條件
<a name="eni-trunking-launching"></a>

在啟動具有更高 ENI 限制的容器執行個體之前，必須完成下列先決條件。
+ 必須先建立 Amazon ECS 的服務連結角色。Amazon ECS 服務連結角色為 Amazon ECS 提供代表您呼叫其他 AWS 服務的許可。這個角色會在您建立叢集，或在 AWS 管理主控台中建立或更新服務時，自動為您建立。如需詳細資訊，請參閱[使用 Amazon ECS 的服務連結角色](using-service-linked-roles.md)。您也可以使用下列 AWS CLI 命令建立服務連結角色。

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ 您的帳戶或容器執行個體 IAM 角色必須啟用 `awsvpcTrunking` 帳戶設定。我們建議您建立 2 個容器執行個體角色 (`ecsInstanceRole`)。然後，您可以為一個角色啟用 `awsvpcTrunking` 帳戶設定，並將該角色用於需要 ENI 主幹功能的任務。如需有關容器執行個體的詳細資訊，請參閱 [Amazon ECS 容器執行個體 IAM 角色](instance_IAM_role.md)。

符合先決條件後，您可以使用其中一種受支援的 Amazon EC2 執行個體類型來啟動新容器執行個體，且執行個體將具有更高的 ENI 限制。如需支援的執行個體類型清單，請參閱 [援更多 Amazon ECS 容器網路介面的執行個體](eni-trunking-supported-instance-types.md)。容器執行個體必須具有容器代理程式的 `1.28.1` 版或更新版本，以及 ecs-init 套件的 `1.28.1-2` 版或更新版本。如果您使用 Amazon ECS 最佳化 AMI 的最新 Linux 變體，將會滿足這些要求。如需詳細資訊，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

**重要**  
Amazon EC2 執行個體必須關閉資源型 IPv4 DNS 請求。若要停用此選項，在使用 Amazon EC2 主控台建立新執行個體時，請務必取消選取 **Enable resource-based IPV4 (A record) DNS requests** (啟用資源型 IPV4 (A 記錄) DNS 請求) 選項。若要使用 停用此選項 AWS CLI，請使用下列命令。  

```
aws ec2 modify-private-dns-name-options --instance-id i-xxxxxxx --no-enable-resource-name-dns-a-record --no-dry-run
```

**若要使用 檢視具有更高ENI限制的容器執行個體 AWS CLI**

每個容器執行個體都有預設的網路界面，稱為幹線網路界面。使用下列命令，透過查詢 `ecs.awsvpc-trunk-id` 屬性來列出具有更高 ENI 限制的容器執行個體，該屬性指出其具有幹線網路介面。
+ [list-attributes](https://docs.aws.amazon.com/cli/latest/reference/ecs/list-attributes.html) (AWS CLI)

  ```
  aws ecs list-attributes \
        --target-type container-instance \
        --attribute-name ecs.awsvpc-trunk-id \
        --cluster cluster_name \
        --region us-east-1
  ```
+ [Get-ECSAttributeList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ECSAttributeList.html) (AWS Tools for Windows PowerShell)

  ```
  Get-ECSAttributeList -TargetType container-instance -AttributeName ecs.awsvpc-trunk-id -Region us-east-1
  ```

# 援更多 Amazon ECS 容器網路介面的執行個體
<a name="eni-trunking-supported-instance-types"></a>

下列顯示受支援的 Amazon EC2 執行個體類型，以及在啟用 `awsvpcTrunking` 帳戶設定的前後，可以在每個執行個體類型上啟動使用 `awsvpc` 網路模式的任務數量。

**重要**  
雖然同一執行個體系列支援其他執行個體類型，但不支援 `a1.metal`、`c5.metal`、`c5a.8xlarge`、`c5ad.8xlarge`、`c5d.metal`、`m5.metal`、`p3dn.24xlarge`、`r5.metal`、`r5.8xlarge` 和 `r5d.metal` 執行個體類型。  
不支援 `c5n`、`d3`、`d3en`、`g3`、`g3s`、`g4dn`、`i3`、`i3en`、`inf1`、`m5dn`、`m5n`、`m5zn`、`mac1`、`r5b`、`r5n`、`r5dn`、`u-12tb1`、`u-6tb1`、`u-9tb1` 和 `z1d` 執行個體系列。

**Topics**
+ [一般用途](#eni-branch-gp)
+ [運算最佳化](#eni-branch-co)
+ [記憶體最佳化](#eni-branch-mo)
+ [儲存最佳化](#eni-branch-so)
+ [加速運算](#eni-branch-ac)
+ [高效能運算](#eni-branch-hpc)

## 一般用途
<a name="eni-branch-gp"></a>


| 執行個體類型 | 未啟用 ENI 主幹功能時的任務數量上限 | 啟用 ENI 主幹功能時的任務數量上限 | 
| --- | --- | --- | 
| a1.medium | 1 | 10 | 
| a1.large | 2 | 10 | 
| a1.xlarge | 3 | 20 | 
| a1.2xlarge | 3 | 40 | 
| a1.4xlarge | 7 | 60 | 
| m5.large | 2 | 10 | 
| m5.xlarge | 3 | 20 | 
| m5.2xlarge | 3 | 40 | 
| m5.4xlarge | 7 | 60 | 
| m5.8xlarge | 7 | 60 | 
| m5.12xlarge | 7 | 60 | 
| m5.16xlarge | 14 | 120 | 
| m5.24xlarge | 14 | 120 | 
| m5a.large | 2 | 10 | 
| m5a.xlarge | 3 | 20 | 
| m5a.2xlarge | 3 | 40 | 
| m5a.4xlarge | 7 | 60 | 
| m5a.8xlarge | 7 | 60 | 
| m5a.12xlarge | 7 | 60 | 
| m5a.16xlarge | 14 | 120 | 
| m5a.24xlarge | 14 | 120 | 
| m5ad.large | 2 | 10 | 
| m5ad.xlarge | 3 | 20 | 
| m5ad.2xlarge | 3 | 40 | 
| m5ad.4xlarge | 7 | 60 | 
| m5ad.8xlarge | 7 | 60 | 
| m5ad.12xlarge | 7 | 60 | 
| m5ad.16xlarge | 14 | 120 | 
| m5ad.24xlarge | 14 | 120 | 
| m5d.large | 2 | 10 | 
| m5d.xlarge | 3 | 20 | 
| m5d.2xlarge | 3 | 40 | 
| m5d.4xlarge | 7 | 60 | 
| m5d.8xlarge | 7 | 60 | 
| m5d.12xlarge | 7 | 60 | 
| m5d.16xlarge | 14 | 120 | 
| m5d.24xlarge | 14 | 120 | 
| m5d.metal | 14 | 120 | 
| m6a.large | 2 | 10 | 
| m6a.xlarge | 3 | 20 | 
| m6a.2xlarge | 3 | 40 | 
| m6a.4xlarge | 7 | 60 | 
| m6a.8xlarge | 7 | 90 | 
| m6a.12xlarge | 7 | 120 | 
| m6a.16xlarge | 14 | 120 | 
| m6a.24xlarge | 14 | 120 | 
| m6a.32xlarge | 14 | 120 | 
| m6a.48xlarge | 14 | 120 | 
| m6a.metal | 14 | 120 | 
| m6g.medium | 1 | 4 | 
| m6g.large | 2 | 10 | 
| m6g.xlarge | 3 | 20 | 
| m6g.2xlarge | 3 | 40 | 
| m6g.4xlarge | 7 | 60 | 
| m6g.8xlarge | 7 | 60 | 
| m6g.12xlarge | 7 | 60 | 
| m6g.16xlarge | 14 | 120 | 
| m6g.metal | 14 | 120 | 
| m6gd.medium | 1 | 4 | 
| m6gd.large | 2 | 10 | 
| m6gd.xlarge | 3 | 20 | 
| m6gd.2xlarge | 3 | 40 | 
| m6gd.4xlarge | 7 | 60 | 
| m6gd.8xlarge | 7 | 60 | 
| m6gd.12xlarge | 7 | 60 | 
| m6gd.16xlarge | 14 | 120 | 
| m6gd.metal | 14 | 120 | 
| m6i.large | 2 | 10 | 
| m6i.xlarge | 3 | 20 | 
| m6i.2xlarge | 3 | 40 | 
| m6i.4xlarge | 7 | 60 | 
| m6i.8xlarge | 7 | 90 | 
| m6i.12xlarge | 7 | 120 | 
| m6i.16xlarge | 14 | 120 | 
| m6i.24xlarge | 14 | 120 | 
| m6i.32xlarge | 14 | 120 | 
| m6i.metal | 14 | 120 | 
| m6id.large | 2 | 10 | 
| m6id.xlarge | 3 | 20 | 
| m6id.2xlarge | 3 | 40 | 
| m6id.4xlarge | 7 | 60 | 
| m6id.8xlarge | 7 | 90 | 
| m6id.12xlarge | 7 | 120 | 
| m6id.16xlarge | 14 | 120 | 
| m6id.24xlarge | 14 | 120 | 
| m6id.32xlarge | 14 | 120 | 
| m6id.metal | 14 | 120 | 
| m6idn.large | 2 | 10 | 
| m6idn.xlarge | 3 | 20 | 
| m6idn.2xlarge | 3 | 40 | 
| m6idn.4xlarge | 7 | 60 | 
| m6idn.8xlarge | 7 | 90 | 
| m6idn.12xlarge | 7 | 120 | 
| m6idn.16xlarge | 14 | 120 | 
| m6idn.24xlarge | 14 | 120 | 
| m6idn.32xlarge | 15 | 120 | 
| m6idn.metal | 15 | 120 | 
| m6in.large | 2 | 10 | 
| m6in.xlarge | 3 | 20 | 
| m6in.2xlarge | 3 | 40 | 
| m6in.4xlarge | 7 | 60 | 
| m6in.8xlarge | 7 | 90 | 
| m6in.12xlarge | 7 | 120 | 
| m6in.16xlarge | 14 | 120 | 
| m6in.24xlarge | 14 | 120 | 
| m6in.32xlarge | 15 | 120 | 
| m6in.metal | 15 | 120 | 
| m7a.medium | 1 | 4 | 
| m7a.large | 2 | 10 | 
| m7a.xlarge | 3 | 20 | 
| m7a.2xlarge | 3 | 40 | 
| m7a.4xlarge | 7 | 60 | 
| m7a.8xlarge | 7 | 90 | 
| m7a.12xlarge | 7 | 120 | 
| m7a.16xlarge | 14 | 120 | 
| m7a.24xlarge | 14 | 120 | 
| m7a.32xlarge | 14 | 120 | 
| m7a.48xlarge | 14 | 120 | 
| m7a.metal-48xl | 14 | 120 | 
| m7g.medium | 1 | 4 | 
| m7g.large | 2 | 10 | 
| m7g.xlarge | 3 | 20 | 
| m7g.2xlarge | 3 | 40 | 
| m7g.4xlarge | 7 | 60 | 
| m7g.8xlarge | 7 | 60 | 
| m7g.12xlarge | 7 | 60 | 
| m7g.16xlarge | 14 | 120 | 
| m7g.metal | 14 | 120 | 
| m7gd.medium | 1 | 4 | 
| m7gd.large | 2 | 10 | 
| m7gd.xlarge | 3 | 20 | 
| m7gd.2xlarge | 3 | 40 | 
| m7gd.4xlarge | 7 | 60 | 
| m7gd.8xlarge | 7 | 60 | 
| m7gd.12xlarge | 7 | 60 | 
| m7gd.16xlarge | 14 | 120 | 
| m7gd.metal | 14 | 120 | 
| m7i.large | 2 | 10 | 
| m7i.xlarge | 3 | 20 | 
| m7i.2xlarge | 3 | 40 | 
| m7i.4xlarge | 7 | 60 | 
| m7i.8xlarge | 7 | 90 | 
| m7i.12xlarge | 7 | 120 | 
| m7i.16xlarge | 14 | 120 | 
| m7i.24xlarge | 14 | 120 | 
| m7i.48xlarge | 14 | 120 | 
| m7i.metal-24xl | 14 | 120 | 
| m7i.metal-48xl | 14 | 120 | 
| m7i-flex.large | 2 | 4 | 
| m7i-flex.xlarge | 3 | 10 | 
| m7i-flex.2xlarge | 3 | 20 | 
| m7i-flex.4xlarge | 7 | 40 | 
| m7i-flex.8xlarge | 7 | 60 | 
| m7i-flex.12xlarge | 7 | 120 | 
| m7i-flex.16xlarge | 14 | 120 | 
| m8a.medium | 1 | 4 | 
| m8a.large | 2 | 10 | 
| m8a.xlarge | 3 | 20 | 
| m8a.2xlarge | 3 | 40 | 
| m8a.4xlarge | 7 | 60 | 
| m8a.8xlarge | 9 | 90 | 
| m8a.12xlarge | 11 | 120 | 
| m8a.16xlarge | 15 | 120 | 
| m8a.24xlarge | 15 | 120 | 
| m8a.48xlarge | 23 | 120 | 
| m8a.metal-24xl | 15 | 120 | 
| m8a.metal-48xl | 23 | 120 | 
| m8azn.medium | 2 | 4 | 
| m8azn.large | 3 | 10 | 
| m8azn.xlarge | 3 | 20 | 
| m8azn.3xlarge | 7 | 40 | 
| m8azn.6xlarge | 7 | 60 | 
| m8azn.12xlarge | 15 | 120 | 
| m8azn.24xlarge | 15 | 120 | 
| m8azn.metal-12xl | 15 | 120 | 
| m8azn.metal-24xl | 15 | 120 | 
| m8g.medium | 1 | 4 | 
| m8g.large | 2 | 10 | 
| m8g.xlarge | 3 | 20 | 
| m8g.2xlarge | 3 | 40 | 
| m8g.4xlarge | 7 | 60 | 
| m8g.8xlarge | 7 | 60 | 
| m8g.12xlarge | 7 | 60 | 
| m8g.16xlarge | 14 | 120 | 
| m8g.24xlarge | 14 | 120 | 
| m8g.48xlarge | 14 | 120 | 
| m8g.metal-24xl | 14 | 120 | 
| m8g.metal-48xl | 14 | 120 | 
| m8gb.medium | 1 | 4 | 
| m8gb.large | 2 | 10 | 
| m8gb.xlarge | 3 | 20 | 
| m8gb.2xlarge | 3 | 40 | 
| m8gb.4xlarge | 7 | 60 | 
| m8gb.8xlarge | 9 | 60 | 
| m8gb.12xlarge | 11 | 60 | 
| m8gb.16xlarge | 15 | 120 | 
| m8gb.24xlarge | 23 | 120 | 
| m8gb.48xlarge | 23 | 120 | 
| m8gb.metal-24xl | 23 | 120 | 
| m8gb.metal-48xl | 23 | 120 | 
| m8gd.medium | 1 | 4 | 
| m8gd.large | 2 | 10 | 
| m8gd.xlarge | 3 | 20 | 
| m8gd.2xlarge | 3 | 40 | 
| m8gd.4xlarge | 7 | 60 | 
| m8gd.8xlarge | 7 | 60 | 
| m8gd.12xlarge | 7 | 60 | 
| m8gd.16xlarge | 14 | 120 | 
| m8gd.24xlarge | 14 | 120 | 
| m8gd.48xlarge | 14 | 120 | 
| m8gd.metal-24xl | 14 | 120 | 
| m8gd.metal-48xl | 14 | 120 | 
| m8gn.medium | 1 | 4 | 
| m8gn.large | 2 | 10 | 
| m8gn.xlarge | 3 | 20 | 
| m8gn.2xlarge | 3 | 40 | 
| m8gn.4xlarge | 7 | 60 | 
| m8gn.8xlarge | 9 | 60 | 
| m8gn.12xlarge | 11 | 60 | 
| m8gn.16xlarge | 15 | 120 | 
| m8gn.24xlarge | 23 | 120 | 
| m8gn.48xlarge | 23 | 120 | 
| m8gn.metal-24xl | 23 | 120 | 
| m8gn.metal-48xl | 23 | 120 | 
| m8i.large | 2 | 10 | 
| m8i.xlarge | 3 | 20 | 
| m8i.2xlarge | 3 | 40 | 
| m8i.4xlarge | 7 | 60 | 
| m8i.8xlarge | 9 | 90 | 
| m8i.12xlarge | 11 | 120 | 
| m8i.16xlarge | 15 | 120 | 
| m8i.24xlarge | 15 | 120 | 
| m8i.32xlarge | 23 | 120 | 
| m8i.48xlarge | 23 | 120 | 
| m8i.96xlarge | 23 | 120 | 
| m8i.metal-48xl | 23 | 120 | 
| m8i.metal-96xl | 23 | 120 | 
| m8id.large | 2 | 10 | 
| m8id.xlarge | 3 | 20 | 
| m8id.2xlarge | 3 | 40 | 
| m8id.4xlarge | 7 | 60 | 
| m8id.8xlarge | 9 | 90 | 
| m8id.12xlarge | 11 | 120 | 
| m8id.16xlarge | 15 | 120 | 
| m8id.24xlarge | 15 | 120 | 
| m8id.32xlarge | 23 | 120 | 
| m8id.48xlarge | 23 | 120 | 
| m8id.96xlarge | 23 | 120 | 
| m8id.metal-48xl | 23 | 120 | 
| m8id.metal-96xl | 23 | 120 | 
| m8i-flex.large | 2 | 4 | 
| m8i-flex.xlarge | 3 | 10 | 
| m8i-flex.2xlarge | 3 | 20 | 
| m8i-flex.4xlarge | 7 | 40 | 
| m8i-flex.8xlarge | 9 | 60 | 
| m8i-flex.12xlarge | 11 | 120 | 
| m8i-flex.16xlarge | 15 | 120 | 
| mac2.metal | 7 | 12 | 
| mac2-m1ultra.metal | 7 | 12 | 
| mac2-m2.metal | 7 | 12 | 
| mac2-m2pro.metal | 7 | 12 | 
| mac-m4.metal | 7 | 12 | 
| mac-m4pro.metal | 7 | 12 | 
| mac-m4max.metal | 7 | 12 | 

## 運算最佳化
<a name="eni-branch-co"></a>


| 執行個體類型 | 未啟用 ENI 主幹功能時的任務數量上限 | 啟用 ENI 主幹功能時的任務數量上限 | 
| --- | --- | --- | 
| c5.large | 2 | 10 | 
| c5.xlarge | 3 | 20 | 
| c5.2xlarge | 3 | 40 | 
| c5.4xlarge | 7 | 60 | 
| c5.9xlarge | 7 | 60 | 
| c5.12xlarge | 7 | 60 | 
| c5.18xlarge | 14 | 120 | 
| c5.24xlarge | 14 | 120 | 
| c5a.large | 2 | 10 | 
| c5a.xlarge | 3 | 20 | 
| c5a.2xlarge | 3 | 40 | 
| c5a.4xlarge | 7 | 60 | 
| c5a.12xlarge | 7 | 60 | 
| c5a.16xlarge | 14 | 120 | 
| c5a.24xlarge | 14 | 120 | 
| c5ad.large | 2 | 10 | 
| c5ad.xlarge | 3 | 20 | 
| c5ad.2xlarge | 3 | 40 | 
| c5ad.4xlarge | 7 | 60 | 
| c5ad.12xlarge | 7 | 60 | 
| c5ad.16xlarge | 14 | 120 | 
| c5ad.24xlarge | 14 | 120 | 
| c5d.large | 2 | 10 | 
| c5d.xlarge | 3 | 20 | 
| c5d.2xlarge | 3 | 40 | 
| c5d.4xlarge | 7 | 60 | 
| c5d.9xlarge | 7 | 60 | 
| c5d.12xlarge | 7 | 60 | 
| c5d.18xlarge | 14 | 120 | 
| c5d.24xlarge | 14 | 120 | 
| c6a.large | 2 | 10 | 
| c6a.xlarge | 3 | 20 | 
| c6a.2xlarge | 3 | 40 | 
| c6a.4xlarge | 7 | 60 | 
| c6a.8xlarge | 7 | 90 | 
| c6a.12xlarge | 7 | 120 | 
| c6a.16xlarge | 14 | 120 | 
| c6a.24xlarge | 14 | 120 | 
| c6a.32xlarge | 14 | 120 | 
| c6a.48xlarge | 14 | 120 | 
| c6a.metal | 14 | 120 | 
| c6g.medium | 1 | 4 | 
| c6g.large | 2 | 10 | 
| c6g.xlarge | 3 | 20 | 
| c6g.2xlarge | 3 | 40 | 
| c6g.4xlarge | 7 | 60 | 
| c6g.8xlarge | 7 | 60 | 
| c6g.12xlarge | 7 | 60 | 
| c6g.16xlarge | 14 | 120 | 
| c6g.metal | 14 | 120 | 
| c6gd.medium | 1 | 4 | 
| c6gd.large | 2 | 10 | 
| c6gd.xlarge | 3 | 20 | 
| c6gd.2xlarge | 3 | 40 | 
| c6gd.4xlarge | 7 | 60 | 
| c6gd.8xlarge | 7 | 60 | 
| c6gd.12xlarge | 7 | 60 | 
| c6gd.16xlarge | 14 | 120 | 
| c6gd.metal | 14 | 120 | 
| c6gn.medium | 1 | 4 | 
| c6gn.large | 2 | 10 | 
| c6gn.xlarge | 3 | 20 | 
| c6gn.2xlarge | 3 | 40 | 
| c6gn.4xlarge | 7 | 60 | 
| c6gn.8xlarge | 7 | 60 | 
| c6gn.12xlarge | 7 | 60 | 
| c6gn.16xlarge | 14 | 120 | 
| c6i.large | 2 | 10 | 
| c6i.xlarge | 3 | 20 | 
| c6i.2xlarge | 3 | 40 | 
| c6i.4xlarge | 7 | 60 | 
| c6i.8xlarge | 7 | 90 | 
| c6i.12xlarge | 7 | 120 | 
| c6i.16xlarge | 14 | 120 | 
| c6i.24xlarge | 14 | 120 | 
| c6i.32xlarge | 14 | 120 | 
| c6i.metal | 14 | 120 | 
| c6id.large | 2 | 10 | 
| c6id.xlarge | 3 | 20 | 
| c6id.2xlarge | 3 | 40 | 
| c6id.4xlarge | 7 | 60 | 
| c6id.8xlarge | 7 | 90 | 
| c6id.12xlarge | 7 | 120 | 
| c6id.16xlarge | 14 | 120 | 
| c6id.24xlarge | 14 | 120 | 
| c6id.32xlarge | 14 | 120 | 
| c6id.metal | 14 | 120 | 
| c6in.large | 2 | 10 | 
| c6in.xlarge | 3 | 20 | 
| c6in.2xlarge | 3 | 40 | 
| c6in.4xlarge | 7 | 60 | 
| c6in.8xlarge | 7 | 90 | 
| c6in.12xlarge | 7 | 120 | 
| c6in.16xlarge | 14 | 120 | 
| c6in.24xlarge | 14 | 120 | 
| c6in.32xlarge | 15 | 120 | 
| c6in.metal | 15 | 120 | 
| c7a.medium | 1 | 4 | 
| c7a.large | 2 | 10 | 
| c7a.xlarge | 3 | 20 | 
| c7a.2xlarge | 3 | 40 | 
| c7a.4xlarge | 7 | 60 | 
| c7a.8xlarge | 7 | 90 | 
| c7a.12xlarge | 7 | 120 | 
| c7a.16xlarge | 14 | 120 | 
| c7a.24xlarge | 14 | 120 | 
| c7a.32xlarge | 14 | 120 | 
| c7a.48xlarge | 14 | 120 | 
| c7a.metal-48xl | 14 | 120 | 
| c7g.medium | 1 | 4 | 
| c7g.large | 2 | 10 | 
| c7g.xlarge | 3 | 20 | 
| c7g.2xlarge | 3 | 40 | 
| c7g.4xlarge | 7 | 60 | 
| c7g.8xlarge | 7 | 60 | 
| c7g.12xlarge | 7 | 60 | 
| c7g.16xlarge | 14 | 120 | 
| c7g.metal | 14 | 120 | 
| c7gd.medium | 1 | 4 | 
| c7gd.large | 2 | 10 | 
| c7gd.xlarge | 3 | 20 | 
| c7gd.2xlarge | 3 | 40 | 
| c7gd.4xlarge | 7 | 60 | 
| c7gd.8xlarge | 7 | 60 | 
| c7gd.12xlarge | 7 | 60 | 
| c7gd.16xlarge | 14 | 120 | 
| c7gd.metal | 14 | 120 | 
| c7gn.medium | 1 | 4 | 
| c7gn.large | 2 | 10 | 
| c7gn.xlarge | 3 | 20 | 
| c7gn.2xlarge | 3 | 40 | 
| c7gn.4xlarge | 7 | 60 | 
| c7gn.8xlarge | 7 | 60 | 
| c7gn.12xlarge | 7 | 60 | 
| c7gn.16xlarge | 14 | 120 | 
| c7gn.metal | 14 | 120 | 
| c7i.large | 2 | 10 | 
| c7i.xlarge | 3 | 20 | 
| c7i.2xlarge | 3 | 40 | 
| c7i.4xlarge | 7 | 60 | 
| c7i.8xlarge | 7 | 90 | 
| c7i.12xlarge | 7 | 120 | 
| c7i.16xlarge | 14 | 120 | 
| c7i.24xlarge | 14 | 120 | 
| c7i.48xlarge | 14 | 120 | 
| c7i.metal-24xl | 14 | 120 | 
| c7i.metal-48xl | 14 | 120 | 
| c7i-flex.large | 2 | 4 | 
| c7i-flex.xlarge | 3 | 10 | 
| c7i-flex.2xlarge | 3 | 20 | 
| c7i-flex.4xlarge | 7 | 40 | 
| c7i-flex.8xlarge | 7 | 60 | 
| c7i-flex.12xlarge | 7 | 120 | 
| c7i-flex.16xlarge | 14 | 120 | 
| c8a.medium | 1 | 4 | 
| c8a.large | 2 | 10 | 
| c8a.xlarge | 3 | 20 | 
| c8a.2xlarge | 3 | 40 | 
| c8a.4xlarge | 7 | 60 | 
| c8a.8xlarge | 9 | 90 | 
| c8a.12xlarge | 11 | 120 | 
| c8a.16xlarge | 15 | 120 | 
| c8a.24xlarge | 15 | 120 | 
| c8a.48xlarge | 23 | 120 | 
| c8a.metal-24xl | 15 | 120 | 
| c8a.metal-48xl | 23 | 120 | 
| c8g.medium | 1 | 4 | 
| c8g.large | 2 | 10 | 
| c8g.xlarge | 3 | 20 | 
| c8g.2xlarge | 3 | 40 | 
| c8g.4xlarge | 7 | 60 | 
| c8g.8xlarge | 7 | 60 | 
| c8g.12xlarge | 7 | 60 | 
| c8g.16xlarge | 14 | 120 | 
| c8g.24xlarge | 14 | 120 | 
| c8g.48xlarge | 14 | 120 | 
| c8g.metal-24xl | 14 | 120 | 
| c8g.metal-48xl | 14 | 120 | 
| c8gb.medium | 1 | 4 | 
| c8gb.large | 2 | 10 | 
| c8gb.xlarge | 3 | 20 | 
| c8gb.2xlarge | 3 | 40 | 
| c8gb.4xlarge | 7 | 60 | 
| c8gb.8xlarge | 9 | 60 | 
| c8gb.12xlarge | 11 | 60 | 
| c8gb.16xlarge | 15 | 120 | 
| c8gb.24xlarge | 23 | 120 | 
| c8gb.48xlarge | 23 | 120 | 
| c8gb.metal-24xl | 23 | 120 | 
| c8gb.metal-48xl | 23 | 120 | 
| c8gd.medium | 1 | 4 | 
| c8gd.large | 2 | 10 | 
| c8gd.xlarge | 3 | 20 | 
| c8gd.2xlarge | 3 | 40 | 
| c8gd.4xlarge | 7 | 60 | 
| c8gd.8xlarge | 7 | 60 | 
| c8gd.12xlarge | 7 | 60 | 
| c8gd.16xlarge | 14 | 120 | 
| c8gd.24xlarge | 14 | 120 | 
| c8gd.48xlarge | 14 | 120 | 
| c8gd.metal-24xl | 14 | 120 | 
| c8gd.metal-48xl | 14 | 120 | 
| c8gn.medium | 1 | 4 | 
| c8gn.large | 2 | 10 | 
| c8gn.xlarge | 3 | 20 | 
| c8gn.2xlarge | 3 | 40 | 
| c8gn.4xlarge | 7 | 60 | 
| c8gn.8xlarge | 9 | 60 | 
| c8gn.12xlarge | 11 | 60 | 
| c8gn.16xlarge | 15 | 120 | 
| c8gn.24xlarge | 23 | 120 | 
| c8gn.48xlarge | 23 | 120 | 
| c8gn.metal-24xl | 23 | 120 | 
| c8gn.metal-48xl | 23 | 120 | 
| c8i.large | 2 | 10 | 
| c8i.xlarge | 3 | 20 | 
| c8i.2xlarge | 3 | 40 | 
| c8i.4xlarge | 7 | 60 | 
| c8i.8xlarge | 9 | 90 | 
| c8i.12xlarge | 11 | 120 | 
| c8i.16xlarge | 15 | 120 | 
| c8i.24xlarge | 15 | 120 | 
| c8i.32xlarge | 23 | 120 | 
| c8i.48xlarge | 23 | 120 | 
| c8i.96xlarge | 23 | 120 | 
| c8i.metal-48xl | 23 | 120 | 
| c8i.metal-96xl | 23 | 120 | 
| c8id.large | 2 | 10 | 
| c8id.xlarge | 3 | 20 | 
| c8id.2xlarge | 3 | 40 | 
| c8id.4xlarge | 7 | 60 | 
| c8id.8xlarge | 9 | 90 | 
| c8id.12xlarge | 11 | 120 | 
| c8id.16xlarge | 15 | 120 | 
| c8id.24xlarge | 15 | 120 | 
| c8id.32xlarge | 23 | 120 | 
| c8id.48xlarge | 23 | 120 | 
| c8id.96xlarge | 23 | 120 | 
| c8id.metal-48xl | 23 | 120 | 
| c8id.metal-96xl | 23 | 120 | 
| c8i-flex.large | 2 | 4 | 
| c8i-flex.xlarge | 3 | 10 | 
| c8i-flex.2xlarge | 3 | 20 | 
| c8i-flex.4xlarge | 7 | 40 | 
| c8i-flex.8xlarge | 9 | 60 | 
| c8i-flex.12xlarge | 11 | 120 | 
| c8i-flex.16xlarge | 15 | 120 | 

## 記憶體最佳化
<a name="eni-branch-mo"></a>


| 執行個體類型 | 未啟用 ENI 主幹功能時的任務數量上限 | 啟用 ENI 主幹功能時的任務數量上限 | 
| --- | --- | --- | 
| r5.large | 2 | 10 | 
| r5.xlarge | 3 | 20 | 
| r5.2xlarge | 3 | 40 | 
| r5.4xlarge | 7 | 60 | 
| r5.12xlarge | 7 | 60 | 
| r5.16xlarge | 14 | 120 | 
| r5.24xlarge | 14 | 120 | 
| r5a.large | 2 | 10 | 
| r5a.xlarge | 3 | 20 | 
| r5a.2xlarge | 3 | 40 | 
| r5a.4xlarge | 7 | 60 | 
| r5a.8xlarge | 7 | 60 | 
| r5a.12xlarge | 7 | 60 | 
| r5a.16xlarge | 14 | 120 | 
| r5a.24xlarge | 14 | 120 | 
| r5ad.large | 2 | 10 | 
| r5ad.xlarge | 3 | 20 | 
| r5ad.2xlarge | 3 | 40 | 
| r5ad.4xlarge | 7 | 60 | 
| r5ad.8xlarge | 7 | 60 | 
| r5ad.12xlarge | 7 | 60 | 
| r5ad.16xlarge | 14 | 120 | 
| r5ad.24xlarge | 14 | 120 | 
| r5b.16xlarge | 14 | 120 | 
| r5d.large | 2 | 10 | 
| r5d.xlarge | 3 | 20 | 
| r5d.2xlarge | 3 | 40 | 
| r5d.4xlarge | 7 | 60 | 
| r5d.8xlarge | 7 | 60 | 
| r5d.12xlarge | 7 | 60 | 
| r5d.16xlarge | 14 | 120 | 
| r5d.24xlarge | 14 | 120 | 
| r5dn.16xlarge | 14 | 120 | 
| r6a.large | 2 | 10 | 
| r6a.xlarge | 3 | 20 | 
| r6a.2xlarge | 3 | 40 | 
| r6a.4xlarge | 7 | 60 | 
| r6a.8xlarge | 7 | 90 | 
| r6a.12xlarge | 7 | 120 | 
| r6a.16xlarge | 14 | 120 | 
| r6a.24xlarge | 14 | 120 | 
| r6a.32xlarge | 14 | 120 | 
| r6a.48xlarge | 14 | 120 | 
| r6a.metal | 14 | 120 | 
| r6g.medium | 1 | 4 | 
| r6g.large | 2 | 10 | 
| r6g.xlarge | 3 | 20 | 
| r6g.2xlarge | 3 | 40 | 
| r6g.4xlarge | 7 | 60 | 
| r6g.8xlarge | 7 | 60 | 
| r6g.12xlarge | 7 | 60 | 
| r6g.16xlarge | 14 | 120 | 
| r6g.metal | 14 | 120 | 
| r6gd.medium | 1 | 4 | 
| r6gd.large | 2 | 10 | 
| r6gd.xlarge | 3 | 20 | 
| r6gd.2xlarge | 3 | 40 | 
| r6gd.4xlarge | 7 | 60 | 
| r6gd.8xlarge | 7 | 60 | 
| r6gd.12xlarge | 7 | 60 | 
| r6gd.16xlarge | 14 | 120 | 
| r6gd.metal | 14 | 120 | 
| r6i.large | 2 | 10 | 
| r6i.xlarge | 3 | 20 | 
| r6i.2xlarge | 3 | 40 | 
| r6i.4xlarge | 7 | 60 | 
| r6i.8xlarge | 7 | 90 | 
| r6i.12xlarge | 7 | 120 | 
| r6i.16xlarge | 14 | 120 | 
| r6i.24xlarge | 14 | 120 | 
| r6i.32xlarge | 14 | 120 | 
| r6i.metal | 14 | 120 | 
| r6id.large | 2 | 10 | 
| r6id.xlarge | 3 | 20 | 
| r6id.2xlarge | 3 | 40 | 
| r6id.4xlarge | 7 | 60 | 
| r6id.8xlarge | 7 | 90 | 
| r6id.12xlarge | 7 | 120 | 
| r6id.16xlarge | 14 | 120 | 
| r6id.24xlarge | 14 | 120 | 
| r6id.32xlarge | 14 | 120 | 
| r6id.metal | 14 | 120 | 
| r6idn.large | 2 | 10 | 
| r6idn.xlarge | 3 | 20 | 
| r6idn.2xlarge | 3 | 40 | 
| r6idn.4xlarge | 7 | 60 | 
| r6idn.8xlarge | 7 | 90 | 
| r6idn.12xlarge | 7 | 120 | 
| r6idn.16xlarge | 14 | 120 | 
| r6idn.24xlarge | 14 | 120 | 
| r6idn.32xlarge | 15 | 120 | 
| r6idn.metal | 15 | 120 | 
| r6in.large | 2 | 10 | 
| r6in.xlarge | 3 | 20 | 
| r6in.2xlarge | 3 | 40 | 
| r6in.4xlarge | 7 | 60 | 
| r6in.8xlarge | 7 | 90 | 
| r6in.12xlarge | 7 | 120 | 
| r6in.16xlarge | 14 | 120 | 
| r6in.24xlarge | 14 | 120 | 
| r6in.32xlarge | 15 | 120 | 
| r6in.metal | 15 | 120 | 
| r7a.medium | 1 | 4 | 
| r7a.large | 2 | 10 | 
| r7a.xlarge | 3 | 20 | 
| r7a.2xlarge | 3 | 40 | 
| r7a.4xlarge | 7 | 60 | 
| r7a.8xlarge | 7 | 90 | 
| r7a.12xlarge | 7 | 120 | 
| r7a.16xlarge | 14 | 120 | 
| r7a.24xlarge | 14 | 120 | 
| r7a.32xlarge | 14 | 120 | 
| r7a.48xlarge | 14 | 120 | 
| r7a.metal-48xl | 14 | 120 | 
| r7g.medium | 1 | 4 | 
| r7g.large | 2 | 10 | 
| r7g.xlarge | 3 | 20 | 
| r7g.2xlarge | 3 | 40 | 
| r7g.4xlarge | 7 | 60 | 
| r7g.8xlarge | 7 | 60 | 
| r7g.12xlarge | 7 | 60 | 
| r7g.16xlarge | 14 | 120 | 
| r7g.metal | 14 | 120 | 
| r7gd.medium | 1 | 4 | 
| r7gd.large | 2 | 10 | 
| r7gd.xlarge | 3 | 20 | 
| r7gd.2xlarge | 3 | 40 | 
| r7gd.4xlarge | 7 | 60 | 
| r7gd.8xlarge | 7 | 60 | 
| r7gd.12xlarge | 7 | 60 | 
| r7gd.16xlarge | 14 | 120 | 
| r7gd.metal | 14 | 120 | 
| r7i.large | 2 | 10 | 
| r7i.xlarge | 3 | 20 | 
| r7i.2xlarge | 3 | 40 | 
| r7i.4xlarge | 7 | 60 | 
| r7i.8xlarge | 7 | 90 | 
| r7i.12xlarge | 7 | 120 | 
| r7i.16xlarge | 14 | 120 | 
| r7i.24xlarge | 14 | 120 | 
| r7i.48xlarge | 14 | 120 | 
| r7i.metal-24xl | 14 | 120 | 
| r7i.metal-48xl | 14 | 120 | 
| r7iz.large | 2 | 10 | 
| r7iz.xlarge | 3 | 20 | 
| r7iz.2xlarge | 3 | 40 | 
| r7iz.4xlarge | 7 | 60 | 
| r7iz.8xlarge | 7 | 90 | 
| r7iz.12xlarge | 7 | 120 | 
| r7iz.16xlarge | 14 | 120 | 
| r7iz.32xlarge | 14 | 120 | 
| r7iz.metal-16xl | 14 | 120 | 
| r7iz.metal-32xl | 14 | 120 | 
| r8a.medium | 1 | 4 | 
| r8a.large | 2 | 10 | 
| r8a.xlarge | 3 | 20 | 
| r8a.2xlarge | 3 | 40 | 
| r8a.4xlarge | 7 | 60 | 
| r8a.8xlarge | 9 | 90 | 
| r8a.12xlarge | 11 | 120 | 
| r8a.16xlarge | 15 | 120 | 
| r8a.24xlarge | 15 | 120 | 
| r8a.48xlarge | 23 | 120 | 
| r8a.metal-24xl | 15 | 120 | 
| r8a.metal-48xl | 23 | 120 | 
| r8g.medium | 1 | 4 | 
| r8g.large | 2 | 10 | 
| r8g.xlarge | 3 | 20 | 
| r8g.2xlarge | 3 | 40 | 
| r8g.4xlarge | 7 | 60 | 
| r8g.8xlarge | 7 | 60 | 
| r8g.12xlarge | 7 | 60 | 
| r8g.16xlarge | 14 | 120 | 
| r8g.24xlarge | 14 | 120 | 
| r8g.48xlarge | 14 | 120 | 
| r8g.metal-24xl | 14 | 120 | 
| r8g.metal-48xl | 14 | 120 | 
| r8gb.medium | 1 | 4 | 
| r8gb.large | 2 | 10 | 
| r8gb.xlarge | 3 | 20 | 
| r8gb.2xlarge | 3 | 40 | 
| r8gb.4xlarge | 7 | 60 | 
| r8gb.8xlarge | 9 | 60 | 
| r8gb.12xlarge | 11 | 60 | 
| r8gb.16xlarge | 15 | 120 | 
| r8gb.24xlarge | 23 | 120 | 
| r8gb.48xlarge | 23 | 120 | 
| r8gb.metal-24xl | 23 | 120 | 
| r8gb.metal-48xl | 23 | 120 | 
| r8gd.medium | 1 | 4 | 
| r8gd.large | 2 | 10 | 
| r8gd.xlarge | 3 | 20 | 
| r8gd.2xlarge | 3 | 40 | 
| r8gd.4xlarge | 7 | 60 | 
| r8gd.8xlarge | 7 | 60 | 
| r8gd.12xlarge | 7 | 60 | 
| r8gd.16xlarge | 14 | 120 | 
| r8gd.24xlarge | 14 | 120 | 
| r8gd.48xlarge | 14 | 120 | 
| r8gd.metal-24xl | 14 | 120 | 
| r8gd.metal-48xl | 14 | 120 | 
| r8gn.medium | 1 | 4 | 
| r8gn.large | 2 | 10 | 
| r8gn.xlarge | 3 | 20 | 
| r8gn.2xlarge | 3 | 40 | 
| r8gn.4xlarge | 7 | 60 | 
| r8gn.8xlarge | 9 | 60 | 
| r8gn.12xlarge | 11 | 60 | 
| r8gn.16xlarge | 15 | 120 | 
| r8gn.24xlarge | 23 | 120 | 
| r8gn.48xlarge | 23 | 120 | 
| r8gn.metal-24xl | 23 | 120 | 
| r8gn.metal-48xl | 23 | 120 | 
| r8i.large | 2 | 10 | 
| r8i.xlarge | 3 | 20 | 
| r8i.2xlarge | 3 | 40 | 
| r8i.4xlarge | 7 | 60 | 
| r8i.8xlarge | 9 | 90 | 
| r8i.12xlarge | 11 | 120 | 
| r8i.16xlarge | 15 | 120 | 
| r8i.24xlarge | 15 | 120 | 
| r8i.32xlarge | 23 | 120 | 
| r8i.48xlarge | 23 | 120 | 
| r8i.96xlarge | 23 | 120 | 
| r8i.metal-48xl | 23 | 120 | 
| r8i.metal-96xl | 23 | 120 | 
| r8id.large | 2 | 10 | 
| r8id.xlarge | 3 | 20 | 
| r8id.2xlarge | 3 | 40 | 
| r8id.4xlarge | 7 | 60 | 
| r8id.8xlarge | 9 | 90 | 
| r8id.12xlarge | 11 | 120 | 
| r8id.16xlarge | 15 | 120 | 
| r8id.24xlarge | 15 | 120 | 
| r8id.32xlarge | 23 | 120 | 
| r8id.48xlarge | 23 | 120 | 
| r8id.96xlarge | 23 | 120 | 
| r8id.metal-48xl | 23 | 120 | 
| r8id.metal-96xl | 23 | 120 | 
| r8i-flex.large | 2 | 4 | 
| r8i-flex.xlarge | 3 | 10 | 
| r8i-flex.2xlarge | 3 | 20 | 
| r8i-flex.4xlarge | 7 | 40 | 
| r8i-flex.8xlarge | 9 | 60 | 
| r8i-flex.12xlarge | 11 | 120 | 
| r8i-flex.16xlarge | 15 | 120 | 
| u-3tb1.56xlarge | 7 | 12 | 
| u-6tb1.56xlarge | 14 | 12 | 
| u-18tb1.112xlarge | 14 | 12 | 
| u-18tb1.metal | 14 | 12 | 
| u-24tb1.112xlarge | 14 | 12 | 
| u-24tb1.metal | 14 | 12 | 
| u7i-6tb.112xlarge | 14 | 120 | 
| u7i-8tb.112xlarge | 14 | 120 | 
| u7i-12tb.224xlarge | 14 | 120 | 
| u7in-16tb.224xlarge | 15 | 120 | 
| u7in-24tb.224xlarge | 15 | 120 | 
| u7in-32tb.224xlarge | 15 | 120 | 
| u7inh-32tb.480xlarge | 15 | 120 | 
| x2gd.medium | 1 | 10 | 
| x2gd.large | 2 | 10 | 
| x2gd.xlarge | 3 | 20 | 
| x2gd.2xlarge | 3 | 40 | 
| x2gd.4xlarge | 7 | 60 | 
| x2gd.8xlarge | 7 | 60 | 
| x2gd.12xlarge | 7 | 60 | 
| x2gd.16xlarge | 14 | 120 | 
| x2gd.metal | 14 | 120 | 
| x2idn.16xlarge | 14 | 120 | 
| x2idn.24xlarge | 14 | 120 | 
| x2idn.32xlarge | 14 | 120 | 
| x2idn.metal | 14 | 120 | 
| x2iedn.xlarge | 3 | 13 | 
| x2iedn.2xlarge | 3 | 29 | 
| x2iedn.4xlarge | 7 | 60 | 
| x2iedn.8xlarge | 7 | 120 | 
| x2iedn.16xlarge | 14 | 120 | 
| x2iedn.24xlarge | 14 | 120 | 
| x2iedn.32xlarge | 14 | 120 | 
| x2iedn.metal | 14 | 120 | 
| x2iezn.2xlarge | 3 | 64 | 
| x2iezn.4xlarge | 7 | 120 | 
| x2iezn.6xlarge | 7 | 120 | 
| x2iezn.8xlarge | 7 | 120 | 
| x2iezn.12xlarge | 14 | 120 | 
| x2iezn.metal | 14 | 120 | 
| x8g.medium | 1 | 4 | 
| x8g.large | 2 | 10 | 
| x8g.xlarge | 3 | 20 | 
| x8g.2xlarge | 3 | 40 | 
| x8g.4xlarge | 7 | 60 | 
| x8g.8xlarge | 7 | 60 | 
| x8g.12xlarge | 7 | 60 | 
| x8g.16xlarge | 14 | 120 | 
| x8g.24xlarge | 14 | 120 | 
| x8g.48xlarge | 14 | 120 | 
| x8g.metal-24xl | 14 | 120 | 
| x8g.metal-48xl | 14 | 120 | 
| x8aedz.large | 3 | 10 | 
| x8aedz.xlarge | 3 | 20 | 
| x8aedz.3xlarge | 7 | 40 | 
| x8aedz.6xlarge | 7 | 60 | 
| x8aedz.12xlarge | 15 | 120 | 
| x8aedz.24xlarge | 15 | 120 | 
| x8aedz.metal-12xl | 15 | 120 | 
| x8aedz.metal-24xl | 15 | 120 | 
| x8i.large | 2 | 10 | 
| x8i.xlarge | 3 | 20 | 
| x8i.2xlarge | 3 | 40 | 
| x8i.4xlarge | 7 | 60 | 
| x8i.8xlarge | 9 | 90 | 
| x8i.12xlarge | 11 | 120 | 
| x8i.16xlarge | 15 | 120 | 
| x8i.24xlarge | 15 | 120 | 
| x8i.32xlarge | 23 | 120 | 
| x8i.48xlarge | 23 | 120 | 
| x8i.64xlarge | 23 | 120 | 
| x8i.96xlarge | 23 | 120 | 
| x8i.metal-48xl | 23 | 120 | 
| x8i.metal-96xl | 23 | 120 | 

## 儲存最佳化
<a name="eni-branch-so"></a>


| 執行個體類型 | 未啟用 ENI 主幹功能時的任務數量上限 | 啟用 ENI 主幹功能時的任務數量上限 | 
| --- | --- | --- | 
| i4g.large | 2 | 10 | 
| i4g.xlarge | 3 | 20 | 
| i4g.2xlarge | 3 | 40 | 
| i4g.4xlarge | 7 | 60 | 
| i4g.8xlarge | 7 | 60 | 
| i4g.16xlarge | 14 | 120 | 
| i4i.xlarge | 3 | 8 | 
| i4i.2xlarge | 3 | 28 | 
| i4i.4xlarge | 7 | 58 | 
| i4i.8xlarge | 7 | 118 | 
| i4i.12xlarge | 7 | 118 | 
| i4i.16xlarge | 14 | 248 | 
| i4i.24xlarge | 14 | 118 | 
| i4i.32xlarge | 14 | 498 | 
| i4i.metal | 14 | 498 | 
| i7i.large | 2 | 10 | 
| i7i.xlarge | 3 | 20 | 
| i7i.2xlarge | 3 | 40 | 
| i7i.4xlarge | 7 | 60 | 
| i7i.8xlarge | 7 | 90 | 
| i7i.12xlarge | 7 | 90 | 
| i7i.16xlarge | 14 | 120 | 
| i7i.24xlarge | 14 | 120 | 
| i7i.48xlarge | 14 | 120 | 
| i7i.metal-24xl | 14 | 120 | 
| i7i.metal-48xl | 14 | 120 | 
| i7ie.large | 2 | 20 | 
| i7ie.xlarge | 3 | 29 | 
| i7ie.2xlarge | 3 | 29 | 
| i7ie.3xlarge | 3 | 29 | 
| i7ie.6xlarge | 7 | 60 | 
| i7ie.12xlarge | 7 | 60 | 
| i7ie.18xlarge | 14 | 120 | 
| i7ie.24xlarge | 14 | 120 | 
| i7ie.48xlarge | 14 | 120 | 
| i7ie.metal-24xl | 14 | 120 | 
| i7ie.metal-48xl | 14 | 120 | 
| i8g.large | 2 | 10 | 
| i8g.xlarge | 3 | 20 | 
| i8g.2xlarge | 3 | 40 | 
| i8g.4xlarge | 7 | 60 | 
| i8g.8xlarge | 7 | 60 | 
| i8g.12xlarge | 7 | 60 | 
| i8g.16xlarge | 14 | 120 | 
| i8g.24xlarge | 14 | 120 | 
| i8g.48xlarge | 14 | 120 | 
| i8g.metal-24xl | 14 | 120 | 
| i8g.metal-48xl | 14 | 120 | 
| i8ge.large | 2 | 20 | 
| i8ge.xlarge | 3 | 29 | 
| i8ge.2xlarge | 3 | 29 | 
| i8ge.3xlarge | 5 | 29 | 
| i8ge.6xlarge | 9 | 60 | 
| i8ge.12xlarge | 11 | 60 | 
| i8ge.18xlarge | 15 | 120 | 
| i8ge.24xlarge | 15 | 120 | 
| i8ge.48xlarge | 23 | 120 | 
| i8ge.metal-24xl | 15 | 120 | 
| i8ge.metal-48xl | 23 | 120 | 
| im4gn.large | 2 | 10 | 
| im4gn.xlarge | 3 | 20 | 
| im4gn.2xlarge | 3 | 40 | 
| im4gn.4xlarge | 7 | 60 | 
| im4gn.8xlarge | 7 | 60 | 
| im4gn.16xlarge | 14 | 120 | 
| is4gen.medium | 1 | 4 | 
| is4gen.large | 2 | 10 | 
| is4gen.xlarge | 3 | 20 | 
| is4gen.2xlarge | 3 | 40 | 
| is4gen.4xlarge | 7 | 60 | 
| is4gen.8xlarge | 7 | 60 | 

## 加速運算
<a name="eni-branch-ac"></a>


| 執行個體類型 | 未啟用 ENI 主幹功能時的任務數量上限 | 啟用 ENI 主幹功能時的任務數量上限 | 
| --- | --- | --- | 
| dl1.24xlarge | 59 | 120 | 
| dl2q.24xlarge | 14 | 120 | 
| f2.6xlarge | 7 | 90 | 
| f2.12xlarge | 7 | 120 | 
| f2.48xlarge | 14 | 120 | 
| g4ad.xlarge | 1 | 12 | 
| g4ad.2xlarge | 1 | 12 | 
| g4ad.4xlarge | 2 | 12 | 
| g4ad.8xlarge | 3 | 12 | 
| g4ad.16xlarge | 7 | 12 | 
| g5.xlarge | 3 | 6 | 
| g5.2xlarge | 3 | 19 | 
| g5.4xlarge | 7 | 40 | 
| g5.8xlarge | 7 | 90 | 
| g5.12xlarge | 14 | 120 | 
| g5.16xlarge | 7 | 120 | 
| g5.24xlarge | 14 | 120 | 
| g5.48xlarge | 6 | 120 | 
| g5g.xlarge | 3 | 20 | 
| g5g.2xlarge | 3 | 40 | 
| g5g.4xlarge | 7 | 60 | 
| g5g.8xlarge | 7 | 60 | 
| g5g.16xlarge | 14 | 120 | 
| g5g.metal | 14 | 120 | 
| g6.xlarge | 3 | 20 | 
| g6.2xlarge | 3 | 40 | 
| g6.4xlarge | 7 | 60 | 
| g6.8xlarge | 7 | 90 | 
| g6.12xlarge | 7 | 120 | 
| g6.16xlarge | 14 | 120 | 
| g6.24xlarge | 14 | 120 | 
| g6.48xlarge | 14 | 120 | 
| g6e.xlarge | 3 | 20 | 
| g6e.2xlarge | 3 | 40 | 
| g6e.4xlarge | 7 | 60 | 
| g6e.8xlarge | 7 | 90 | 
| g6e.12xlarge | 9 | 120 | 
| g6e.16xlarge | 14 | 120 | 
| g6e.24xlarge | 19 | 120 | 
| g6e.48xlarge | 39 | 120 | 
| g6f.large | 1 | 10 | 
| g6f.xlarge | 3 | 20 | 
| g6f.2xlarge | 3 | 40 | 
| g6f.4xlarge | 7 | 60 | 
| gr6.4xlarge | 7 | 60 | 
| gr6.8xlarge | 7 | 90 | 
| gr6f.4xlarge | 7 | 60 | 
| g7e.2xlarge | 3 | 242 | 
| g7e.4xlarge | 7 | 242 | 
| g7e.8xlarge | 7 | 242 | 
| g7e.12xlarge | 9 | 242 | 
| g7e.24xlarge | 19 | 242 | 
| g7e.48xlarge | 39 | 242 | 
| inf2.xlarge | 3 | 20 | 
| inf2.8xlarge | 7 | 90 | 
| inf2.24xlarge | 14 | 120 | 
| inf2.48xlarge | 14 | 120 | 
| p4d.24xlarge | 59 | 120 | 
| p4de.24xlarge | 59 | 120 | 
| p5.4xlarge | 3 | 60 | 
| p5.48xlarge | 63 | 242 | 
| p5e.48xlarge | 63 | 242 | 
| p5en.48xlarge | 63 | 242 | 
| p6-b200.48xlarge | 31 | 242 | 
| p6-b300.48xlarge | 67 | 242 | 
| p6e-gb200.36xlarge | 38 | 120 | 
| trn1.2xlarge | 3 | 19 | 
| trn1.32xlarge | 39 | 120 | 
| trn1n.32xlarge | 79 | 242 | 
| trn2.3xlarge | 1 | 14 | 
| trn2.48xlarge | 31 | 242 | 
| trn2u.48xlarge | 31 | 242 | 
| vt1.3xlarge | 3 | 40 | 
| vt1.6xlarge | 7 | 60 | 
| vt1.24xlarge | 14 | 120 | 

## 高效能運算
<a name="eni-branch-hpc"></a>


| 執行個體類型 | 未啟用 ENI 主幹功能時的任務數量上限 | 啟用 ENI 主幹功能時的任務數量上限 | 
| --- | --- | --- | 
| hpc6a.48xlarge | 1 | 120 | 
| hpc6id.32xlarge | 1 | 120 | 
| hpc7g.4xlarge | 3 | 120 | 
| hpc7g.8xlarge | 3 | 120 | 
| hpc7g.16xlarge | 3 | 120 | 
| hpc8a.96xlarge | 3 | -2 | 

# 保留 Amazon ECS Linux 容器執行個體記憶體
<a name="memory-management"></a>

當 Amazon ECS 容器代理程式將容器執行個體註冊至叢集時，代理程式必須判斷容器執行個體有多少記憶體可保留給您的任務。由於存在平台記憶體額外負荷和由系統核心佔用的記憶體，這數字會與 Amazon EC2 執行個體公告的安裝記憶體數量不同。舉例而言，`m4.large` 執行個體安裝了 8 GiB 的記憶體。但在容器執行個體註冊時，未必恰好有 8192 MiB 的記憶體可供任務使用。

## ECS 受管執行個體記憶體資源判斷
<a name="ecs-mi-memory-calculation"></a>

Amazon ECS 受管執行個體使用階層方法來判斷任務的記憶體資源需求。與依賴 Docker 記憶體自我檢查的 EC2 上的 ECS 不同，ECS 受管執行個體會在排程決策期間直接從任務承載計算記憶體需求。

ECS 受管執行個體代理程式收到任務時，會使用下列優先順序來計算記憶體需求：

1. **任務層級記憶體 （最高優先順序）** - 如果任務層級記憶體是在任務定義中指定，代理程式會直接使用此值。這優先於所有容器層級的記憶體設定。

1. **容器層級記憶體總和 （備用）** - 如果未指定任務層級記憶體 （或為 0)，代理程式會加總任務中所有容器的記憶體需求。對於每個容器，它使用：

   1. *記憶體保留 （軟性限制）* - 如果容器在其組態`memoryReservation`中指定 ，代理程式會使用此值。

   1. *容器記憶體 （硬性限制）* - 如果`memoryReservation`未指定，代理程式會使用容器`memory`的欄位。

**Example 指定的任務層級記憶體**  
指定任務層級記憶體時，其優先順序會高於容器層級設定：  

```
{
  "family": "my-task",
  "memory": "2048",
  "containerDefinitions": [
    {
      "name": "container1",
      "memory": 1024,
      "memoryReservation": 512
    }
  ]
}
```
代理程式保留 2048 MiB （任務層級記憶體優先）。

**Example 具有保留的容器層級記憶體**  
未指定任務層級記憶體時，代理程式會加總容器記憶體需求：  

```
{
  "family": "my-task",
  "containerDefinitions": [
    {
      "name": "container1",
      "memory": 1024,
      "memoryReservation": 512
    },
    {
      "name": "container2",
      "memory": 512
    }
  ]
}
```
代理程式保留 512 MiB （容器 1 保留） \$1 512 MiB （容器 2 記憶體） = 總計 1024 MiB。

ECS 受管執行個體代理程式會分三個階段執行記憶體計算：

1. **任務接收** - 當任務承載從 ECS 控制平面抵達時，代理程式會立即計算所需的記憶體。

1. **資源儲存** - 計算的記憶體需求會存放在任務模型中，以供日後在資源會計操作中使用。

1. **排程決策** - 在接受任務之前，客服人員會檢查是否有足夠記憶體可用。如果可用的記憶體不足，任務會遭到拒絕，並保留在 ECS 服務佇列中，直到資源可用為止。

**注意**  
與 EC2 上的 ECS 不同，ECS 受管執行個體不會使用 `ECS_RESERVED_MEMORY` 組態變數。系統程序的記憶體保留是透過基礎平台的資源管理來處理，而代理程式會根據任務定義執行準確的資源會計。

 對於 EC2 上的 ECS，Amazon ECS 容器代理程式提供名為 的組態變數`ECS_RESERVED_MEMORY`，可用來從配置給您任務 MiB 的集區中移除指定數量的記憶體。這可為重要系統程序有效地預留記憶體。

若您的任務佔用了容器執行個體上的所有記憶體，任務可能會與重要的系統程序爭奪記憶體，也許會引發系統故障。

舉例而言，若在容器代理程式檔案中指定 `ECS_RESERVED_MEMORY=256`，則代理程式會將記憶體總量減去 256 MiB 再註冊給該執行個體，而 256 MiB 的記憶體就無法由 ECS 任務配置。如需代理程式組態變數的詳細資訊及設定方式，請參閱 [Amazon ECS 容器代理程式組態](ecs-agent-config.md) 和 [引導 Amazon ECS Linux 容器執行個體傳遞資料](bootstrap_container_instance.md)。

若指定 8192 MiB 供任務使用，而您沒有任何容器執行個體擁有 8192 MiB 或更多記憶體可滿足此需求，則任務便無法置放到叢集中。如果您使用的是受管運算環境，則 AWS Batch 必須啟動較大的執行個體類型以容納請求。

Amazon ECS 容器代理程式會使用 Docker `ReadMemInfo()` 函數來查詢作業系統可用的記憶體總量。Linux 和 Windows 均有提供命令列公用程式來判斷記憶體總量。

**Example - 判定 Linux 記憶體總量**  
**free** 命令會傳回作業系統辨識出的記憶體總量。  

```
$ free -b
```
執行 Amazon ECS 最佳化 Amazon Linux AMI 的 `m4.large` 執行個體的輸出範例。  

```
             total       used       free     shared    buffers     cached
Mem:    8373026816  348180480 8024846336      90112   25534464  205418496
-/+ buffers/cache:  117227520 8255799296
```
執行個體的記憶體總量有 8373026816 位元組，轉為任務可使用的記憶體則有 7985 MiB。

**Example - 判定 Windows 記憶體總量**  
**wmic** 命令會傳回作業系統辨識出的記憶體總量。  

```
C:\> wmic ComputerSystem get TotalPhysicalMemory
```
執行 Amazon ECS 最佳化 Windows Server AMI 的 `m4.large` 執行個體的輸出範例。  

```
TotalPhysicalMemory
8589524992
```
執行個體的記憶體總量有 8589524992 位元組，轉為任務可使用的記憶體則有 8191 MiB。

## 檢視容器執行個體記憶體
<a name="viewing-memory"></a>

您可以在 Amazon ECS 主控台中檢視容器執行個體註冊的記憶體量 (也可以使用 [DescribeContainerInstances](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeContainerInstances.html) API 操作)。若要為特定執行個體類型的任務提供盡可能多的記憶體，以最大化資源使用率，您可以觀察該容器執行個體有多少可用的記憶體量，然後再向任務指派盡可能多的記憶體。

**檢視容器執行個體記憶體**

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在導覽窗格中選擇**叢集**，再選取託管容器執行個體的叢集。

1. 選擇**基礎結構**，然後在容器執行個體下選擇容器執行個體。

1. **資源**區段會顯示容器執行個體的已註冊和可使用的記憶體。

   **已註冊**的記憶體值是容器執行個體首次啟動時向 Amazon ECS 註冊的記憶體量，而**可用**記憶體的值則是尚未分配給任務的記憶體量。

# 使用 從遠端管理 Amazon ECS 容器執行個體 AWS Systems Manager
<a name="ec2-run-command"></a>

您可以在 AWS Systems Manager (Systems Manager) 中使用執行命令功能，以安全且遠端的方式管理 Amazon ECS 容器執行個體的組態。Run Command 提供執行常見管理任務的簡單方法，而不需在本機登入執行個體。您可以同時對多個容器執行個體執行命令，跨叢集管理組態變更。Run Command 會報告每個命令的狀態和結果。

以下是您可以使用 Run Command 執行的一些任務類型範例：
+ 安裝或解除安裝套件。
+ 執行安全性更新。
+ 清除 Docker 映像。
+ 停止或啟動服務。
+ 檢視系統資源。
+ 檢視日誌檔。
+ 執行檔案操作。

如需執行命令的詳細資訊，請參閱 *AWS Systems Manager 使用者指南*中的 [AWS Systems Manager 執行命令](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)。

以下是搭配 Amazon ECS 使用 Systems Manager 的先決條件。

1. 您必須授予容器執行個體角色 (**ecsInstanceRole**) 存取 Systems Manager API 的許可。您可以透過將 **AmazonSSMManagedInstanceCore** 指派給 `ecsInstanceRole` 角色來執行此操作。如需有關如何將政策連接至角色的資訊，請參閱 *AWS Identity and Access Management User Guide* 中的 [Update permissions for a role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html)

1. 確認 SSM Agent 安裝於您的容器執行個體上。如需詳細資訊，請參閱 [Manually installing and uninstalling SSM Agent on EC2 instances for Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)。

將 Systems Manager 受管政策連接到 `ecsInstanceRole`並確認 AWS Systems Manager 代理程式 (SSM 代理程式） 已安裝在您的容器執行個體之後，您就可以開始使用 Run Command 將命令傳送至您的容器執行個體。如需有關在執行個體上執行命令和 shell 指令碼並檢視結果輸出的詳細資訊，請參閱 *AWS Systems Manager 使用者指南*中的[使用 Systems Manager Run Command 執行命令](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)和[執行命令演練](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command-walkthroughs.html)。

常見的使用案例是透過 Run Command 更新容器執行個體軟體。您可以使用下列參數，遵循 AWS Systems Manager 使用者指南中的程序。


| 參數 | Value | 
| --- | --- | 
|  **命令文件**  | AWS-RunShellScript | 
| 命令 |  <pre>$ yum update -y</pre> | 
| 目標執行個體 | 您的容器執行個體 | 

# 為 Amazon ECS Linux 容器執行個體使用 HTTP Proxy
<a name="http_proxy_config"></a>

您可以設定您的 Amazon ECS 容器執行個體，針對 Amazon ECS 容器代理程式和 Docker 常駐程式使用 HTTP 代理。這在您的容器執行個體沒有透過 Amazon VPC 網際網路閘道、NAT 閘道或執行個體進行外部網路存取時會很有用。

若要設定您的 Amazon ECS Linux 容器執行個體以使用 HTTP 代理，請在啟動時 (使用 Amazon EC2 使用者資料) 設定相關檔案中的下列變數。您也可以手動編輯組態檔案，再重新啟動代理程式。

`/etc/ecs/ecs.config` (Amazon Linux 2 與 Amazon Linux AMI)    
`HTTP_PROXY=10.0.0.131:3128`  
將此數值設為要讓 Amazon ECS 代理程式連線到網際網路的 HTTP 代理之主機名稱 (或 IP 地址) 及連接埠號碼。例如，您的容器執行個體可能沒有透過 Amazon VPC 網際網路閘道、NAT 閘道或執行個體的外部網路存取。  
`NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock`  
將此值設為 `169.254.169.254,169.254.170.2,/var/run/docker.sock`，篩選 EC2 執行個體中繼資料、任務的 IAM 角色，以及來自代理的 Docker 常駐程式流量。

`/etc/systemd/system/ecs.service.d/http-proxy.conf` (僅限 Amazon Linux 2)    
`Environment="HTTP_PROXY=10.0.0.131:3128/"`  
將此數值設為要讓 `ecs-init` 連線到網際網路的 HTTP 代理之主機名稱 (或 IP 地址) 及連接埠號碼。例如，您的容器執行個體可能沒有透過 Amazon VPC 網際網路閘道、NAT 閘道或執行個體的外部網路存取。  
`Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock"`  
將此值設為 `169.254.169.254,169.254.170.2,/var/run/docker.sock`，篩選 EC2 執行個體中繼資料、任務的 IAM 角色，以及來自代理的 Docker 常駐程式流量。

`/etc/init/ecs.override` (僅限 Amazon Linux AMI)    
`env HTTP_PROXY=10.0.0.131:3128`  
將此數值設為要讓 `ecs-init` 連線到網際網路的 HTTP 代理之主機名稱 (或 IP 地址) 及連接埠號碼。例如，您的容器執行個體可能沒有透過 Amazon VPC 網際網路閘道、NAT 閘道或執行個體的外部網路存取。  
`env NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock`  
將此值設為 `169.254.169.254,169.254.170.2,/var/run/docker.sock`，篩選 EC2 執行個體中繼資料、任務的 IAM 角色，以及來自代理的 Docker 常駐程式流量。

`/etc/systemd/system/docker.service.d/http-proxy.conf` (僅限 Amazon Linux 2)    
`Environment="HTTP_PROXY=http://10.0.0.131:3128"`  
將此數值設為要讓 Docker 常駐程式連線到網際網路的 HTTP 代理之主機名稱 (或 IP 地址) 及連接埠號碼。例如，您的容器執行個體可能沒有透過 Amazon VPC 網際網路閘道、NAT 閘道或執行個體的外部網路存取。  
`Environment="NO_PROXY=169.254.169.254,169.254.170.2"`  
將此數值設為 `169.254.169.254,169.254.170.2`，篩選來自代理的 EC2 執行個體中繼資料。

`/etc/sysconfig/docker` (僅限 Amazon Linux AMI 和 Amazon Linux 2)    
`export HTTP_PROXY=http://10.0.0.131:3128`  
將此數值設為要讓 Docker 常駐程式連線到網際網路的 HTTP 代理之主機名稱 (或 IP 地址) 及連接埠號碼。例如，您的容器執行個體可能沒有透過 Amazon VPC 網際網路閘道、NAT 閘道或執行個體的外部網路存取。  
`export NO_PROXY=169.254.169.254,169.254.170.2`  
將此數值設為 `169.254.169.254,169.254.170.2`，篩選來自代理的 EC2 執行個體中繼資料。

設定上述檔案中的這些環境變數只會影響 Amazon ECS 容器代理、`ecs-init` 及 Docker 常駐程式。他們不會設定任何其他服務 (例如 **yum**) 使用代理。

如需有關如何設定代理的資訊，請參閱[如何在 Amazon Linux 2 或 Amazon Linux 2023 中，為 Docker 和 Amazon ECS 容器代理程式設定 HTTP Proxy](https://repost.aws/knowledge-center/ecs-http-proxy-docker-linux2)。

# 為 Amazon ECS Auto Scaling 群組設定預先初始化的執行個體
<a name="using-warm-pool"></a>

Amazon ECS 支援 Amazon EC2 Auto Scaling 暖集區。暖集區是一組準備投入使用的預先初始化 Amazon EC2 執行個體。每當應用程式需要水平擴展時，Amazon EC2 Auto Scaling 都會使用暖集區中的預初始化執行個體 (而不是啟動冷執行個體)，讓任何最終初始化程序執行，然後將執行個體投入使用。

若要瞭解有關暖集區以及如何將暖集區新增到 Auto Scaling 群組中的詳細資訊，請參閱《Amazon EC2 Auto Scaling 使用者指南》**中的 [Amazon EC2 Auto Scaling 的暖集區](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html)。

當您為 Amazon ECS 的 Auto Scaling 群組建立或更新暖集區時，無法設定將執行個體傳回縮減暖集區的選項 (`ReuseOnScaleIn`)。如需詳細資訊，請參閱 *AWS Command Line Interface 參考*中的 [put-warm-pool](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-warm-pool.html)。

若要將暖集區與 Amazon ECS 叢集配合使用，請在 Amazon EC2 Auto Scaling 群組啟動範本 **User data** (使用者資料) 欄位中將 `ECS_WARM_POOLS_CHECK` 代理程式組態變數設定為 `true`。

下列示範如何在 Amazon EC2 啟動範本的 **User data** (使用者資料) 欄位中指定代理程式組態變數。將 *MyCluster* 取代為您的叢集名稱。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_WARM_POOLS_CHECK=true
EOF
```

僅代理程式版本 `1.59.0` 和更新版本支援 `ECS_WARM_POOLS_CHECK` 變數。如需變數的詳細資訊，請參閱 [Amazon ECS 容器代理程式組態](ecs-agent-config.md)。

# 更新 Amazon ECS 容器代理程式
<a name="ecs-agent-update"></a>

有時，您可能需要更新 Amazon ECS 容器代理程式，以取得錯誤修正和新功能。更新 Amazon ECS 容器代理不會中斷容器執行個體上正在執行中的任務或服務。更新代理程式的程序有所不同，這取決於您是否使用 Amazon ECS 最佳化 AMI 來啟動容器執行個體，或是否是在其他作業系統上。

**注意**  
代理更新不適用於 Windows 容器執行個體。我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理版本。

## 檢查 Amazon ECS 容器代理程式版本
<a name="checking_agent_version"></a>

您可以檢查在您的容器執行個體上執行的容器代理版本，以查看是否需要更新它。Amazon ECS 主控台中的容器執行個體檢視可提供代理程式版本。請使用下列步驟來檢查您的代理版本。

------
#### [ Amazon ECS console ]

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 從導覽列中選擇註冊外部執行個體所在的區域。

1. 在導覽窗格中選擇 **Clusters** (叢集)，並選取託管外部執行個體的叢集。

1. 在 **Cluster : *name*** (叢集：名稱) 頁面上，選擇 **Infrastructure** (基礎基礎設施) 索引標籤。

1. 在 **Container instances** (容器執行個體) 下，注意您容器執行個體的 **Agent version** (代理程式版本) 資料欄。如果容器執行個體不包含最新版的容器代理，主控台會使用訊息和標記提醒您過時的代理版本。

   若您的代理版本已過時，可以使用以下程序更新容器代理程式：
   + 若您的容器執行個體執行的是 Amazon ECS 最佳化 AMI，請參閱 [在 Amazon ECS 最佳化 AMI 上更新 Amazon ECS 容器代理](agent-update-ecs-ami.md)。
   + 若您的容器執行個體執行的不是 Amazon ECS 最佳化 AMI，請參閱 [手動更新 Amazon ECS 容器代理程式 (適用於非 Amazon ECS 最佳化 AMI)](manually_update_agent.md)。
**重要**  
若要在您的 Amazon ECS 最佳化 AMI 上，更新 v1.0.0 版本之前的 Amazon ECS 代理程式版本，我們建議您終止目前的容器執行個體，並使用最近的 AMI 版本啟動新的執行個體。任何使用預覽版本的容器執行個體都應進行淘汰，並使用最近的 AMI 取代。如需詳細資訊，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

------
#### [ Amazon ECS container agent introspection API  ]

您也可以使用 Amazon ECS 容器代理程式從容器執行個體自我檢查 API 版本。如需詳細資訊，請參閱[Amazon ECS 容器自我檢查](ecs-agent-introspection.md)。

**若要使用自我檢查 API 檢查您的 Amazon ECS 容器代理是否執行最新版本**

1. 透過 SSH 登入您的容器執行個體。

1. 查詢自我檢查 API。

   ```
   [ec2-user ~]$ curl -s 127.0.0.1:51678/v1/metadata | python3 -mjson.tool
   ```
**注意**  
自我檢查 API 在 Amazon ECS 容器代理版本 v1.0.0 中新增 `Version` 資訊。若在查詢自我檢查 API 時沒有看見 `Version`，或是您的代理中甚至沒有自我檢查 API，則您執行的版本便是 v0.0.3 及更早版本。您應更新您的版本。

------

# 在 Amazon ECS 最佳化 AMI 上更新 Amazon ECS 容器代理
<a name="agent-update-ecs-ami"></a>

若您使用的是 Amazon ECS 最佳化 AMI，您有幾個選項可取得最新版本的 Amazon ECS 容器代理程式 (以下顯示的順序為建議順序)：
+ 終止容器執行個體，並啟動最新版本的 Amazon ECS 最佳化 Amazon Linux 2 AMI (以手動方式或使用最新 AMI 更新您的 Auto Scaling 啟動組態)。這可提供全新的容器執行個體，以及最新已測試和驗證的 Amazon Linux、Docker、`ecs-init` 和 Amazon ECS 容器代理程式的版本。如需詳細資訊，請參閱[Amazon ECS 最佳化 Linux AMI](ecs-optimized_AMI.md)。
+ 使用 SSH 連線到執行個體，將 `ecs-init` 套裝服務 (及其相依性) 更新到最新版本。此操作可提供 Amazon Linux 儲存庫中目前經過測試及驗證的 Docker 和 `ecs-init` 版本，以及最新版 Amazon ECS 容器代理程式。如需詳細資訊，請參閱[若要更新 Amazon ECS 最佳化 AMI 上的 `ecs-init` 套件](#procedure_update_ecs-init)。
+ 透過主控台或使用 AWS CLI AWS SDKs，使用 `UpdateContainerAgent` API 操作更新容器代理程式。如需詳細資訊，請參閱[使用 `UpdateContainerAgent` API 操作更新 Amazon ECS 容器代理程式](#agent-update-api)。

**注意**  
代理更新不適用於 Windows 容器執行個體。我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理版本。<a name="procedure_update_ecs-init"></a>

**若要更新 Amazon ECS 最佳化 AMI 上的 `ecs-init` 套件**

1. 透過 SSH 登入您的容器執行個體。

1. 使用以下命令更新 `ecs-init` 套裝服務。

   ```
   sudo yum update -y ecs-init
   ```
**注意**  
`ecs-init` 套件和 Amazon ECS 容器代理程式會立即更新。但是，直到 Docker 常駐程式重新啟動前，都不會載入較新版本的 Docker。將執行個體重新開機，或在執行個體上執行下列命令，以重新啟動：  
Amazon ECS 最佳化 Amazon Linux 2 AMI：  

     ```
     sudo systemctl restart docker
     ```
Amazon ECS 最佳化 Amazon Linux AMI：  

     ```
     sudo service docker restart && sudo start ecs
     ```

## 使用 `UpdateContainerAgent` API 操作更新 Amazon ECS 容器代理程式
<a name="agent-update-api"></a>

**重要**  
僅在 Amazon ECS 最佳化 AMI 的 Linux 變體上支援 `UpdateContainerAgent` API，但 Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 除外。對於使用 Amazon ECS 最佳化 Amazon Linux 2 (arm64) AMI 的容器執行個體，請更新 `ecs-init` 套件以更新代理程式。針對在其他作業系統上執行的容器執行個體，請參閱「[手動更新 Amazon ECS 容器代理程式 (適用於非 Amazon ECS 最佳化 AMI)](manually_update_agent.md)」。如果您正在使用 Windows 容器執行個體，我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理程式版本。

當您透過主控台或使用 AWS CLI AWS SDKs 請求代理程式更新時，`UpdateContainerAgent`API 程序就會開始。Amazon ECS 會比對您目前的代理程式版本與最新可用的代理程式版本，判斷是否可執行更新。若無法取得更新 (例如若代理已在執行最近的版本)，便會傳回 `NoUpdateAvailableException`。

上圖顯示更新程序中的階段如下：

`PENDING`  
有可用的代理更新，並已啟動更新程序。

`STAGING`  
代理已開始下載代理更新。若代理無法下載更新，或更新的內容不正確或已損毀，則代理會傳送失敗的通知，且更新的狀態會轉換成 `FAILED` 狀態。

`STAGED`  
代理下載已完成並已驗證代理內容。

`UPDATING`  
`ecs-init` 服務已重新啟動，並使用最新版本的代理。若代理程式因為某些原因無法重新啟動，則更新會轉換為 `FAILED` 狀態；否則，代理程式會通知 Amazon ECS 更新已完成。

**注意**  
代理更新不適用於 Windows 容器執行個體。我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理版本。

**若要在主控台的 Amazon ECS 最佳化 AMI 上更新 Amazon ECS 容器代理程式**

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 從導覽列中選擇註冊外部執行個體所在的區域。

1. 在導覽窗格中，選擇 **Clusters** (叢集)，然後選取叢集。

1. 在 **Cluster : *name*** (叢集：名稱) 頁面上，選擇 **Infrastructure** (基礎基礎設施) 索引標籤。

1. 在**容器執行個體**下，選取要更新的執行個體，然後選擇**動作**、**更新代理程式**。

# 手動更新 Amazon ECS 容器代理程式 (適用於非 Amazon ECS 最佳化 AMI)
<a name="manually_update_agent"></a>

有時，您可能需要更新 Amazon ECS 容器代理程式，以取得錯誤修正和新功能。更新 Amazon ECS 容器代理不會中斷容器執行個體上正在執行中的任務或服務。
**注意**  
代理更新不適用於 Windows 容器執行個體。我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理版本。

1. 透過 SSH 登入您的容器執行個體。

1. 檢查以查看您的代理是否是使用 `ECS_DATADIR` 環境變數儲存其狀態。

   ```
   ubuntu:~$ docker inspect ecs-agent | grep ECS_DATADIR
   ```

   輸出：

   ```
   "ECS_DATADIR=/data",
   ```
**重要**  
若先前的命令並未傳回 `ECS_DATADIR` 環境變數，您必須停止任何在此容器執行個體上執行的任務，才能更新您的代理。較新的代理會使用 `ECS_DATADIR` 環境變數儲存其狀態，讓您可以在任務執行中時更新它們，而不會有任何問題。

1. 停用 Amazon ECS 容器代理程式。

   ```
   ubuntu:~$ docker stop ecs-agent
   ```

1. 刪除代理容器。

   ```
   ubuntu:~$ docker rm ecs-agent
   ```

1. 確認 `/etc/ecs` 目錄和 Amazon ECS 容器代理程式組態檔案存在於 `/etc/ecs/ecs.config`。

   ```
   ubuntu:~$ sudo mkdir -p /etc/ecs && sudo touch /etc/ecs/ecs.config
   ```

1. 編輯 `/etc/ecs/ecs.config` 檔案，並確保其至少包含以下變數宣告。若您不希望您的容器執行個體使用預設叢集註冊，請將叢集名稱指定為 `ECS_CLUSTER` 的值。

   ```
   ECS_DATADIR=/data
   ECS_ENABLE_TASK_IAM_ROLE=true
   ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true
   ECS_LOGFILE=/log/ecs-agent.log
   ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"]
   ECS_LOGLEVEL=info
   ECS_CLUSTER=default
   ```

   如需這些和其他代理執行時間選項的詳細資訊，請參閱「[Amazon ECS 容器代理程式組態](ecs-agent-config.md)」。
**注意**  
您可以選擇性地將您的代理程式環境變數存放在 Amazon S3 中 (可在啟動時使用 Amazon EC2 使用者資料將其下載到您的容器執行個體)。針對敏感性資訊 (例如私有存放庫的身分驗證登入資料)，此為建議選項。如需詳細資訊，請參閱[將 Amazon ECS 容器執行個體組態儲存於 Amazon S3 中](ecs-config-s3.md)及[在 Amazon ECS 中使用非AWS 容器映像](private-auth.md)。

1. 從 Amazon Elastic Container Registry Public 取出最新的 Amazon ECS 容器代理程式映像。

   ```
   ubuntu:~$ docker pull public.ecr.aws/ecs/amazon-ecs-agent:latest
   ```

   輸出：

   ```
   Pulling repository amazon/amazon-ecs-agent
   a5a56a5e13dc: Download complete
   511136ea3c5a: Download complete
   9950b5d678a1: Download complete
   c48ddcf21b63: Download complete
   Status: Image is up to date for amazon/amazon-ecs-agent:latest
   ```

1. 在您的容器執行個體上執行最新的 Amazon ECS 容器代理程式。
**注意**  
使用 Docker 重新啟動政策或處理序管理員 (例如 **upstart** 或 **systemd**) 將容器代理程式做為服務或常駐程式處理，並確保在結束後重新啟動它。因此 Amazon ECS 最佳化 AMI 會使用 `ecs-init` RPM，您可以在 GitHub 上檢視[此 RPM 的來源程式碼](https://github.com/aws/amazon-ecs-init)。

   以下代理程式執行命令範例分成獨立的各行來顯示每個選項。如需這些和其他代理執行時間選項的詳細資訊，請參閱「[Amazon ECS 容器代理程式組態](ecs-agent-config.md)」。
**重要**  
針對啟用 SELinux 的作業系統，需要在您的 **docker run** 命令中包含 `--privileged` 選項。此外，針對啟用 SELinux 的容器執行個體，我們建議您為 `/log` 和 `/data` 磁碟區掛載新增 `:Z` 選項。但是，這些磁碟區的主機掛載必須在您執行命令前存在，否則您會接收到 `no such file or directory` 錯誤。若您在啟用 SELinux 的容器執行個體上執行 Amazon ECS 代理程式時遭遇困難，請採取以下動作：  
在您的容器執行個體上建立主機磁碟區掛載點。  

     ```
     ubuntu:~$ sudo mkdir -p /var/log/ecs /var/lib/ecs/data
     ```
為以下 **docker run** 命令新增 `--privileged` 選項。
為以下 **docker run** 命令的 `/log` 和 `/data` 容器磁碟區掛載附加 `:Z` 選項 (例如，`--volume=/var/log/ecs/:/log:Z`)。

   ```
   ubuntu:~$ sudo docker run --name ecs-agent \
   --detach=true \
   --restart=on-failure:10 \
   --volume=/var/run:/var/run \
   --volume=/var/log/ecs/:/log \
   --volume=/var/lib/ecs/data:/data \
   --volume=/etc/ecs:/etc/ecs \
   --volume=/etc/ecs:/etc/ecs/pki \
   --net=host \
   --env-file=/etc/ecs/ecs.config \
   amazon/amazon-ecs-agent:latest
   ```
**注意**  
若您接收到 `Error response from daemon: Cannot start container` 訊息，您可以使用 **sudo docker rm ecs-agent** 命令刪除失敗的容器，並再度嘗試執行代理程式。

# Amazon ECS 最佳化 Windows AMI
<a name="ecs-optimized_windows_AMI"></a>

Amazon ECS 最佳化 AMI 已預先設定好執行 Amazon ECS 工作負載所需的必要元件。雖然您可以建立自己的容器執行個體 AMI，以符合在 Amazon ECS 上執行容器化工作負載所需的基本規格，但 Amazon ECS 最佳化 AMIs 是由 AWS 工程師在 Amazon ECS 上預先設定和測試。這是讓您快速上手並在 AWS 上執行容器最簡單的方法。

可以透過程式設計方式擷取每個變體的 Amazon ECS 最佳化 AMI 中繼資料，包括 AMI 名稱、Amazon ECS 容器代理程式版本，以及包含 Docker 版本的 Amazon ECS 執行時間版本。如需詳細資訊，請參閱[擷取 Amazon ECS 最佳化 Windows AMI 中繼資料](retrieve-ecs-optimized_windows_AMI.md)。

**重要**  
 2022 年 8 月之後生產的所有 ECS 最佳化 AMI 變體，將從 Docker EE (Mirantis) 遷移至 Docker CE (Moby 專案)。  
為確保客戶預設擁有最新的安全更新，Amazon ECS 至少維護最後三個 Windows Amazon ECS 最佳化 AMI。在發佈新的 Windows Amazon ECS 最佳化 AMI 之後，Amazon ECS 使舊的 Windows Amazon ECS 最佳化 AMI 變為私有。如果有您需要存取的私有 AMI，請向 Cloud Support 提出票證，從而通知我們。

## Amazon ECS 最佳化 AMI 變體
<a name="ecs-optimized-ami-variants"></a>

下列 Amazon ECS 最佳化 AMI 的 Windows Server 變體適用於您的 Amazon EC2 執行個體。

**重要**  
8 月之後生產的所有 ECS 最佳化 AMI 變體，將從 Docker EE (Mirantis) 遷移至 Docker CE (Moby 專案)。
+ **Amazon ECS 最佳化 Windows Server 2025 Full AMI** 
+ **Amazon ECS 最佳化 Windows Server 2025 Core AMI** 
+ **Amazon ECS 最佳化 Windows Server 2022 Full AMI** 
+ **Amazon ECS 最佳化 Windows Server 2022 Core AMI** 
+ **Amazon ECS 最佳化 Windows Server 2019 Full AMI** 
+ **Amazon ECS 最佳化 Windows Server 2019 Core AMI** 
+ **Amazon ECS 最佳化 Windows Server 2016 Full AMI**

**重要**  
Windows Server 2016 不支援最新版本的 Docker，例如 25.x.x。因此，Windows Server 2016 Full AMI 不會收到 Docker 執行時期的安全性修補程式或錯誤修補程式。建議遷移至下列任一 Windows 平台：  
Windows Server 2022 Full
Windows Server 2022 Core
Windows Server 2019 Full
Windows Server 2019 Core

在 2022 年 8 月 9 日，Amazon ECS 最佳化的 Windows Server 20H2 Core AMI 已屆支援終止日期。不再發佈此 AMI 的新版本。如需詳細資訊，請參閱 [Windows Server 發行版本資訊](https://learn.microsoft.com/en-us/windows-server/get-started/windows-server-release-info)。

Windows Server 2025、Windows Server 2022、Windows Server 2019 和 Windows Server 2016 是長期維護通道 (LTSC) 的發行版本。Windows Server 20H2 是半年通道 (SAC) 的發行版本。如需詳細資訊，請參閱 [Windows Server 發行版本資訊](https://learn.microsoft.com/en-us/windows-server/get-started/windows-server-release-info)。

### 考量事項
<a name="windows_caveats"></a>

以下是一些您應該知道的 Amazon EC2 Windows 容器和 Amazon ECS 有關事項。
+ Windows 容器無法在 Linux 容器執行個體上執行，反之亦然。為更合理放置 Windows 和 Linux 任務，將 Windows 和 Linux 容器執行個體放置在不同的叢集中，而且只在 Windows 叢集中放置 Windows 任務。您可以設定下列置放限制：`memberOf(ecs.os-type=='windows')`，以確保 Windows 任務定義只放置在 Windows 執行個體。
+ Windows 容器支援使用 EC2 和 Fargate 的任務。
+ Windows 容器和容器執行個體無法支援所有可供 Linux 容器和容器執行個體使用的任務定義參數。有些參數完全不予以支援，有些參數在 Windows 的行為表現和在 Linux 上不同。如需詳細資訊，請參閱[EC2 Windows 執行個體的 Amazon ECS 任務定義差異](windows_task_definitions.md)。
+ 針對任務功能的 IAM 角色，您需要設定您的 Windows 容器執行個體，在啟動時允許該功能。您的容器必須在它們使用該功能時執行部分提供的 PowerShell 程式碼。如需詳細資訊，請參閱[Amazon EC2 Windows 執行個體的額外組態](task-iam-roles.md#windows_task_IAM_roles)。
+ 任務的 IAM 角色功能會使用登入資料代理將登入資料提供給容器。此登入資料代理佔用了容器執行個體的連接埠 80，所以如果您使用任務的 IAM 角色，連接埠 80 就不提供任務使用。對於 Web 服務容器，您可以使用 Application Load Balancer 和動態連接埠映射，向您的容器提供標準的 HTTP 連接埠 80 連線。如需詳細資訊，請參閱[使用負載平衡分佈 Amazon ECS 服務流量](service-load-balancing.md)。
+ Windows 伺服器 Docker 映像很大 (9 GiB)。所以您的 Windows 容器執行個體需要比 Linux 容器執行個體還多的儲存空間。
+ 若要在 Windows 伺服器上執行 Windows 容器，容器的基本映像作業系統版本必須與主機的版本相符。如需詳細資訊，請參閱 Microsoft 文件網站上的 [Windows 容器版本相容性](https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-2022%2Cwindows-11)。如果您的叢集執行多個 Windows 版本，您可以使用置放條件限制：`memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>)`，確保將任務置放在執行相同版本的 EC2 執行個體上。如需詳細資訊，請參閱[擷取 Amazon ECS 最佳化 Windows AMI 中繼資料](retrieve-ecs-optimized_windows_AMI.md)。

# 擷取 Amazon ECS 最佳化 Windows AMI 中繼資料
<a name="retrieve-ecs-optimized_windows_AMI"></a>

透過查詢 Systems Manager 參數存放區 API，可以程式設計方式擷取 Amazon ECS 最佳化 AMI 的每個變體的 AMI ID、映像名稱、作業系統、容器代理程式版本以及執行時間版本。如需有關 Systems Manager 參數存放區 API 的詳細資訊，請參閱 [GetParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameters.html) 和 [GetParametersByPath](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParametersByPath.html)。

**注意**  
您的管理使用者必須擁有以下 IAM 許可，才能擷取 Amazon ECS 最佳化 AMI 中繼資料。已將這些權限新增至 `AmazonECS_FullAccess` IAM 政策。  
ssm:GetParameters
ssm:GetParameter
ssm:GetParametersByPath

## Systems Manager 參數存放區參數格式。
<a name="ecs-optimized-ami-parameter-format"></a>

**注意**  
下列 Systems Manager 參數存放區 API 參數已淘汰，不應該用來擷取最新的 Windows AMI：  
`/aws/service/ecs/optimized-ami/windows_server/2016/english/full/recommended/image_id `
`/aws/service/ecs/optimized-ami/windows_server/2019/english/full/recommended/image_id`

以下是每個 Amazon ECS 最佳化 AMI 變體的參數名稱格式。
+ Windows Server 2025 完整 AMI 中繼資料：

  ```
  /aws/service/ami-windows-latest/Windows_Server-2025-English-Full-ECS_Optimized
  ```
+ Windows Server 2025 Core AMI 中繼資料：

  ```
  /aws/service/ami-windows-latest/Windows_Server-2025-English-Core-ECS_Optimized
  ```
+ Windows Server 2022 Full AMI 中繼資料：

  ```
  /aws/service/ami-windows-latest/Windows_Server-2022-English-Full-ECS_Optimized
  ```
+ Windows Server 2022 Core AMI 中繼資料：

  ```
  /aws/service/ami-windows-latest/Windows_Server-2022-English-Core-ECS_Optimized
  ```
+ Windows Server 2019 Full AMI 中繼資料：

  ```
  /aws/service/ami-windows-latest/Windows_Server-2019-English-Full-ECS_Optimized
  ```
+ Windows Server 2019 Core AMI 中繼資料：

  ```
  /aws/service/ami-windows-latest/Windows_Server-2019-English-Core-ECS_Optimized
  ```
+ Windows Server 2016 Full AMI 中繼資料：

  ```
  /aws/service/ami-windows-latest/Windows_Server-2016-English-Full-ECS_Optimized
  ```

下列參數名稱格式擷取最新穩定 Windows Server 2019 Full AMI 的中繼資料。

```
aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2019-English-Full-ECS_Optimized
```

以下是傳回參數值的 JSON 物件範例。

```
{
    "Parameters": [
        {
            "Name": "/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-ECS_Optimized",
            "Type": "String",
            "Value": "{\"image_name\":\"Windows_Server-2019-English-Full-ECS_Optimized-2023.06.13\",\"image_id\":\"ami-0debc1fb48e4aee16\",\"ecs_runtime_version\":\"Docker (CE) version 20.10.21\",\"ecs_agent_version\":\"1.72.0\"}",
            "Version": 58,
            "LastModifiedDate": "2023-06-22T19:37:37.841000-04:00",
            "ARN": "arn:aws:ssm:us-east-1::parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-ECS_Optimized",
            "DataType": "text"
        }
    ],
    "InvalidParameters": []
}
```

輸出中的每個欄位可做為子參數查詢。透過將子參數名稱附加至所選 AMI 路徑來建構子參數的參數路徑。下列子參數可供使用：
+ `schema_version`
+ `image_id`
+ `image_name`
+ `os`
+ `ecs_agent_version`
+ `ecs_runtime_version`

## 範例
<a name="ecs-optimized-ami-windows-parameter-examples"></a>

下列範例顯示您可擷取每個 Amazon ECS 最佳化 AMI 變體中繼資料的方法。

### 擷取最新的穩定 Amazon ECS 最佳化 AMI 的中繼資料
<a name="ecs-optimized-ami-windows-parameter-examples-1"></a>

您可以使用 AWS CLI 搭配下列 AWS CLI 命令，擷取最新的穩定 Amazon ECS 最佳化 AMI。
+ **對於 Amazon ECS 最佳化 Windows Server 2025 Full AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2025-English-Full-ECS_Optimized --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Windows Server 2025 Core AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2025-English-Core-ECS_Optimized --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Windows Server 2022 Full AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2022-English-Full-ECS_Optimized --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Windows Server 2022 Core AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2022-English-Core-ECS_Optimized --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Windows Server 2019 Full AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2019-English-Full-ECS_Optimized --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Windows Server 2019 Core AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2019-English-Core-ECS_Optimized --region us-east-1
  ```
+ **對於 Amazon ECS 最佳化 Windows Server 2016 Full AMI：**

  ```
  aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2016-English-Full-ECS_Optimized --region us-east-1
  ```

### 在 CloudFormation 範本中使用最新建議的 Amazon ECS 最佳化 AMI
<a name="ecs-optimized-ami-windows-parameter-examples-5"></a>

透過參考 Systems Manager 參數存放區名稱，可以在 CloudFormation 範本中參考最新建議的 Amazon ECS 最佳化 AMI。

```
Parameters:
  LatestECSOptimizedAMI:
    Description: AMI ID
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ami-windows-latest/Windows_Server-2019-English-Full-ECS_Optimized/image_id
```

# Amazon ECS 最佳化 AMI 版本
<a name="ecs-windows-ami-versions"></a>

檢視目前和舊版的 Amazon ECS 最佳化 AMI，及其對應的 Amazon ECS 容器代理程式、Docker 和 `ecs-init` 套件版本。

可透過程式設計方式擷取每個變體的 Amazon ECS 最佳化 AMI 中繼資料 (包括 AMI ID)。如需詳細資訊，請參閱[擷取 Amazon ECS 最佳化 Windows AMI 中繼資料](retrieve-ecs-optimized_windows_AMI.md)。

以下標籤顯示 Windows Amazon ECS 最佳化 AMI 版本清單。如需在 CloudFormation 範本中參考 Systems Manager 參數存放區參數的詳細資訊，請參閱 [在 CloudFormation 範本中使用最新建議的 Amazon ECS 最佳化 AMI](retrieve-ecs-optimized_AMI.md#ecs-optimized-ami-parameter-examples-5)。

**重要**  
為確保客戶預設擁有最新的安全更新，Amazon ECS 至少維護最後三個 Windows Amazon ECS 最佳化 AMI。在發佈新的 Windows Amazon ECS 最佳化 AMI 之後，Amazon ECS 使舊的 Windows Amazon ECS 最佳化 AMI 變為私有。如果有您需要存取的私有 AMI，請向 Cloud Support 提出票證，從而通知我們。  
Windows Server 2016 不支援最新版本的 Docker，例如 25.x.x。因此，Windows Server 2016 Full AMI 不會收到 Docker 執行時期的安全性修補程式或錯誤修補程式。建議遷移至下列任一 Windows 平台：  
Windows Server 2022 Full
Windows Server 2022 Core
Windows Server 2019 Full
Windows Server 2019 Core

**注意**  
繼 2025 年 8 月 AMI 版本後，gMSA 外掛程式記錄已從檔案型記錄 `(C:\ProgramData\Amazon\gmsa)` 遷移至 Windows Event logging 。公開版日誌收集器指令碼會收集所有 gMSA 日誌。如需詳細資訊，請參閱[使用 Amazon ECS 日誌收集器收集容器日誌](ecs-logs-collector.md)。

------
#### [ Windows Server 2025 Full AMI versions ]

下表列出 Amazon ECS 最佳化 Windows Server 2025 Full AMI 的目前和先前版本，以及其 Amazon ECS 容器代理程式和 Docker 的對應版本。


|  Amazon ECS 最佳化 Windows Server 2025 Full AMI  |  Amazon ECS 容器代理程式版本  |  Docker 版本  |  Visibility  | 
| --- | --- | --- | --- | 
|  **Windows\$1Server-2025-English-Full-ECS\$1Optimized-2026.03.13**  |  `1.102.0`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2025-English-Full-ECS\$1Optimized-2026.02.13**  |  `1.101.3`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2025-English-Full-ECS\$1Optimized-2026.01.16**  |  `1.101.2`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2025-English-Full-ECS\$1Optimized-2025.12.13**  |  `1.101.0`  |  `25.0.6 (Docker CE)`  |  公有  | 

使用下列 AWS CLI 命令擷取目前的 Amazon ECS 最佳化 Windows Server 2025 Full AMI。

```
aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2025-English-Full-ECS_Optimized
```

------
#### [ Windows Server 2025 Core AMI versions ]

下表列出 Amazon ECS 最佳化 Windows Server 2025 Core AMI 的目前和先前版本，以及其 Amazon ECS 容器代理程式和 Docker 的對應版本。


|  Amazon ECS 最佳化 Windows Server 2025 Core AMI  |  Amazon ECS 容器代理程式版本  |  Docker 版本  |  Visibility  | 
| --- | --- | --- | --- | 
|  **Windows\$1Server-2025-English-Core-ECS\$1Optimized-2026.03.13**  |  `1.102.0`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2025-English-Core-ECS\$1Optimized-2026.02.13**  |  `1.101.3`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2025-English-Core-ECS\$1Optimized-2026.01.16**  |  `1.101.2`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2025-English-Core-ECS\$1Optimized-2025.12.13**  |  `1.101.0`  |  `25.0.6 (Docker CE)`  |  公有  | 

使用下列 AWS CLI 命令來擷取目前的 Amazon ECS 最佳化 Windows Server 2025 Core AMI。

```
aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2025-English-Core-ECS_Optimized
```

------
#### [ Windows Server 2022 Full AMI versions ]

下表列出目前和舊版的 Amazon ECS 最佳化 Windows Server 2022 Full AMI 的完整清單及其對應的 Amazon ECS 容器代理程式和 Docker 版本。


|  Amazon ECS 最佳化 Windows Server 2022 Full AMI  |  Amazon ECS 容器代理程式版本  |  Docker 版本  |  Visibility  | 
| --- | --- | --- | --- | 
|  **Windows\$1Server-2022-English-Full-ECS\$1Optimized-2026.03.13**  |  `1.102.0`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2022-English-Full-ECS\$1Optimized-2026.02.13**  |  `1.101.3`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2022-English-Full-ECS\$1Optimized-2026.01.16**  |  `1.101.2`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2022-English-Full-ECS\$1Optimized-2025.12.13**  |  `1.101.0`  |  `25.0.6 (Docker CE)`  |  公有  | 

使用下列 AWS CLI 命令擷取目前的 Amazon ECS 最佳化 Windows Server 2022 Full AMI。

```
aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2022-English-Full-ECS_Optimized
```

------
#### [ Windows Server 2022 Core AMI versions ]

下表列出目前和舊版的 Amazon ECS 最佳化 Windows Server 2022 Core AMI 的完整清單及其對應的 Amazon ECS 容器代理程式和 Docker 版本。


|  Amazon ECS 最佳化 Windows Server 2022 Core AMI  |  Amazon ECS 容器代理程式版本  |  Docker 版本  |  Visibility  | 
| --- | --- | --- | --- | 
|  **Windows\$1Server-2022-English-Core-ECS\$1Optimized-2026.03.13**  |  `1.102.0`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2022-English-Core-ECS\$1Optimized-2026.02.13**  |  `1.101.3`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2022-English-Core-ECS\$1Optimized-2026.01.16**  |  `1.101.2`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2022-English-Core-ECS\$1Optimized-2025.12.13**  |  `1.101.0`  |  `25.0.6 (Docker CE)`  |  公有  | 

使用以下 AWS CLI 命令擷取目前的 Amazon ECS 最佳化 Windows Server 2022 Full AMI。

```
aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2022-English-Core-ECS_Optimized
```

------
#### [ Windows Server 2019 Full AMI versions ]

下表列出目前和舊版的 Amazon ECS 最佳化 Windows Server 2019 Full AMI 的完整清單及其對應的 Amazon ECS 容器代理程式和 Docker 版本。


|  Amazon ECS 最佳化 Windows Server 2019 Full AMI  |  Amazon ECS 容器代理程式版本  |  Docker 版本  |  Visibility  | 
| --- | --- | --- | --- | 
|  **Windows\$1Server-2019-English-Full-ECS\$1Optimized-2026.03.13**  |  `1.102.0`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2019-English-Full-ECS\$1Optimized-2026.02.13**  |  `1.101.3`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2019-English-Full-ECS\$1Optimized-2026.01.16**  |  `1.101.2`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2019-English-Full-ECS\$1Optimized-2025.12.13**  |  `1.101.0`  |  `25.0.6 (Docker CE)`  |  公有  | 

使用下列 AWS CLI 命令來擷取目前的 Amazon ECS 最佳化 Windows Server 2019 Full AMI。

```
aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2019-English-Full-ECS_Optimized
```

------
#### [ Windows Server 2019 Core AMI versions ]

下表列出目前和舊版的 Amazon ECS 最佳化 Windows Server 2019 Core AMI 的完整清單及其對應的 Amazon ECS 容器代理程式和 Docker 版本。


|  Amazon ECS 最佳化 Windows Server 2019 Core AMI  |  Amazon ECS 容器代理程式版本  |  Docker 版本  |  Visibility  | 
| --- | --- | --- | --- | 
|  **Windows\$1Server-2019-English-Core-ECS\$1Optimized-2026.03.13**  |  `1.102.0`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2019-English-Core-ECS\$1Optimized-2026.02.13**  |  `1.101.3`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2019-English-Core-ECS\$1Optimized-2026.01.16**  |  `1.101.2`  |  `25.0.6 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2019-English-Core-ECS\$1Optimized-2025.12.13**  |  `1.101.0`  |  `25.0.6 (Docker CE)`  |  公有  | 

使用下列 AWS CLI 命令來擷取目前的 Amazon ECS 最佳化 Windows Server 2019 Full AMI。

```
aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2019-English-Core-ECS_Optimized
```

------
#### [ Windows Server 2016 Full AMI versions ]

**重要**  
Windows Server 2016 不支援最新版本的 Docker，例如 25.x.x。因此，Windows Server 2016 Full AMI 不會收到 Docker 執行時期的安全性修補程式或錯誤修補程式。建議遷移至下列任一 Windows 平台：  
Windows Server 2022 Full
Windows Server 2022 Core
Windows Server 2019 Full
Windows Server 2019 Core

下表列出目前和舊版的 Amazon ECS 最佳化 Windows Server 2016 Full AMI 的完整清單及其對應的 Amazon ECS 容器代理程式和 Docker 版本。


|  Amazon ECS 最佳化 Windows Server 2016 Full AMI  |  Amazon ECS 容器代理程式版本  |  Docker 版本  |  Visibility  | 
| --- | --- | --- | --- | 
|  **Windows\$1Server-2016-English-Full-ECS\$1Optimized-2026.03.13**  |  `1.102.0`  |  `20.10.23 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2016-English-Full-ECS\$1Optimized-2026.02.13**  |  `1.101.3`  |  `20.10.23 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2016-English-Full-ECS\$1Optimized-2026.01.16**  |  `1.101.2`  |  `20.10.23 (Docker CE)`  |  公有  | 
|  **Windows\$1Server-2016-English-Full-ECS\$1Optimized-2025.12.13**  |  `1.101.0`  |  `20.10.23 (Docker CE)`  |  公有  | 

使用下列 AWS CLI Amazon ECS 最佳化 Windows Server 2016 Full AMI。

```
aws ssm get-parameters --names /aws/service/ami-windows-latest/Windows_Server-2016-English-Full-ECS_Optimized
```

------

# 建立自己的 Amazon ECS 最佳化 Windows AMI
<a name="windows-custom-ami"></a>

使用 EC2 Image Builder 自行建立自訂 Amazon ECS 最佳化 Windows AMI。這使得在 Amazon ECS 上使用您自己的授權 Windows AMI 變得更簡單。Amazon ECS 提供受管的 Image Builder 元件，由該元件提供執行 Windows 執行個體所需的系統組態，以託管您的容器。每個 Amazon ECS 受管元件包含特定的容器代理程式和 Docker 版本。您可以自訂映像以使用最新的 Amazon ECS 受管元件，或者如果需要較舊的容器代理程式或 Docker 版本，您可以指定不同的元件。

如需使用 EC2 Image Builder 的完整逐步解說，請參閱 *EC2 Image Builder 使用者指南*中的 [EC2 Image Builder 入門](https://docs.aws.amazon.com/imagebuilder/latest/userguide/set-up-ib-env.html#image-builder-accessing-prereq)。

在使用 EC2 Image Builder 建立您自己的 Amazon ECS 最佳化 Windows AMI 時，您將建立映像配方。您的映像配方必須符合以下要求：
+ **來源映像**應以 Windows Server 2019 Core、Windows Server 2019 Full、Windows Server 2022 Core 或 Windows Server 2022 Full 為基礎。任何其他 Windows 作業系統不受支援，而且可能與元件不相容。
+ 指定**建置元件**時需要 `ecs-optimized-ami-windows` 元件。為確保映像包含最新的安全性更新，建議使用 `update-windows` 元件。

  若要指定不同的元件版本，展開 **Versioning options** (版本控制選項) 選單，然後指定您要使用的元件版本。如需詳細資訊，請參閱[列出 `ecs-optimized-ami-windows` 元件版本](#windows-component-list)。

## 列出 `ecs-optimized-ami-windows` 元件版本
<a name="windows-component-list"></a>

在建立 EC2 Image Builder 配方並指定 `ecs-optimized-ami-windows` 元件時，您可以使用預設選項，或者您也可以指定特定的元件版本。要判定可用的元件版本，以及元件所包含的 Amazon ECS 容器代理程式和 Docker 版本，您可以使用 AWS 管理主控台。

**列出可用的 `ecs-optimized-ami-windows` 元件版本**

1. 開啟 EC2 Image Builder 主控台，位於 [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)。

1. 在導覽列上選取您在哪個區域建立您的映像。

1. 在導覽窗格的 **Saved configurations** (已儲存組態) 選單的下方，選擇 **Components** (元件)。

1. 在 **Components** (元件) 頁面的搜尋列鍵入 `ecs-optimized-ami-windows`，然後向下拉資格選單並選取 **Quick start (Amazon-managed)** (Quick start (Amazon 受管))。

1. 使用 **Description** (描述) 欄來判定元件版本，以及您的映像所需的 Amazon ECS 容器代理程序和 Docker 版本。

# Amazon ECS Windows 容器執行個體管理
<a name="manage-windows"></a>

在將 EC2 執行個體用於 Amazon ECS 工作負載時，您必須負責維護執行個體。

代理更新不適用於 Windows 容器執行個體。我們建議您啟動新的容器執行個體，以更新您 Windows 叢集中的代理版本。

**Topics**
+ [啟動容器執行個體](launch_window-container_instance.md)
+ [引導容器執行個體](bootstrap_windows_container_instance.md)
+ [為 Windows 容器執行個體使用 HTTP Proxy](http_proxy_config-windows.md)
+ [設定容器執行個體接收 Spot 執行個體通知](windows-spot-instance-draining-container.md)

# 啟動 Amazon ECS Windows 容器執行個體
<a name="launch_window-container_instance"></a>

您的 Amazon ECS 容器執行個體是使用 Amazon EC2 主控台建立的。開始之前，請務必先完成 [設定以使用 Amazon ECS。](get-set-up-for-amazon-ecs.md) 中的步驟。

如需有關啟動精靈的詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [Launch an instance using the new launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-launch-instance-wizard.html)。

您可以使用新的 Amazon EC2 精靈啟動執行個體。您可以使用以下參數列表，並將參數保留不作為預設列出。下列指示會引導您完成每個參數群組。

## 程序
<a name="liw-initiate-instance-launch"></a>

開始之前，請完成 [設定以使用 Amazon ECS。](get-set-up-for-amazon-ecs.md) 中的步驟。

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在畫面頂端的導覽列中，會顯示目前的 AWS 區域 （例如美國東部 （俄亥俄）)。選取要在其中啟動執行個體的區域。這項選擇非常重要，因為有些 Amazon EC2 資源可在不同區域間共享，其他則無法。

1. 從 Amazon EC2 主控台儀表板選擇 **Launch Instance (啟動執行個體)**。

## 名稱和標籤
<a name="liw-name-and-tags"></a>

執行個體名稱是一個標籤，其中鍵是 **Name** (名稱)，而值是您指定的名稱。您可以標記執行個體、磁碟區和彈性圖形。對於 Spot 執行個體，您只能標記 Spot 執行個體請求。

指定執行個體名稱和其他標籤是選用的。
+ 對於 **Name** (名稱)，輸入執行個體的描述性名稱。如果您未指定名稱，則可以透過其 ID 來標識執行個體，該 ID 將在您啟動執行個體時自動產生。
+ 若要新增其他標籤，請選擇 **Add additional tags** (新增其他標籤)。選取 **Add tag** (新增標籤)，然後輸入鍵和值，然後選取要標記的資源類型。為每個要新增的其他標籤重新選擇 **Add tag** (新增標籤)。

## 應用程式和作業系統映像 (Amazon Machine Image)
<a name="liw-ami"></a>

Amazon Machine Image (AMI) 包含建立執行個體所需的資訊。例如，AMI 可能包含作為 Web 伺服器所必需的軟體，例如 Apache 和您的網站。

如需最新的 Amazon ECS 最佳化 AMI 及其值，請參閱《[Windows Amazon ECS 最佳化 AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_windows_AMI.html)》。

使用**搜尋**列來尋找由 發佈的適當 Amazon ECS 最佳化 AMI AWS。

1. 根據您的要求，在 **Search** (搜尋) 列中輸入以下其中一個 AMI，並按下 **Enter**。
   + Windows\$1Server-2022-English-Full-ECS\$1Optimized
   + Windows\$1Server-2022-English-Core-ECS\$1Optimized
   + Windows\$1Server-2019-English-Full-ECS\$1Optimized
   + Windows\$1Server-2019-English-Core-ECS\$1Optimized
   + Windows\$1Server-2016-English-Full-ECS\$1Optimized

1. 在 **Choose an Amazon Machine Image (AMI)** (選擇 Amazon Machine Image (AMI)) 頁面上，選取 **Community AMIs** (社群 AMI) 索引標籤。

1. 從出現的清單中，選擇具有最新發佈日期的 Microsoft 驗證 AMI，然後按一下 **Select** (選取)。

## 執行個體類型
<a name="liw-instance-type"></a>

執行個體類型定義執行個體的硬體組態和大小。較大的執行個體類型具有較多的 CPU 和記憶體。如需詳細資訊，請參閱[執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。
+ 針對 **Instance type** (執行個體類型)，選取執行個體的執行個體類型。

   您選取的執行個體類型，會決定您任務執行所在的可用資源。

## 金鑰對 （登入）
<a name="liw-key-pair"></a>

針對 **Key pair name** (金鑰對名稱)，選擇現有的金鑰對，或選擇 **Create new key pair** (建立新的金鑰對) 以建立新的金鑰對。

**重要**  
如果您選擇 **Proceed without key pair (Not recommended)** (繼續而不使用金鑰對 (不建議)) 選項，您將無法連線到執行個體，除非您選擇已設定為允許使用者透過其他方式登入的 AMI。

## 網路設定
<a name="liw-network-settings"></a>

視需要設定網路設定。
+ **Networking platform** (聯網平台)：選擇 **Virtual Private Cloud (VPC)** (虛擬私有雲端 (VPC))，然後在 **Network interfaces** (網路介面) 區段指定子網路。
+ **VPC**：選取要在其中建立安全群組的現有 VPC。
+ **子網路** ：您可以在與可用區域、Local Zone、Wavelength 區域或 Outpost 相關聯的子網路中啟動執行個體。

  若要在可用區域中啟動執行個體，請選取要在當中啟動執行個體的子網路。若要建立新的子網路，請選擇**建立新的子網路**，前往 Amazon VPC 主控台。完成後，請返回啟動執行個體精靈並選擇「重新整理」圖示，載入清單中的子網路。

  在 Local Zone 中啟動執行個體，選取您在 Local Zone 中建立的子網路。

  若要在 Outpost 中啟動執行個體，請在與 Outpost 相關聯的 VPC 中選取子網路。
+ **Auto-assign Public IP** (自動指派公有 IP)：如果您的執行個體應從網際網路存取，請確認 **Auto-assign Public IP** (自動指派公有 IP) 欄位設為 **Enable** (啟用)。如果不是，請將此欄位設為 **Disable** (停用)。
**注意**  
容器執行個體需要存取，才可以與 Amazon ECS 服務端點通訊。可透過介面 VPC 端點或透過具備公有 IP 位址的容器執行個體來實現。  
如需介面 VPC 端點的詳細資訊，請參閱 [Amazon ECS 介面 VPC 端點 (AWS PrivateLink)](vpc-endpoints.md)  
如果您沒有設定介面 VPC 端點，且容器執行個體沒有公有 IP 位址，則它們必須使用網路位址轉譯 (NAT) 來提供此存取。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)和本指南中的 [為 Amazon ECS Linux 容器執行個體使用 HTTP Proxy](http_proxy_config.md)。
+ **Firewall (security groups)** (防火牆 (安全群組))：使用安全群組定義容器執行個體的防火牆規則。這些規則指定傳遞至容器執行個體的傳入網路流量。所有其他流量都會遭到忽略。
  + 若要選取現有的安全群組，請選擇 **Select existing security group** (選取現有安全群組)，然後從您在[設定以使用 Amazon ECS。](get-set-up-for-amazon-ecs.md)建立的安全群組選取您的安全群組。

## 設定儲存
<a name="liw-storage"></a>

您選取的 AMI 包含一或多個儲存體磁碟區，包括根磁碟區。您可以指定要連接至執行個體的其他磁碟區。

您可以使用 **Simple** (簡單) 檢視。
+ **Storage type** (儲存類型)：為您的容器執行個體設定儲存。

  如果您使用的是 Amazon ECS 最佳化 Amazon Linux AMI，執行個體已設定兩個磁碟區。**Root** (根目錄) 磁碟區供作業系統使用，而第二個 Amazon EBS 磁碟區 (連接到 `/dev/xvdcz`) 則供 Docker 使用。

  您可以選擇性地增加或減少您執行個體的磁碟區大小，使其符合您的應用程式需求。

## 進階詳細資訊
<a name="liw-advanced-details"></a>

針對 **Advanced Details (進階詳細資訊)**，展開此區段來檢視欄位，指定執行個體的其他參數。
+ **Purchasing option** (購買選項)：選擇 **Request Spot instances** (請求 Spot 執行個體) 以請求 Spot 執行個體。您也需要設定與 Spot 執行個體相關的其他欄位。如需詳細資訊，請參閱「[Spot 執行個體要求](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html)」。
**注意**  
如果您使用的是 Spot 執行個體，而且看到 `Not available` 訊息，您可能需要選擇不同的執行個體類型。

  .
+ **IAM instance profile** (IAM 執行個體設定檔)：選取您的容器執行個體 IAM 角色。這通常命名為 `ecsInstanceRole`。
**重要**  
如果您未使用適當的 IAM 許可啟動容器執行個體，Amazon ECS 代理程式就無法連線到叢集。如需詳細資訊，請參閱[Amazon ECS 容器執行個體 IAM 角色](instance_IAM_role.md)。
+ (選用) **User data** (使用者資料)：利用使用者資料設定您的 Amazon ECS 容器執行個體，例如 [Amazon ECS 容器代理程式組態](ecs-agent-config.md)中的代理程式環境變數。Amazon EC2 使用者資料指令碼僅於執行個體初次啟動時執行一次。以下是使用者資料用途的常見範例：
  + 您的容器執行個體預設會在您的預設叢集中啟動。若要在非預設的叢集中啟動，請選擇 **Advanced Details** (進階詳細資訊) 清單。然後，將以下指令碼貼入 **User data** (使用者資料) 欄位，以您的叢集名稱取代 *your\$1cluster\$1name*。

    `EnableTaskIAMRole` 會開啟任務的任務 IAM 角色功能。

    此外，當您使用 `awsvpc` 網路模式時，可使用以下選項。
    + `EnableTaskENI`：此標記會開啟任務聯網，並且當您使用 `awsvpc` 網路模式時需要它。
    + `AwsvpcBlockIMDS`：此選擇性標記會封鎖在 `awsvpc` 網路模式中執行的任務容器的 IMDS 存取。
    + `AwsvpcAdditionalLocalRoutes`：此選擇性標記可讓您在任務命名空間中擁有其他路由。

      將 `ip-address` 替換為其他路由的 IP 地址，例如 172.31.42.23/32。

    ```
    <powershell>
    Import-Module ECSTools
    Initialize-ECSAgent -Cluster your_cluster_name -EnableTaskIAMRole -EnableTaskENI -AwsvpcBlockIMDS -AwsvpcAdditionalLocalRoutes
    '["ip-address"]'
    </powershell>
    ```

# 引導 Amazon ECS Windows 容器執行個體傳遞資料
<a name="bootstrap_windows_container_instance"></a>

當您啟動 Amazon EC2 執行個體時，可以將使用者資料傳送到 EC2 執行個體。此資料可用來執行常見的自動化組態任務，甚至在執行個體啟動時，執行指令碼。對於 Amazon ECS，使用者資料的最常用案例是將組態資訊傳送到 Docker 常駐程式和 Amazon ECS 容器代理程式。

您可以將多種類型的使用者資料傳遞給 Amazon EC2，包含雲端 boothook、shell 指令碼和 `cloud-init` 指令。如需這些和其他格式類型的詳細資訊，請參閱 [Cloud-Init 文件](https://cloudinit.readthedocs.io/en/latest/explanation/format.html)。

您可以在使用 Amazon EC2 啟動精靈時傳遞此使用者資料。如需詳細資訊，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

## 預設 Windows 使用者資料
<a name="windows-default-userdata"></a>

此範例使用者資料指令碼顯示您使用主控台時，Windows 容器執行個體所收到的預設使用者資料。下列指令碼會執行下列動作：
+ 將叢集名稱設定為您輸入的名稱。
+ 設定任務的 IAM 角色。
+ 將 `json-file` 和 `awslogs` 設定為可用的記錄驅動程式。

此外，當您使用 `awsvpc` 網路模式時，可使用以下選項。
+ `EnableTaskENI`：此標記會開啟任務聯網，並且當您使用 `awsvpc` 網路模式時需要它。
+ `AwsvpcBlockIMDS`：此選擇性標記會封鎖在 `awsvpc` 網路模式中執行的任務容器的 IMDS 存取。
+ `AwsvpcAdditionalLocalRoutes`：此選擇性標記可讓您擁有其他路由。

  將 `ip-address` 替換為其他路由的 IP 地址，例如 172.31.42.23/32。

您可以將此指令碼用於您自己的容器執行個體 (前提是執行個體是從 Amazon ECS 最佳化 Windows Server AMI 啟動)。

替換 `-Cluster cluster-name` 行以指定您自己的叢集名稱。

```
<powershell>
Initialize-ECSAgent -Cluster cluster-name -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' -EnableTaskENI -AwsvpcBlockIMDS -AwsvpcAdditionalLocalRoutes
'["ip-address"]'
</powershell>
```

 對於設定為使用 `awslogs` 日誌記錄驅動程式的 Windows 任務，您也必須在容器執行個體上設定 `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE` 環境變數。請使用下列語法。

替換 `-Cluster cluster-name` 行以指定您自己的叢集名稱。

```
<powershell>
[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
Initialize-ECSAgent -Cluster cluster-name -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
</powershell>
```

## Windows 代理程式安裝使用者資料
<a name="agent-service-userdata"></a>

此範例使用者資料指令碼會將 Amazon ECS 容器代理程式安裝在以 **Windows\$1Server-2016-English-Full-Containers** AMI 啟動的執行個體上。它已從 [Amazon ECS Container Agent GitHub 儲存庫](https://github.com/aws/amazon-ecs-agent)讀我檔案頁面的代理程式安裝說明調整。

**注意**  
此指令碼會基於舉例用途而共享。使用 Amazon ECS 最佳化 Windows Server AMI，更容易開始使用 Windows 容器。如需詳細資訊，請參閱[為 Fargate 工作負載建立 Amazon ECS 叢集](create-cluster-console-v2.md)。

如需有關如何在 Windows Server 2022 Full 上安裝 Amazon ECS 代理程式的資訊，請參閱 GitHub 上的 [Issue 3753](https://github.com/aws/amazon-ecs-agent/issues/3753)。

您可以對您自己的容器執行個體使用此指令碼 (假設是使用 **Windows\$1Server-2016-English-Full-Containers** AMI 啟動它們)。務必取代 `windows` 一行，以指定您自己的叢集名稱 (如果您使用的叢集名稱不是 `windows`)。

```
<powershell>
# Set up directories the agent uses
New-Item -Type directory -Path ${env:ProgramFiles}\Amazon\ECS -Force
New-Item -Type directory -Path ${env:ProgramData}\Amazon\ECS -Force
New-Item -Type directory -Path ${env:ProgramData}\Amazon\ECS\data -Force
# Set up configuration
$ecsExeDir = "${env:ProgramFiles}\Amazon\ECS"
[Environment]::SetEnvironmentVariable("ECS_CLUSTER", "windows", "Machine")
[Environment]::SetEnvironmentVariable("ECS_LOGFILE", "${env:ProgramData}\Amazon\ECS\log\ecs-agent.log", "Machine")
[Environment]::SetEnvironmentVariable("ECS_DATADIR", "${env:ProgramData}\Amazon\ECS\data", "Machine")
# Download the agent
$agentVersion = "latest"
$agentZipUri = "https://s3.amazonaws.com/amazon-ecs-agent/ecs-agent-windows-$agentVersion.zip"
$zipFile = "${env:TEMP}\ecs-agent.zip"
Invoke-RestMethod -OutFile $zipFile -Uri $agentZipUri
# Put the executables in the executable directory.
Expand-Archive -Path $zipFile -DestinationPath $ecsExeDir -Force
Set-Location ${ecsExeDir}
# Set $EnableTaskIAMRoles to $true to enable task IAM roles
# Note that enabling IAM roles will make port 80 unavailable for tasks.
[bool]$EnableTaskIAMRoles = $false
if (${EnableTaskIAMRoles}) {
  $HostSetupScript = Invoke-WebRequest https://raw.githubusercontent.com/aws/amazon-ecs-agent/master/misc/windows-deploy/hostsetup.ps1
  Invoke-Expression $($HostSetupScript.Content)
}
# Install the agent service
New-Service -Name "AmazonECS" `
        -BinaryPathName "$ecsExeDir\amazon-ecs-agent.exe -windows-service" `
        -DisplayName "Amazon ECS" `
        -Description "Amazon ECS service runs the Amazon ECS agent" `
        -DependsOn Docker `
        -StartupType Manual
sc.exe failure AmazonECS reset=300 actions=restart/5000/restart/30000/restart/60000
sc.exe failureflag AmazonECS 1
Start-Service AmazonECS
</powershell>
```

# 為 Amazon ECS Windows 容器執行個體使用 HTTP Proxy
<a name="http_proxy_config-windows"></a>

您可以設定您的 Amazon ECS 容器執行個體，針對 Amazon ECS 容器代理程式和 Docker 常駐程式使用 HTTP 代理。這在您的容器執行個體沒有透過 Amazon VPC 網際網路閘道、NAT 閘道或執行個體進行外部網路存取時會很有用。

若要設定您的 Amazon ECS Windows 容器執行個體以使用 HTTP 代理，請在啟動時 (使用 Amazon EC2 使用者資料) 設定下列變數。

`[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://proxy.mydomain:port", "Machine")`  
將 `HTTP_PROXY` 設為要讓 Amazon ECS 代理連線到網際網路的 HTTP 代理之主機名稱 (或 IP 地址) 及連接埠號碼。例如，您的容器執行個體可能沒有透過 Amazon VPC 網際網路閘道、NAT 閘道或執行個體的外部網路存取。

`[Environment]::SetEnvironmentVariable("NO_PROXY", "169.254.169.254,169.254.170.2,\\.\pipe\docker_engine", "Machine")`  
將 `NO_PROXY` 設為 `169.254.169.254,169.254.170.2,\\.\pipe\docker_engine`，篩選 EC2 執行個體中繼資料、任務的 IAM 角色，以及來自代理的 Docker 常駐程式流量。

**Example Windows HTTP 代理使用者資料指令碼**  
以下範例使用者資料 PowerShell 指令碼會設定 Amazon ECS 容器代理程式和 Docker 常駐程式，以使用您指定的 HTTP 代理。您也可以指定容器執行個體自行註冊的叢集。  
若要在您啟動容器執行個體時使用此指令碼，請遵循「[啟動 Amazon ECS Windows 容器執行個體](launch_window-container_instance.md)」中的步驟進行。只要複製以下 PowerShell 指令碼，並在 **User data (使用者資料)** 欄位中貼上即可 (請確認您使用自己的代理和叢集資訊取代紅色的範例數值)。  
`-EnableTaskIAMRole` 選項是啟用任務的 IAM 角色的必要項目。如需詳細資訊，請參閱[Amazon EC2 Windows 執行個體的額外組態](task-iam-roles.md#windows_task_IAM_roles)。

```
<powershell>
Import-Module ECSTools

$proxy = "http://proxy.mydomain:port"
[Environment]::SetEnvironmentVariable("HTTP_PROXY", $proxy, "Machine")
[Environment]::SetEnvironmentVariable("NO_PROXY", "169.254.169.254,169.254.170.2,\\.\pipe\docker_engine", "Machine")

Restart-Service Docker
Initialize-ECSAgent -Cluster MyCluster -EnableTaskIAMRole
</powershell>
```

# 設定 Amazon ECS Windows 容器執行個體接收 Spot 執行個體通知
<a name="windows-spot-instance-draining-container"></a>

當 Spot 價格超過請求的最高價或容量不再可用時，Amazon EC2 會終止、停止或休眠您的 Spot 執行個體。Amazon EC2 會提供 Spot 執行個體中斷通知，在執行個體中斷前會向執行個體發出兩分鐘的警告。如果在執行個體上啟用 Amazon ECS Spot 執行個體耗盡，則 ECS 會收到 Spot 執行個體中斷通知，並將執行個體置於 `DRAINING` 狀態。

**重要**  
Amazon ECS 會監控具有 `terminate` 和 `stop` 執行個體動作的 Spot 執行個體中斷通知。如果您在請求 Spot 執行個體或 Spot 機群時指定了 `hibernate` 執行個體中斷行為，則這些執行個體不支援 Amazon ECS Spot 執行個體耗盡。

將容器執行個體設定為 `DRAINING` 時，Amazon ECS 會避免在容器執行個體中放置新的任務排程。`PENDING` 狀態下即將耗盡的容器執行個體服務任務會立即停止。如果叢集有可用的容器執行個體，則會在這些容器執行個體上啟動替代服務任務。

您可以在啟動執行個體時啟用 Spot 執行個體排空。您必須先設定 `ECS_ENABLE_SPOT_INSTANCE_DRAINING` 參數，然後才能啟動容器代理程式。使用您叢集的名稱取代 *my-cluster*。

```
[Environment]::SetEnvironmentVariable("ECS_ENABLE_SPOT_INSTANCE_DRAINING", "true", "Machine")

# Initialize the agent
Initialize-ECSAgent -Cluster my-cluster
```

如需詳細資訊，請參閱[啟動 Amazon ECS Windows 容器執行個體](launch_window-container_instance.md)。