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

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

使用 EcsProperties 创建作业定义

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

ContainerPropertiesEcsProperties 作业定义对比

您可以根据应用场景的规定选择使用 ContainerPropertiesEcsProperties 作业定义。从较高层次来看,使用 EcsProperties 运行 AWS Batch 作业与使用 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 API 的一般更改

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

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 和结构的更多信息,请参阅 ecsPropertiesRegisterJobDefinition 请求语法。

Amazon EKS 的多容器作业定义

为了适应 Amazon EKS 的多容器结构,其中某些 API 数据类型有所不同。例如,

  • name 是容器的唯一标识符。此对象不是单个容器所必需的,但是,当在一个容器组(pod)中定义多个容器时,它是必需的。如果未为单个容器定义 name,则应用默认名称 default

  • eksPodProperties 数据类型中定义 initContainers。它们在应用程序容器之前运行,将始终运行到完成,并且必须在下一个容器启动之前成功完成。

    这些容器已在 Amazon EKS Connector 代理中注册,并将注册信息保存在 Amazon Elastic Kubernetes Service 后端数据存储中。initContainers 对象最多可以接受十(10)个元素。有关更多信息,请参阅 Kubernetes 文档中的 Init 容器

    注意

    initContainers 对象可能会影响作业的开始时间。如果 initContainers 需要很长时间才能运行,则作业将保持 STARTING 状态,直到它们完成。

  • shareProcessNamespace 指示容器组(pod)中的容器是否可以共享相同的进程命名空间。默认值为 false。将其设置为 true 可以让容器看到位于同一容器组(pod)中的其他容器中的进程并发出信号。

  • 每个容器都很重要。所有容器必须成功完成(以 0 退出),作业才能成功。如果一个容器失败(以非 0 退出),则作业将失败。

有关 eksProperties 和结构的更多信息,请参阅 eksPropertiesRegisterJobDefinition 请求语法。