Fehlerbehebung bei ungültigen CPU- oder Arbeitsspeicher-Fehlern in der Amazon-ECS-Aufgabendefinition - Amazon Elastic Container Service

Fehlerbehebung bei ungültigen CPU- oder Arbeitsspeicher-Fehlern in der Amazon-ECS-Aufgabendefinition

Bei der Registrierung einer Aufgabendefinition mit der Amazon-ECS-API oder AWS CLI, wenn Sie einen ungültigen cpu- oder memory-Wert angeben, wird der folgende Fehler zurückgegeben.

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

Bei Verwendung von Terraform kann der folgende Fehler zurückgegeben werden.

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

Um dieses Problem zu lösen, müssen Sie in Ihrer Aufgabendefinition einen unterstützten Wert für die Aufgaben-CPU und den Speicher angeben. Der cpu-Wert kann in einer Aufgabendefinition in CPU-Einheiten oder vCPUs ausgedrückt werden. Wenn die Aufgabendefinition registriert ist, wird ein Wert in eine Ganzzahl umgewandelt, die die CPU-Einheiten angibt. Der memory-Wert kann in einer Aufgabendefinition in MiB oder GiB ausgedrückt werden. Wenn die Aufgabendefinition registriert ist, wird ein Wert in eine Ganzzahl umgewandelt, die die MiB angibt.

Für Aufgabendefinitionen, die FARGATE für den requiresCompatibilities-Parameter angeben (auch wenn EC2 ebenso angegeben wird), müssen Sie einen der Werte aus der folgenden Tabelle verwenden. Diese Werte bestimmen den Bereich der unterstützten Werte für den CPU- und Speicherparameter.

Für Aufgaben, die auf Fargate gehostet werden, zeigt die folgende Tabelle die gültigen CPU- und Arbeitsspeicher-Kombinationen. Die Speicherwerte in der JSON-Datei sind in MiB angegeben. Sie können den GB-Wert in MiB konvertieren, indem Sie den Wert mit 1 024 multiplizieren. Zum Beispiel 1 GB = 1 024 MiB.

CPU-Wert Speicherwert Für AWS Fargate unterstützte Betriebssysteme
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) Zwischen 4 GB und 16 GB in 1-GB-Schritten Linux, Windows
4096 (4 vCPU) Zwischen 8 GB und 30 GB in 1-GB-Schritten Linux, Windows
8 192 (8 vCPU)
Anmerkung

Diese Option erfordert die Linux-Plattform 1.4.0 oder höher.

Zwischen 16 GB und 60 GB in 4-GB-Schritten Linux
16 384 (16 vCPU)
Anmerkung

Für diese Option ist eine Linux-Plattform 1.4.0 oder eine neuere Version erforderlich.

Zwischen 32 GB und 120 GB in 8-GB-Schritten Linux

Für Aufgaben, die in Amazon EC2 gehostet werden, liegen die unterstützten CPU-Werte für Aufgaben zwischen 0,25 vCPUs und 192 vCPUs.

Der CPU-Steuerungsmechanismus unterscheidet sich zwischen EC2 und Fargate:

  • Für Aufgaben, die in Amazon EC2 gehostet werden: Amazon ECS verwendet den CPU-Zeitraum und das CPU-Kontingent, um die CPU-Festgrenzen für die Aufgabengröße zu steuern. Wenn Sie die vCPU in Ihrer Aufgabendefinition angeben, rechnet Amazon ECS den Wert im CPU-Zeitraum und die CPU-Kontingenteinstellungen um, die für cgroup gelten.

  • Für Aufgaben, die in Fargate gehostet werden: Amazon ECS verwendet CPU-Anteile zur Steuerung der CPU-Zuweisung. Die Werte für CPU-Kontingent und -Zeitraum werden nicht für die CPU-Begrenzung in Fargate-Aufgaben verwendet.

Bei Amazon-EC2-Aufgaben steuert das CPU-Kontingent die Menge an CPU-Zeit, die einer cgroup während eines bestimmten CPU-Zeitraums gewährt wird. Beide Einstellungen werden in Mikrosekunden ausgedrückt. Wenn das CPU-Kontingent dem CPU-Zeitraum entspricht, kann eine cgroup bis zu 100 % auf einer vCPU ausgeführt werden (oder jeder andere Bruchteil, der sich für mehrere vCPUs auf 100 % summiert). Das CPU-Kontingent hat ein Maximum von 1 000 000 us und der CPU-Zeitraum ein Minimum von 1 ms. Sie können diese Werte verwenden, um die Grenzwerte für Ihre CPU-Anzahl festzulegen. Wenn Sie den CPU-Zeitraum ändern, ohne das CPU-Kontingent zu ändern, gelten andere effektive Grenzwerte als die, die Sie in Ihrer Aufgabendefinition angegeben haben.

Der Zeitraum von 100 ms ermöglicht vCPUs im Bereich von 0,125 bis 10.

Anmerkung

CPU- und Speicherparameter auf Aufgabenebene werden für Windows-Container ignoriert.