本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行混合架構任務 (X86_64 和 ARM64)
單一 Amazon ECS 受管執行個體運算環境和任務佇列可以同時執行 X86_64和 ARM64(AWS Graviton 處理器型) 任務。每個任務在與其任務定義中宣告的 CPU 架構相符的容量上執行。在任務定義runtimePlatform.cpuArchitecture中使用 設定架構。您不要在運算環境中設定架構。
若要執行混合架構任務,請提供支援兩種架構的容器映像 (多架構映像資訊清單),並為每個runtimePlatform.cpuArchitecture設定為 X86_64或 的架構註冊一個任務定義ARM64。您可以將任一任務定義的任務提交至相同的任務佇列。
"runtimePlatform": { "operatingSystemFamily": "LINUX", "cpuArchitecture": "ARM64" }
然後,以下列其中一種方式設定運算環境:
-
省略
instanceRequirements,讓所有執行個體類型都符合資格。 -
指定
allowedInstanceTypes以涵蓋任務使用的每個架構。
- 請勿指定執行個體類型
-
從 省略
instanceRequirements欄位managedInstancesProvider.instanceLaunchTemplate(限制運算環境可以使用之執行個體類型的設定)。所有執行個體類型都符合資格,Amazon ECS 會選取符合每個任務 的容量runtimePlatform.cpuArchitecture。X86_64任務在 x86 執行個體上啟動,ARM64而任務在 Graviton AWS 執行個體上從相同的運算環境啟動。 - 指定涵蓋所需架構的執行個體類型
-
如果您設定
instanceRequirements.allowedInstanceTypes,請包含任務宣告的每個架構的執行個體類型。Amazon ECS 會從您允許的執行個體類型推斷架構。允許的執行個體類型必須符合每個任務的runtimePlatform.cpuArchitecture。例如,若要執行這兩個架構,請包含:-
x86 系列,例如
m5和c5 -
AWS Graviton 系列,例如
m7g和c7g
-
如果沒有可用的相符執行個體類型,任務會失敗
如果允許的執行個體類型不包含任何符合任務宣告架構的類型,則任務會失敗,原因如下:
ResourceInitializationError: No available instance types were able to satisfy the
task and placement constraints.
例如,如果 只allowedInstanceTypes列出 x86 系列且您提交ARM64任務,則任務會失敗並出現此錯誤。若要解決此問題,請將 AWS Graviton 執行個體系列新增至 allowedInstanceTypes。或者,移除 instanceRequirements以允許所有執行個體類型。