

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 執行混合架構任務 (X86\_64 和 ARM64)
<a name="ecs-managed-instances-multi-architecture"></a>

單一 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`以允許所有執行個體類型。