本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用创建作业定义 EcsProperties
使用 Amazon Batch 作业定义后 EcsProperties
,可以在单独的容器中对硬件、传感器、3D 环境和其他模拟进行建模。您可以使用此功能以逻辑方式组织工作负载组件,并将它们与主应用程序分开。此功能可在亚马逊弹性容器服务 (Amaz Amazon Batch on ECS)、亚马逊 Elastic Kubernetes Service (Amazon EKS) 和 Amazon Fargate
ContainerProperties
与EcsProperties
工作定义对比
您可以根据用例选择使用ContainerProperties
或EcsProperties
作业定义。简而言之,使用运行 Amazon Batch 作业与使用EcsProperties
运行作业类似ContainerProperties
。
仍然支持使用ContainerProperties
旧版作业定义结构。如果您当前有使用此结构的工作流,则可以继续运行它们。
主要区别在于,在作业定义中添加了一个新对象以适应EcsProperties
基于的定义。
例如,ContainerProperties
在 Amazon ECS 和 Fargate 上使用的任务定义具有以下结构:
{ "containerProperties": { ... "image": "my_ecr_image1", ... }, ... }
EcsProperties
在 Amazon ECS 和 Fargate 上使用的任务定义具有以下结构:
{ "ecsProperties": { "taskProperties": [{ "containers": [ { ... "image": "my_ecr_image1", ... }, { ... "image": "my_ecr_image2", ... },
对 Amazon Batch API 的一般性更改
以下内容进一步概述了使用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
中的级别相同。有关更多信息,请参阅 Amazon Batch API 参考指南EcsProperties中的。 -
taskProperties
包含为 Amazon ECS 任务定义的属性。有关更多信息,请参阅 Amazon Batch API 参考指南EcsProperties中的。 -
containers
包含与单容器定义containerProperties
中类似的信息。主要区别在于,containers
它允许您定义多达十个容器。有关更多信息,请参阅 API Amazon Batch 参考指南TaskProperties中的 ECS: 容器。 -
essential
参数表示容器如何影响作业。所有 essential 容器都必须成功完成(以 0 退出),任务才能继续进行。如果标记为 essential 的容器失败(以非 0 退出),则作业将失败。默认值为,
true
并且必须至少将一个容器标记为essential
。有关更多信息,请参阅essential
API 参考指南 中的 Amazon Batch 。 -
使用
dependsOn
参数,您可以定义容器依赖关系的列表。有关更多信息,请参阅dependsOn
API 参考指南 中的 Amazon Batch 。注意
dependsOn
列表的复杂性以及相关的容器运行时可能会影响任务的开始时间。如果依赖关系需要很长时间才能运行,则作业将保持STARTING
状态,直到它们完成。
有关ecsProperties
和结构的更多信息,请参阅 ecs Properties 的RegisterJobDefinition请求语法。
Amazon EKS 的多容器任务定义
为了适应 Amazon EKS 的多容器结构,某些 API 数据类型有所不同。例如,
-
name
是容器的唯一标识符。这个对象不是单个容器所必需的,但是在一个 pod 中定义多个容器时是必需的。如果name
未为单个容器定义default
,则应用默认名称。 -
initContainers
是在eksPodProperties数据类型中定义的。它们在应用程序容器之前运行,始终运行到完成,并且必须在下一个容器启动之前成功完成。这些容器已向 Amazon EKS Connector 代理注册,并将注册信息保存在亚马逊 Elastic Kubernetes Service 后端数据存储中。该
initContainers
对象最多可以接受十 (10) 个元素。有关更多信息,请参阅Kubernetes文档中的初始化容器。 注意
该
initContainers
对象可能会影响作业的开始时间。如果initContainers
需要很长时间才能运行,则作业将一直处于STARTING
状态,直到它们完成。 -
shareProcessNamespace
指示 Pod 中的容器是否可以共享相同的进程命名空间。默认值为false
。将其设置为可以true
让容器看到位于同一 pod 中的其他容器中的进程并发出信号。 -
每个容器都很重要。所有容器必须成功完成(以 0 退出),任务才能成功。如果一个容器失败(以 0 以外的身份退出),则作业将失败。
有关eksProperties
和结构的更多信息,请参阅 eks Properties 的RegisterJobDefinition请求语法。