使用创建作业定义 EcsProperties - AWS Batch

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

使用创建作业定义 EcsProperties

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

ContainerPropertiesEcsProperties 作业定义对比

您可以根据应用场景的规定选择使用 ContainerPropertiesEcsProperties 作业定义。简而言之,使用运行 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

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

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