使用创建作业定义 EcsProperties - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用创建作业定义 EcsProperties

使用 Amazon Batch 作业定义后 EcsProperties,可以在单独的容器中对硬件、传感器、3D 环境和其他模拟进行建模。您可以使用此功能以逻辑方式组织工作负载组件,并将它们与主应用程序分开。此功能可在亚马逊弹性容器服务 (Amaz Amazon Batch on ECS)、亚马逊 Elastic Kubernetes Service (Amazon EKS) 和 Amazon Fargate

ContainerPropertiesEcsProperties工作定义对比

您可以根据用例选择使用ContainerPropertiesEcsProperties作业定义。简而言之,使用运行 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 的一般性更改

以下内容进一步概述了使用EcsPropertiesEcsProperties API 数据类型时的一些主要区别:

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请求语法。