排查 Amazon ECS 任务定义 CPU 或内存无效错误
使用 Amazon ECS API 或 Amazon CLI 注册任务定义时,或者如果指定了无效的 cpu
或 memory
,则返回以下错误。
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 单元数或 vCPU 数表示。注册任务定义时,其将转换为指示 CPU 单元的整数。在任务定义中,memory
值可以用 MiB 或 GB 表示。注册任务定义时,其将转换为指示 MiB 的整数。
对于仅为 requiresCompatibilities
参数指定 EC2
的任务定义,支持的 CPU 值介于 256
, CPU 单元(0.25
vCPU)和 16384
CPU 单元(16
vCPU)之间。内存值必须为整数,且限制取决于您使用的底层 Amazon EC2 实例上的可用内存量。
对于为 requiresCompatibilities
参数指定的 FARGATE
任务定义(即使也指定了 EC2
),必须使用下表中的一个值。这些值决定了 CPU 和内存参数支持的值范围。
对于 Fargate 上托管的任务,下表显示了有效的 CPU 和内存组合。JSON 文件中的内存值以 MiB 为单位指定。您可以通过将 GB 值乘以 1024 来其转换为 MiB。例如 1 GB = 1024 MiB。
CPU 值 |
内存值 |
Amazon Fargate 支持的操作系统 |
---|---|---|
256 (.25 vCPU) |
512MiB、1GB、2GB |
Linux |
512 (.5 vCPU) |
1GB、2GB、3GB、4GB |
Linux |
1024 (1 vCPU) |
2GB、3GB、4GB、5GB、6GB、7GB、8GB |
Linux、Windows |
2048 (2 vCPU) |
4GB 到 16GB 之间 (以 1GB 为增量) |
Linux、Windows |
4096 (4 vCPU) |
8GB 到 30GB 之间 (以 1GB 为增量) |
Linux、Windows |
8192 (8 vCPU) 注意此选项需要 Linux 平台 |
16 GB 到 60 GB 之间(以 4 GB 为增量) |
Linux |
16384 (16vCPU) 注意此选项需要 Linux 平台 |
32 GB 到 120 GB 之间(以 8 GB 为增量) |
Linux |
对于 Amazon EC2 上托管的任务,受支持的任务 CPU 值介于 0.25 个 vCPU 与 192 个 vCPU 之间。
注意
Windows 容器将忽略任务级 CPU 和内存参数。