本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Batch 在 Amazon Fargate
Amazon Fargate 是可与 Amazon Batch 结合使用的技术,使您在运行容器
您在运行使用 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.0
、1.4.0
和LATEST
。"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
-
仅支持
awslogs
和splunk
。有关更多信息,请参见 使用 awslogs 日志驱动程序。
networkConfiguration
中的会员-
assignPublicIp
-
如果私有子网未连接用于向互联网发送流量的 NAT 网关,
assignPublicIp
则必须为“ENABLED
”。有关更多信息,请参见 Amazon Batch 执行 IAM 角色。
Fargate 上的作业队列
Fargate 上的 Amazon Batch 作业队列基本保持不变。唯一的限制是 computeEnvironmentOrder
中列出的计算环境必须全部是 Fargate 计算环境(FARGATE
或 FARGATE_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
-
必须是
FARGATE
或FARGATE_SPOT
。"type": "FARGATE_SPOT"