Wie behebe ich Probleme beim Einrichten eines neuen Kapazitätsanbieters oder beim Aktualisieren eines vorhandenen Kapazitätsanbieters für meinen Amazon-ECS-Cluster?

Letzte Aktualisierung: 13.04.2022

Ich habe Probleme, wenn ich versuche, einen neuen Kapazitätsanbieter einzurichten oder einen vorhandenen Kapazitätsanbieter für meinen Amazon Elastic Container Service (Amazon ECS)-Cluster zu aktualisieren.

Kurzbeschreibung

Einige der häufigsten Probleme, die beim Einrichten eines neuen Kapazitätsanbieters oder beim Aktualisieren eines vorhandenen Kapazitätsanbieters für Ihren Amazon-ECS-Cluster auftreten, sind die folgenden:

  • Fehler werden angezeigt, wenn Sie mithilfe der AWS Command Line Interface (AWS CLI) einen Kapazitätsanbieter für Auto-Scaling-Gruppen mit automatischer Skalierung erstellen.
  • Sie erhalten den Fehler: The specified capacity provider already exists (Der angegebene Kapazitätsanbieter ist bereits vorhanden). Um die Konfiguration eines vorhandenen Kapazitätsanbieters zu ändern, aktualisieren Sie den Kapazitätsanbieter.
  • Sie erhalten den Fehler: The specified Auto Scaling group ARN is already being used by another capacity provider (Der angegebene Auto-Scaling-Gruppen-ARN wird bereits von einem anderen Kapazitätsanbieter verwendet). Geben Sie einen eindeutigen Auto-Scaling-Gruppen-ARN an und versuchen Sie es erneut.
  • Beim Erstellen der Kapazitätsanbieter-Strategie wird der Fehler angezeigt: The specified cluster is in a busy state (Der angegebene Cluster ist ausgelastet). Cluster-Anfügungen müssen sich im Status UPDATE_COMPLETE oder UPDATE_FAILED befinden, bevor sie aktualisiert werden können. Warten Sie und versuchen Sie es erneut.
  • Sie erhalten Fehler aufgrund einiger Einschränkungen beim Kapazitätsanbieter.
  • Der Kapazitätsanbieter wurde erfolgreich mit AWS CloudFormation erstellt, wird aber nicht in der Konsole angezeigt.

Auflösung

Beim Erstellen eines Kapazitätsanbieters für Auto-Scaling-Gruppen mithilfe von AWS CLI erhalten Sie Fehler

Um dieses Problem zu beheben, wenn Sie einen Kapazitätsanbieter mithilfe der AWS CLI erstellen, überprüfen Sie die AWS-CloudTrail-Ereignisse, um nach der CreateCapacityProvider-API zu suchen. Im Folgenden sind einige der Fehler aufgeführt, die bei der CapacityProvider-API auftreten können:

  • ClientException: Diese Fehler werden normalerweise durch eine Client-Aktion verursacht. Diese Client-Aktion verwendet möglicherweise eine Aktion oder Ressource im Namen eines AWS Identity and Access Management (IAM)-Benutzers, der nicht über die erforderlichen Berechtigungen zur Verwendung der Aktion oder Ressource verfügt. Dieser Fehler kann auch eine Kennung angeben, die nicht gültig ist.
  • UpdateInProgressException: Sie erhalten diesen Fehler, da bereits ein aktuelles Update für den Agent von Amazon ECS Container auf der von Ihnen angegebenen Container-Instance ausgeführt wird. Wenn der Container-Agent in einer Übergangsphase wie PENDING oder STAGING getrennt wird, bleibt der Aktualisierungsprozess möglicherweise in diesem Zustand hängen. Wenn sich der Agent jedoch erneut verbindet, setzt er dort fort, wo er zuvor angehalten wurde.

Weitere Informationen finden Sie unter Fehler.

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.

Sie erhalten den Fehler: The specified capacity provider already exists (Der angegebene Kapazitätsanbieter ist bereits vorhanden). Um die Konfiguration eines vorhandenen Kapazitätsanbieters zu ändern, aktualisieren Sie den Kapazitätsanbieter

