定義 Amazon ECS 用於執行任務的容器執行個體 - Amazon Elastic Container Service

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

定義 Amazon ECS 用於執行任務的容器執行個體

任務放置限制是 Amazon ECS 用來判斷是否允許在執行個體上執行任務的容器執行個體的規則。至少有一個容器執行個體必須符合限制條件。如果沒有符合條件限制的執行個體,則任務將會保持 PENDING 狀態。當您建立新服務或更新現有服務時,您可以為服務的任務指定任務放置限制條件。

您可以使用placementConstraint參數在服務定義、任務定義或任務中指定任務位置限制。

"placementConstraint": [ { "expression": "The expression that defines the task placement constraints", "type": "The placement constraint type to use" } ]

下表說明如何使用這些參數。

Constraint type (限制條件類型) 可以指定時
distinctInstance

將每個任務放置在不同的容器執行個體。

重要

我們建議客戶希望對其任務進行強大隔離的客戶使用 Fargate。Fargate 會在硬體虛擬化環境中執行每項工作。這可確保這些容器化工作負載不會與其他工作共用網路介面、Fargate 暫時性儲存、CPU 或記憶體。如需詳細資訊,請參閱 AWS Fargate.

memberOf

在滿足運算式的容器執行個體上放置任務。

使用memberOf約束類型時,您可以使用叢集查詢語言建立運算式,該語言定義了 Amazon ECS 可在其中放置任務的容器執行個體。運算式是您依屬性分組容器執行個體的一種方式。運算式會進入的expression 參數placementConstraint

Amazon ECS 容器實例屬性

您可以將自訂中繼資料新增至容器執行個體,稱為屬性。每個屬性都有名稱和選用字串值。您可以使用 Amazon ECS 所提供的內建屬性,或定義自訂屬性。

以下章節包含範例內建屬性、選擇性屬性和自訂屬性。

內建屬性

Amazon ECS 會將下列屬性自動套用至您的容器執行個體。

ecs.ami-id

用來啟動執行個體的 AMI ID。此屬性的範例值為 ami-1234abcd

ecs.availability-zone

執行個體的可用區域。此屬性的範例值為 us-east-1a

ecs.instance-type

執行個體的執行個體類型。此屬性的範例值為 g2.2xlarge

ecs.os-type

執行個體的作業系統。此屬性的可能值為 linuxwindows

ecs.os-family

執行個體的作業系統版本。

若為 Linux 執行個體,有效值為 LINUX。若為 Windows 執行個體,ECS 會以 WINDOWS_SERVER_<OS_Release>_<FULL or CORE> 格式設定值。有效值為 WINDOWS_SERVER_2022_FULLWINDOWS_SERVER_2022_COREWINDOWS_SERVER_20H2_COREWINDOWS_SERVER_2019_FULLWINDOWS_SERVER_2019_COREWINDOWS_SERVER_2016_FULL

這對於 Windows 容器很重要, Windows containers on AWS Fargate 因為每個 Windows 容器的作業系統版本都必須與主機的作業系統版本相符。如果容器映像的 Windows 版本與主機不同,則容器不會啟動。如需詳細資訊,請參閱 Microsoft 文件網站上的 Windows 容器版本相容性

如果您的叢集執行多個 Windows 版本,您可以使用置放條件限制:memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>),確保將任務置放在執行相同版本的 EC2 執行個體上。如需詳細資訊,請參閱 擷取 Amazon ECS 最佳化 AMI 中繼資料

ecs.cpu-architecture

執行個體的 CPU 架構。此屬性的範例值為 x86_64arm64

ecs.vpc-id

執行個體啟動所在位置的 VPC。此屬性的範例值為 vpc-1234abcd

ecs.subnet-id

執行個體使用的子網路。此屬性的範例值為 subnet-1234abcd

選擇性屬性

Amazon ECS 可能會將以下屬性新增到您的容器執行個體。

ecs.awsvpc-trunk-id

如果此屬性存在,執行個體則具有一個幹線網路界面。如需詳細資訊,請參閱 彈性網路介面中繼

ecs.outpost-arn

如果此屬性存在,它會包含 Outpost 的 Amazon Resource Name (ARN)。如需詳細資訊,請參閱 Amazon 彈性容器服務 AWS Outposts

ecs.capability.external

若存在此屬性,執行個體將被識別為外部執行個體。如需詳細資訊,請參閱 外部執行個體 (Amazon ECS Anywhere)

自訂屬性

您可以將自訂屬性套用至容器執行個體。例如,您可以定義名稱為 "stack" 且值為 "prod" 的屬性。

在指定自訂屬性時,必須考慮下列事項。

  • name 必須包含 1 至 128 個字元,而名稱可能包含字母 (大小寫)、數字、連字號、底線、正斜線、反斜線或句號。

  • value 必須包含 1 至 128 個字元,而且可能包含字母 (大小寫)、數字、連字號、底線、句號、@ 符號、正斜線、反斜線、冒號或空格。值不得包含任何前置或結尾空格。