本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用创建作业定义 EcsProperties
使用 AWS Batch 作业定义后 EcsProperties
,可以在单独的容器中对硬件、传感器、3D 环境和其他模拟进行建模。您可以使用此功能从逻辑上整理工作负载组件,并将它们与主应用程序分开。此功能可在亚马逊弹性容器服务 (Amaz AWS Batch on ECS)、亚马逊 Elastic Kubernetes Service (Amazon EKS) 和 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。EcsTaskProperties -
taskRoleArn
在功能上与jobRoleArn
等效。有关更多信息,请参阅EcsTaskProperties:taskRoleArn和ContainerProperties:jobRoleArn。 -
您可以在
EcsProperties
结构中包含一(1)到十(10)个容器。更多信息请参阅:容器EcsTaskProperties。 -
taskProperties
和 instanceTypes 对象是数组,但目前只接受一个元素。例如,: 任务属性和:EcsProperties实例类型。NodeRangeProperty
Amazon ECS 的多容器作业定义
为了适应 Amazon ECS 的多容器结构,其中某些 API 数据类型有所不同。例如,
-
ecsProperties
与单容器定义中的containerProperties
级别相同。有关更多信息,请参阅 EcsProperties API 参考指南 中的 AWS Batch 。 -
taskProperties
包含为 Amazon ECS 任务定义的属性。有关更多信息,请参阅 EcsProperties API 参考指南 中的 AWS Batch 。 -
containers
包含与单容器定义中的containerProperties
类似的信息。主要区别在于,containers
使您可以最多定义十个容器。有关更多信息,请参阅 AWS Batch API 参考指南中的ECSTask属性:容器。 -
essential
参数指示容器如何影响作业。所有必需的容器都必须成功完成(以 0 退出),任务才能继续进行。如果标记为必需的容器失败(以非 0 退出),则任务将失败。默认值为
true
,并且必须至少将一个容器标记为essential
。有关更多信息,请参阅essential
API 参考指南 中的 AWS Batch 。 -
使用
dependsOn
参数,您可以定义容器依赖项列表。有关更多信息,请参阅dependsOn
API 参考指南 中的 AWS Batch 。注意
dependsOn
列表的复杂性以及相关的容器运行时可能会影响作业的开始时间。如果依赖项需要很长时间才能运行,则作业将保持STARTING
状态,直到它们完成。
有关ecsProperties
和结构的更多信息,请参阅 ecs Properties 的RegisterJobDefinition请求语法。
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
和结构的更多信息,请参阅 eks Properties 的RegisterJobDefinition请求语法。