View a markdown version of this page

运行混合架构作业(X86_64 和 ARM64) - AWS Batch

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

运行混合架构作业(X86_64 和 ARM64)

单个 Amazon ECS 托管实例计算环境和任务队列可以同时运行X86_64ARM64(基于AWS Graviton 处理器的)任务。每个任务的运行容量都与其任务定义中声明的 CPU 架构相匹配。在任务定义runtimePlatform.cpuArchitecture中设置架构。您不在计算环境上配置架构。

要运行混合架构作业,请提供支持两种架构的容器映像(多架构映像清单),并为每个架构注册一个设置runtimePlatform.cpuArchitecture为或的任务定义。X86_64 ARM64您可以将任一作业定义的任务提交到同一个任务队列。

"runtimePlatform": { "operatingSystemFamily": "LINUX", "cpuArchitecture": "ARM64" }

然后通过以下方式之一设置计算环境:

  • 省略instanceRequirements使所有实例类型都符合条件。

  • 指定allowedInstanceTypes涵盖您的工作使用的每种架构。

不要指定实例类型

省略该instanceRequirements字段managedInstancesProvider.instanceLaunchTemplate(限制计算环境可以使用哪些实例类型的设置)。所有实例类型均符合条件,Amazon ECS 会选择与每个任务相匹配的容量runtimePlatform.cpuArchitectureX86_64任务在 x86 实例上启动,ARM64作业在同一计算环境的 AWS Graviton 实例上启动。

指定涵盖所需架构的实例类型

如果您设置instanceRequirements.allowedInstanceTypes,请包括您的任务声明的每个架构的实例类型。Amazon ECS 根据您允许的实例类型推断出架构。允许的实例类型必须满足每个任务的要求runtimePlatform.cpuArchitecture。例如,要运行这两个架构,请包括:

  • x86 系列,例如m5c5

  • AWS 引力子家族,例如和 m7g c7g

如果没有匹配的实例类型可用,则任务将失败

如果允许的实例类型不包含任何与任务的声明架构相匹配的类型,则任务将失败,原因如下:

ResourceInitializationError: No available instance types were able to satisfy the task and placement constraints.

例如,如果仅allowedInstanceTypes列出 x86 系列,而您提交了ARM64任务,则任务会因此错误而失败。要解决此问题,请将 AWS Graviton 实例系列添加到allowedInstanceTypes中。或者,移除instanceRequirements以允许所有实例类型。