Verwenden Sie beim Erstellen des Kapazitätsanbieters einen Namen, der sich von den zuvor verwendeten Kapazitätsanbieternamen unterscheidet. Oder Sie löschen den vorhandenen Kapazitätsanbieter mit diesem Namen und erstellen dann einen neuen Kapazitätsanbieter.

Führen Sie den folgenden Befehl aus, um eine Liste aller Kapazitätsanbieter anzuzeigen, die Sie erstellt haben:

aws ecs describe-capacity-providers --query capacityProviders[].name --region example-region

Die Ausgabe sieht ähnlich aus wie die folgende:

[
    "FARGATE",
    "FARGATE_SPOT",
    "ecs-capacityprovider-1"
]

Um einen Kapazitätsanbieter zu löschen, führen Sie den folgenden Befehl aus:

aws ecs delete-capacity-provider --capacity-provider ecs-capacityprovider-1 --region example-region

Eine Beispielausgabe und weitere Optionen finden Sie unter delete-capacity-provider.

Führen Sie den folgenden Befehl aus, um einen neuen Kapazitätsanbieter zu erstellen:

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED

Eine Beispielausgabe und weitere Optionen finden Sie unter create-capacity-provider.

Sie erhalten den Fehler: The specified Auto Scaling group ARN is already being used by another capacity provider (Der angegebene Auto-Scaling-Gruppen-ARN wird bereits von einem anderen Kapazitätsanbieter verwendet). Geben Sie einen eindeutigen ARN der Auto-Scaling-Gruppen an und versuchen Sie es erneut

Die Auto-Scaling-Gruppe und der Kapazitätsanbieter müssen eine Eins-zu-Eins-Beziehung haben. Sie können eine Auto-Scaling-Gruppe an genau einen Kapazitätsanbieter anfügen und umgekehrt. Stellen Sie daher sicher, dass Ihr Kapazitätsanbieter nur einer Auto-Scaling-Gruppe zugeordnet ist.

Sie erhalten den Fehler: The specified cluster is in a busy state (Der angegebene Cluster befindet sich in einem ausgelasteten Zustand). Cluster-Anfügungen müssen sich im Status UPDATE_COMPLETE oder UPDATE_FAILED befinden, bevor sie aktualisiert werden können. Warten Sie und versuchen Sie es erneut

Dieser Fehler wird in wenigen Minuten automatisch behoben. Sie können einige Zeit warten und dann erneut versuchen, den Kapazitätsanbieter zu aktualisieren. Sie können auch den folgenden CLI-Befehl ausführen, um den aktuellen Status der Anfügungen anzuzeigen und zu warten, bis sich die Anlage im Status UPDATE_COMPLETE befindet.

aws ecs describe-clusters --clusters example-ARN --include ATTACHMENTS --query clusters[].attachmentsStatus --region example-region

Die Ausgabe muss etwa wie folgt aussehen:

[
    "UPDATE_COMPLETE"
]

Sie erhalten Fehler aufgrund einiger Einschränkungen beim Kapazitätsanbieter

Beachten Sie beim Erstellen oder Aktualisieren eines Kapazitätsanbieters die folgenden Einschränkungen:

  • Sie können nicht mehr als sechs Kapazitätsanbieter für eine Kapazitäts-Strategie angeben.
  • Sie können entweder Kapazitätsanbieter für Auto-Scaling-Gruppen oder Kapazitätsanbieter für AWS Fargate in Ihrer Cluster-Strategie verwenden. Sie können keine Kombination aus beiden Typen verwenden.
  • Der Basiswert für die Kapazitätsanbieter-Strategie wird nur unterstützt, wenn Sie die Aufgaben ausführen.

Der Kapazitätsanbieter wurde mit CloudFormation erfolgreich erstellt, wird aber nicht in der Konsole angezeigt

Dies kann passieren, wenn Sie den Kapazitätsanbieter nicht dem Cluster in Ihrer CloudFormation-Vorlage zuordnen.

Um dieses Problem zu vermeiden, verwenden Sie den folgenden Ausschnitt in Ihrer CloudFormation-Vorlage, um den Kapazitätsanbieter dem Cluster zuzuordnen:

...
ECSCluster:
  Type: 'AWS::ECS::Cluster'
  Properties:
    ClusterName: example-cluster
    CapacityProviders:
      - !Ref ECSCapacityProvider
...