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

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

Amazon Batch 在 Amazon Fargate

Amazon Fargate 是可与 Amazon Batch 结合使用的技术,使您在运行容器时不必管理服务器或Amazon EC2 实例的集群。使用 Amazon Fargate,您不必再预配置、配置或扩展虚拟机集群即可运行容器。这样一来,您就无需再选择服务器类型、确定扩展集群的时间和优化集群打包。

您在运行使用 Fargate 启动类型的任务和服务时,您需要将应用程序打包到容器中、指定 CPU 和内存要求、定义联网和 IAM policy 并启动应用程序。每个 Fargate 任务都具有自己的隔离边界,不与其他任务共享底层内核、CPU 资源、内存资源或弹性网络接口。

何时使用 Fargate

我们建议在大多数情况下使用 Fargate。Fargate 启动并扩展计算以密切匹配您为容器指定的资源需求。有了 Fargate,您无需过度配置或为额外的服务器付费。您也不必担心与基础设施相关的参数(例如实例类型)的细节。当计算环境需要扩展时,可以更快地启动在 Fargate 资源上运行的作业。通常需要几分钟才能启动新的 Amazon EC2 实例。但是,在 Fargate 上运行的作业可以在大约 30 秒内完成配置。所需的确切时间取决于多个因素,包括容器映像大小和作业数量。

但是,如果您的作业需要下列任一条件,我们建议您使用 Amazon EC2:

  • 超过 16 个 vCPU

  • 超过 120 吉字节 (GiB) 的内存

  • 一个 GPU

  • 使用自定义亚马逊机器映像(AMI)

  • 任何 linuxParameters 参数

如果您有大量的作业,我们建议您使用 Amazon EC2 基础架构。例如,如果同时运行的作业数量超过了 Fargate 的节流限制。这是因为,使用 EC2,向 EC2 资源分配作业的速率要高于 Fargate 资源。此外,当您使用 EC2 时,可以同时运行更多作业。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 Amazon Fargate 服务限额

Fargate 上的作业定义

Fargate 上的 Amazon Batch 任务并不支持所有可用的任务定义参数。某些参数完全不受支持,而其他参数对于 Fargate 任务的行为则不同。

以下列表描述了在 Fargate 作业中无效或以其他方式受到限制的作业定义参数。

platformCapabilities

必须指定为 FARGATE

"platformCapabilities": [ "FARGATE" ]
type

必须指定为 container

"type": "container"
containerProperties 中的参数
executionRoleArn

对于在 Fargate 资源上运行的作业,指定。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的任务的 IAM 角色

"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
fargatePlatformConfiguration

(可选,仅适用于 Fargate 作业定义)。指定 Fargate 平台版本或 LATEST 最新平台版本。platformVersion 的可能值为 1.3.01.4.0LATEST

"fargatePlatformConfiguration": { "platformVersion": "1.4.0" }
instanceType
ulimits

不适用于在 Fargate 资源上运行的作业。

memory
vcpus

这些设置必须在 resourceRequirements 中指定

privileged

要么不指定此参数,要么指定 false

"privileged": false
resourceRequirements

必须使用支持的值来指定内存和 vCPU 要求。GPU 资源在 Fargate 资源上运行的作业不支持 GPU 资源。

如果您使用 GuardDuty 运行时监控,则 GuardDuty 安全代理会有轻微的内存开销。因此,内存限制必须包括 GuardDuty安全代理的大小。有关 GuardDuty 安全代理内存限制的信息,请参阅《GuardDuty 用户指南》中的 CPU 和内存限制。有关最佳实践的信息,请参阅 Amazon ECS 开发人员指南中的启用运行时监控后如何修复 Fargate 任务中的内存不足错误

"resourceRequirements": [ {"type": "MEMORY", "value": "512"}, {"type": "VCPU", "value": "0.25"} ]
linuxParameters 中的参数
devices
maxSwap
sharedMemorySize
swappiness
tmpfs

不适用于在 Fargate 资源上运行的作业。

logConfiguration 中的参数
logDriver

仅支持 awslogssplunk。有关更多信息,请参见 使用 awslogs 日志驱动程序

networkConfiguration 中的会员
assignPublicIp

如果私有子网未连接用于向互联网发送流量的 NAT 网关,assignPublicIp 则必须为“ENABLED”。有关更多信息,请参见 Amazon Batch 执行 IAM 角色

Fargate 上的作业队列

Fargate 上的 Amazon Batch 作业队列基本保持不变。唯一的限制是 computeEnvironmentOrder 中列出的计算环境必须全部是 Fargate 计算环境(FARGATEFARGATE_SPOT)。EC2 和 Fargate 的计算环境不能混合使用。

Fargate 上的计算环境

Fargate 上的 Amazon Batch 计算环境并非支持所有可用的计算环境参数。某些参数完全不受支持。其他则对 Fargate 有具体要求。

以下列表描述了在 Fargate 作业中无效或以其他方式受到限制的计算环境参数。

type

此参数必须设置为 MANAGED

"type": "MANAGED"
computeResources 对象中的参数
allocationStrategy
bidPercentage
desiredvCpus
imageId
instanceTypes
ec2Configuration
ec2KeyPair
instanceRole
launchTemplate
minvCpus
placementGroup
spotIamFleetRole

它们不适用于 Fargate 计算环境,也无法提供。

subnets

如果此参数中列出的子网未连接 NAT 网关,则必须将作业定义中的 assignPublicIp 参数设置为 ENABLED

tags

它们不适用于 Fargate 计算环境,也无法提供。要为 Fargate 计算环境指定标签,请使用 computeResources 对象中没有的 tags 参数。

type

必须是 FARGATEFARGATE_SPOT

"type": "FARGATE_SPOT"