Wie behebe ich den DELETE_FAILED-Fehler beim Löschen des Kapazitätsanbieters in Amazon ECS?

Lesedauer: 4 Minute
0

Ich erhalte eine Fehlermeldung, wenn ich die AWS-Befehlszeilenschnittstelle (AWS CLI) oder eine API verwende, um einen Kapazitätsanbieter für meinen Amazon Elastic Container Service (Amazon ECS) -Cluster zu löschen.

Kurzbeschreibung

Wenn Sie versuchen, einen Kapazitätsanbieter für Ihren Cluster mithilfe der AWS-CLI oder einer API zu löschen, wird möglicherweise einer der folgenden Fehler angezeigt:

  • „updateStatus“: „DELETE_FAILED“
  • „updateStatusReason“: „Der Kapazitätsanbieter kann nicht gelöscht werden, da er mit dem Cluster: your-cluster-name verknüpft ist. Entfernen Sie den Kapazitätsanbieter aus dem Cluster und versuchen Sie es erneut.“

Diese Fehler können aus den folgenden Gründen auftreten:

  • Der Kapazitätsanbieter, den Sie zu löschen versuchen, wird in der Kapazitätsanbieterstrategie von einem Amazon ECS-Service verwendet. Mit der AWS-Managementkonsole können Sie keinen Kapazitätsanbieter löschen, der von einem Amazon ECS-Service verwendet wird. In diesem Szenario erhalten Sie die folgende Fehlermeldung: „The specified capacity provider is in use and cannot be removed“ in der Konsole. Sie können einen vorhandenen Kapazitätsanbieter nur dann von einem Cluster trennen, wenn er für keine vorhandenen Aufgaben verwendet wird. Wenn Sie den AWS CLI-Befehl DeleteCapacityProvider ausführen, wechselt der Kapazitätsanbieter in den Status DELETE\ _FAILED. Um dieses Problem zu beheben, führen Sie die Schritte im Abschnitt Prüfen Sie, ob Ihr Kapazitätsanbieter von einem Amazon ECS-Service verwendet wird, im Abschnitt Strategie für Kapazitätsanbieter aus.
  • Ihr Kapazitätsanbieter wird in der Standardstrategie verwendet. Wenn Sie bei der Ausführung einer Aufgabe oder beim Erstellen eines Dienstes keine Kapazitätsanbieterstrategie oder keinen Starttyp wählen, wird Ihrem Cluster standardmäßig eine Kapazitätsanbieterstrategie zugeordnet. Die Zuordnung erfolgt jedoch nur, wenn der Kapazitätsanbieter als Standardstrategie für den Kapazitätsanbieter für den Cluster festgelegt ist. Sie können nur die Kapazitätsanbieter löschen, die keinem Cluster zugeordnet sind. Um dieses Problem zu beheben, führen Sie die Schritte im Abschnitt Prüfen Sie, ob Ihr Kapazitätsanbieter in der Standardstrategie des Kapazitätsanbieters für den Cluster festgelegt ist, aus.

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

Behebung

Prüfen Sie in der Kapazitätsanbieterstrategie, ob Ihr Kapazitätsanbieter von einem Amazon ECS-Service genutzt wird

1.Wenn Sie mehrere Dienste in einem Cluster haben, verwenden Sie das folgende Skript, um die Dienste zu überprüfen, die den Kapazitätsanbieter verwenden.

Gehen Sie wie folgt vor, bevor Sie das Skript ausführen:

Stellen Sie die Cluster- und Kapazitätsanbieter-Parameter auf Ihre Werte ein. Stellen Sie Ihre AWS-CLI-Anmeldeinformationen auf Ihre AWS-Region ein. Installieren Sie jq von der jq-Website.

#! /bin/bash
cluster=clustername
capacityprovider=capacityprovidername
services=$(aws ecs list-services --cluster ${cluster} | jq --raw-output '.serviceArns[]')
aws ecs describe-services \
    --cluster ${cluster} \
    --services ${services} \
    | jq -r --arg capacityprovider "${capacityprovider}" \
    '.services[] | select(.capacityProviderStrategy[]?.capacityProvider == $capacityprovider) | .serviceName'

**Hinweis:**Wenn das Skript eine leere Ausgabe zurückgibt, verwendet keiner der Dienste im Cluster den Kapazitätsanbieter. Fahren Sie mit dem Abschnitt Prüfen Sie, ob Ihr Kapazitätsanbieter in der Standardstrategie für den Kapazitätsanbieter für den Cluster festgelegt ist, fort.

  1. Aktualisieren Sie die Dienste, die in der Ausgabe des Skripts zurückgegeben werden, mit einem neuen Kapazitätsanbieter.

3.Löschen Sie den alten Kapazitätsanbieter.

**Wichtig:**Sie können einen Dienst nicht mithilfe einer Kapazitätsanbieterstrategie oder eines Starttyps aktualisieren. Sie müssen den Dienst bei einem anderen Kapazitätsanbieter aktualisieren.

Prüfen Sie, ob Ihr Kapazitätsanbieter in der Standardstrategie für den Kapazitätsanbieter für den Cluster festgelegt ist

1.Führen Sie den folgenden Befehl aus, um den Standardkapazitätsanbieter für Ihren Cluster zu finden:

$ aws ecs describe-clusters --cluster mycluster | jq '.clusters[].defaultCapacityProviderStrategy'
[
  {
    "capacityProvider": "oldCP",
    "weight": 0,
    "base": 0
  }
]

2.Um den Kapazitätsanbieter zu löschen, müssen Sie die Standardstrategie für den Kapazitätsanbieter für Ihren Cluster mithilfe der Amazon ECS-Konsole oder der AWS-CLI ändern.

Mit der Amazon ECS-Konsole:

1.Öffnen Sie die Amazon ECS-Konsole.

2.Wählen Sie im Navigationsbereich Cluster und dann Ihren Cluster aus.

3.Wählen Sie Cluster aktualisieren.

Mithilfe der AWS-CLI:

$ aws ecs put-cluster-capacity-providers \
     --cluster mycluster \
     --capacity-providers newCP \
     --default-capacity-provider-strategy capacityProvider=newCP \
     --region us-east-1

$ aws ecs delete-capacity-provider --capacity-provider oldCP

$ aws ecs describe-capacity-providers --capacity-provider oldCP

**Hinweis:**Ersetzen Sie im vorherigen Codebeispiel mycluster durch Ihren Cluster. Ersetzen Sie newCP durch den neuen Kapazitätsanbieter, den Sie hinzufügen möchten. Ersetzen Sie oldCP durch den Kapazitätsanbieter, den Sie löschen möchten.

4.Löschen Sie den alten Kapazitätsanbieter.

Alle vorhandenen Kapazitätsanbieter, die einem Cluster zugeordnet sind und im API-Aufruf PutClusterCapacityProviders weggelassen wurden, werden vom Cluster getrennt. Dieselben Regeln gelten für die Standardstrategie des Clusters für Kapazitätsanbieter.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren