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而任務在 Graviton AWS 執行個體上從相同的運算環境啟動。

指定涵蓋所需架構的執行個體類型

如果您設定 instanceRequirements.allowedInstanceTypes,請包含任務宣告的每個架構的執行個體類型。Amazon ECS 會從您允許的執行個體類型推斷架構。允許的執行個體類型必須符合每個任務的 runtimePlatform.cpuArchitecture。例如,若要執行這兩個架構,請包含:

  • x86 系列,例如 m5c5

  • AWS Graviton 系列,例如 m7gc7g

如果沒有可用的相符執行個體類型,任務會失敗

如果允許的執行個體類型不包含任何符合任務宣告架構的類型,則任務會失敗,原因如下:

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

例如,如果 只allowedInstanceTypes列出 x86 系列且您提交ARM64任務,則任務會失敗並出現此錯誤。若要解決此問題,請將 AWS Graviton 執行個體系列新增至 allowedInstanceTypes。或者,移除 instanceRequirements以允許所有執行個體類型。