對 Amazon ECS 任務定義無效的 CPU 或記憶體錯誤進行故障診斷 - Amazon Elastic Container Service

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

對 Amazon ECS 任務定義無效的 CPU 或記憶體錯誤進行故障診斷

使用 Amazon ECS API 註冊任務定義時 AWS CLI,或者,如果您指定無效的 cpumemory值,則會傳回下列錯誤。

An error occurred (ClientException) when calling the RegisterTaskDefinition operation: Invalid 'cpu' setting for task.
注意

使用 Terraform 時,可能會傳回下列錯誤。

Error: ClientException: No Fargate configuration exists for given values.

若要解決這個問題,您必須為您任務定義中的任務 CPU 和記憶體指定受支援的值。此cpu值可以在任務定義中以 CPU 單位或 vCPUs表示。它會轉換為整數,表示在註冊任務定義時 CPU 單位。此memory值可以在任務定義中以 MiB 或 GB 表示。註冊任務定義時,它會轉換為表示 MiB 的整數。

對於FARGATErequiresCompatibilities 參數指定的任務定義 (即使也指定EC2了 ),您必須使用下表中的其中一個值。這些值決定 CPU 和記憶體參數的支援值範圍。

對於在 Fargate 上託管的任務,下表顯示了有效的 CPU 和記憶體組合。JSON 檔案中的記憶體值是以 MiB 為單位。您可以將 GB 值乘以 1024,將 GB值 轉換為 MiB。例如 1 GB = 1024 MiB。

CPU 數值 記憶體數值 AWS Fargate 支援的作業系統
256 (.25 vCPU) 512 MiB、1 GB、2 GB Linux
512 (.5 vCPU) 1 GB、2 GB、3 GB、4 GB Linux
1024 (1 vCPU) 2 GB、3 GB、4 GB、5 GB、6 GB、7 GB、8 GB Linux、Windows
2048 (2 vCPU) 介於 4 GB 與 16 GB 之間,以 1 GB 為單位遞增 Linux、Windows
4096 (4 vCPU) 介於 8 GB 與 30 GB 之間,以 1 GB 為單位遞增 Linux、Windows
8192 (8 vCPU)
注意

此選項需要 Linux 平台 1.4.0 或更新版本。

介於 16 GB 與 60 GB 之間,以 4 GB 為單位遞增 Linux
16384 (16vCPU)
注意

此選項需要 Linux 平台 1.4.0 或更新版本。

介於 32 GB 與 120 GB 之間,以 8 GB 為單位遞增 Linux

對於 Amazon EC2 上託管的任務,支援的任務 CPU 值介於 0.25 vCPUs和 192 vCPUs之間。

Amazon ECS 使用 CPU 期間和 CPU 配額來控制任務大小的 CPU 硬性限制。當您在任務定義中指定 vCPU 時,Amazon ECS 會將值轉譯為 CPU 期間和適用於 的 CPU 配額設定cgroup

CPU 配額控制在特定 CPU cgroup期間授予 的 CPU 時間量。這兩個設定都以微秒表示。當 CPU 配額等於 CPU 期間時,表示 cgroup可在一個 vCPU 上執行最多 100% (或多個 vCPUs 總計為 100% 的任何其他分數)。CPU 配額最多為 1000000us,CPU 期間最少為 1 毫秒。您可以使用這些值來設定 CPU 計數的限制。當您在不變更 CPU 配額的情況下變更 CPU 期間時,您具有與任務定義中所指定不同的有效限制。

100 毫秒期間允許 0.125 到 10 範圍內vCPUs。

注意

Windows 容器會忽略任務層級的 CPU 和記憶體參數。