Solucionar problemas causados por erros de CPU ou memória inválida na definição de tarefa do Amazon ECS
Ao registrar uma definição de tarefa usando a API do Amazon ECS ou a AWS CLI, se você especificar um valor inválido de cpu
ou memory
, será retornado o erro a seguir.
An error occurred (ClientException) when calling the RegisterTaskDefinition operation: Invalid 'cpu' setting for task.
nota
Ao usar o Terraform, o erro a seguir pode ser retornado.
Error: ClientException: No Fargate configuration exists for given values.
Para resolver esse problema, você deve especificar um valor compatível para a CPU e a memória em sua definição da tarefa. O valor de cpu
pode ser expresso em unidades de CPU ou vCPUs em uma definição de tarefa. Ele é convertido em um número inteiro que indica as unidades de CPU quando a definição da tarefa é registrada. O valor de memory
pode ser expresso em MiB ou GB em uma definição de tarefa. Ele é convertido em um número inteiro que indica o valor em MiB quando a definição da tarefa é registrada.
Em definições de tarefa que especificam o FARGATE
para o parâmetro requiresCompatibilities
(mesmo se o EC2
também estiver especificado), você deve usar um dos valores da tabela a seguir. Esses valores determinam sua faixa de valores compatíveis com os parâmetros de CPU e memória.
Para tarefas hospedadas no Fargate, a tabela a seguir mostra as combinações válidas de CPU e memória. Os valores de memória no arquivo JSON são especificados em MiB. É possível converter o valor de GB em MiB multiplicando o valor por 1024. Por exemplo, 1 GB = 1024 MiB.
Valor de CPU | Valor de memória | Sistemas operacionais com suporte para o AWS Fargate |
---|---|---|
256 (0,25 vCPU) | 512 MiB, 1 GB, 2 GB | Linux |
512 (0,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) | Entre 4 GB e 16 GB em incrementos de 1 GB | Linux, Windows |
4096 (4 vCPU) | Entre 8 GB e 30 GB em incrementos de 1 GB | Linux, Windows |
8192 (8 vCPU) notaEssa opção requer a plataforma Linux |
Entre 16 GB e 60 GB em incrementos de 4 GB | Linux |
16384 (16 vCPU) notaEssa opção requer a plataforma Linux |
Entre 32 GB e 120 GB em incrementos de 8 GB | Linux |
Em tarefas hospedadas no Amazon EC2, os valores de CPU da tarefa válidos estão entre 0,25 vCPU e 10 vCPUs.
O Amazon ECS usa o período da CPU e a cota de CPU para controlar os limites rígidos de CPU do tamanho da tarefa. Quando você especifica a vCPU na definição da tarefa, o Amazon ECS traduz o valor para o período da CPU e as configurações de cota de CPU que se aplicam a cgroup
.
A cota de CPU controla a quantidade de tempo de CPU concedida a cgroup
durante um determinado período de CPU. Ambas as configurações são expressas em termos de microssegundos. Quando a cota de CPU é igual ao período da CPU, isso significa que cgroup
pode executar até 100% em uma vCPU (ou qualquer outra fração que totalize 100% para várias vCPUs). A cota de CPU tem um máximo de 1.000.000 microssegundos e o período de CPU tem um mínimo de 1 ms. Você pode usar esses valores para definir os limites da contagem de CPUs. Quando você altera o período da CPU sem alterar a cota de CPU, você passa a ter limites efetivos diferentes dos especificados na definição da tarefa.
O período de 100 ms permite vCPUs que variam de 0,125 a 10.
nota
Os parâmetros de CPU e memória em nível de tarefa são ignorados para contêineres do Windows.