本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 EcsProperties 建立任務定義
透過使用 AWS Batch 的任務定義EcsProperties
,您可以在不同的容器中建立硬體、感應器、3D 環境和其他模擬的模型。您可以使用此功能以邏輯方式組織工作負載元件,並將其與主要應用程式分開。此功能可在 Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS) 和 AWS Batch 上使用 AWS Fargate。
ContainerProperties
與EcsProperties
任務定義
您可以選擇使用 ContainerProperties
或 EcsProperties
任務定義做為您的使用案例指示。在高階,使用 執行 AWS Batch 的任務EcsProperties
類似於使用 執行的任務ContainerProperties
。
使用 的傳統任務定義結構ContainerProperties
仍受支援。如果您目前有使用此結構的工作流程,您可以繼續執行它們。
主要差別在於,任務定義中新增了新的物件,以容納 EcsProperties
型定義。
例如,在 Amazon ECS 和 Fargate ContainerProperties
上使用的任務定義具有下列結構:
{ "containerProperties": { ... "image": "my_ecr_image1", ... }, ... }
在 Amazon ECS 和 Fargate EcsProperties
上使用的任務定義具有下列結構:
{ "ecsProperties": { "taskProperties": [{ "containers": [ { ... "image": "my_ecr_image1", ... }, { ... "image": "my_ecr_image2", ... },
AWS Batch APIs的一般變更
以下進一步概述使用 EcsProperties
和 EcsProperties
API 資料類型時的一些主要差異:
-
在 中使用的許多參數都
ContainerProperties
會顯示在 中TaskContainerProperties
。一些範例包括 、command
image
、privileged
、secrets
和users
。它們都可以在 TaskContainerProperties 中找到。 -
某些
TaskContainerProperties
參數在舊版結構中沒有功能對等項目。一些範例包括 、dependsOn
essential
、name
、ipcMode
和pidMode
。如需詳細資訊,請參閱 EcsTaskDetails 和 TaskContainerProperties。此外,某些
ContainerProperties
參數在EcsProperties
結構中沒有同等參數或應用程式。在 中taskProperties
,container
已取代為 ,containers
讓新物件最多可接受十個元素。如需詳細資訊,請參閱 RegisterJobDefinition:containerProperties 和 EcsTaskProperties:containers。 -
taskRoleArn
功能上等同於jobRoleArn
。如需詳細資訊,請參閱 EcsTaskProperties:taskRoleArn 和 ContainerProperties:jobRoleArn。 -
您可以在
EcsProperties
結構中包含一 (1) 到十 (10) 個容器。如需詳細資訊,請參閱 EcsTaskProperties:containers。 -
taskProperties
和 instanceTypes 物件是陣列,但目前只接受一個元素。例如,EcsProperties:taskProperties 和 NodeRangeProperty:instanceTypes。
Amazon ECS 的多容器任務定義
為了容納 Amazon ECS 的多容器結構,某些 API 資料類型不同。例如
-
ecsProperties
與單一容器定義containerProperties
中的層級相同。如需詳細資訊,請參閱 AWS Batch API 參考指南中的 EcsProperties。 -
taskProperties
包含為 Amazon ECS 任務定義的屬性。如需詳細資訊,請參閱 AWS Batch API 參考指南中的 EcsProperties。 -
containers
在單一容器定義containerProperties
中包含與 類似的資訊。主要差別在於containers
可讓您定義最多十個容器。如需詳細資訊,請參閱 AWS Batch API 參考指南中的 ECSTaskProperties:containers。 -
essential
參數指出容器如何影響任務。所有必要容器都必須成功完成 (以 0 結束),才能讓任務繼續。如果標示為必要 的容器失敗 (結束為非 0),則任務會失敗。預設值為
true
,且至少必須將一個容器標記為essential
。如需詳細資訊,請參閱essential
API 參考指南中的「AWS Batch 」。 -
您可以使用
dependsOn
參數定義容器相依性的清單。如需詳細資訊,請參閱dependsOn
API 參考指南中的「AWS Batch 」。注意
dependsOn
清單的複雜性和相關聯的容器執行時間可能會影響任務的開始時間。如果相依性需要很長的時間才能執行,任務會保持STARTING
狀態,直到完成為止。
如需 ecsProperties
和 結構的詳細資訊,請參閱 RegisterJobDefinition ecsProperties 請求語法。
Amazon EKS 的多容器任務定義
為了容納 Amazon EKS 的多容器結構,某些 API 資料類型不同。例如
-
name
是容器的唯一識別符。單一容器不需要此物件,但在 Pod 中定義多個容器時需要此物件。name
未針對單一容器定義 時,default
會套用預設名稱 。 -
initContainers
在 eksPodProperties 資料類型中定義。它們會在應用程式容器之前執行,一律會執行到完成,而且必須在下一個容器啟動之前成功完成。這些容器已向 Amazon EKS Connector 代理程式註冊,並在 Amazon Elastic Kubernetes Service 後端資料存放區中保留註冊資訊。
initContainers
物件最多可接受十 (10) 個元素。如需詳細資訊,請參閱 Kubernetes 文件中的初始化容器。 注意
initContainers
物件可能會影響任務的開始時間。如果initContainers
需要很長的時間才能執行,任務將保持STARTING
狀態,直到完成為止。 -
shareProcessNamespace
指出 Pod 中的容器是否可以共用相同的程序命名空間。預設值為false
。將此設定為true
,以啟用容器查看和訊號位於相同 Pod 中其他容器的程序。 -
每個容器都很重要。所有容器都必須成功完成 (以 0 結束),任務才能成功。如果一個容器失敗 (除了 0 之外結束),則任務會失敗。
如需 eksProperties
和 結構的詳細資訊,請參閱 RegisterJobDefinition eksProperties 請求語法。