本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
定義 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
-
執行個體的作業系統。此屬性的可能值為
linux
和windows
。 ecs.os-family
-
執行個體的作業系統版本。
若為 Linux 執行個體,有效值為
LINUX
。若為 Windows 執行個體,ECS 會以WINDOWS_SERVER_<
格式設定值。有效值為OS_Release
>_<FULL or CORE
>WINDOWS_SERVER_2022_FULL
、WINDOWS_SERVER_2022_CORE
、WINDOWS_SERVER_20H2_CORE
、WINDOWS_SERVER_2019_FULL
、WINDOWS_SERVER_2019_CORE
與WINDOWS_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_64
和arm64
。 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 個字元,而且可能包含字母 (大小寫)、數字、連字號、底線、句號、@ 符號、正斜線、反斜線、冒號或空格。值不得包含任何前置或結尾空格。