Come posso risolvere l'errore DELETE_FAILED quando elimino il provider di capacità in Amazon ECS?

5 minuti di lettura
0

Ricevo un errore quando utilizzo l'Interfaccia della linea di comando AWS (AWS CLI) o un'API per eliminare un provider di capacità per il mio cluster Amazon Elastic Container Service (Amazon ECS).

Breve descrizione

Se provi a eliminare un provider di capacità per il tuo cluster utilizzando AWS CLI o un'API, potresti ricevere uno dei seguenti errori:

  • "updateStatus": "DELETE_FAILED"
  • "updateStatusReason": "Il provider di capacità non può essere eliminato perché è associato al cluster: your-cluster-name. Rimuovi il provider di capacità dal cluster e riprova."

Potresti ricevere questi errori per i seguenti motivi:

  • Il provider di capacità che stai cercando di eliminare è utilizzato da un servizio Amazon ECS nella ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-capacity-providers.html)strategia del provider di capacità[. La Console di gestione AWS non consente di eliminare un provider di capacità utilizzato da un servizio Amazon ECS. In questo scenario, viene visualizzato il seguente messaggio di errore: "Il provider di capacità specificato è in uso e non può essere rimosso" nella console. È possibile dissociare un provider di capacità esistente da un cluster solo se non è utilizzato da attività esistenti. Se esegui il comando di AWS CLI DeleteCapacityProvider, il provider di capacità passa allo stato DELETE_FAILED. Per risolvere questo problema, completa i passaggi indicati nella sezione Verifica se il tuo provider di capacità è utilizzato da un servizio Amazon ECS nella strategia del provider di capacità.
  • Il tuo provider di capacità viene utilizzato secondo la strategia predefinita. Se non si sceglie una strategia del provider di capacità o un tipo di avvio quando si esegue un'attività o si crea un servizio, viene associata per impostazione predefinita al cluster una strategia del provider di capacità. Tuttavia, l'associazione avviene solo se il provider di capacità è impostato come strategia del provider di capacità predefinita per il cluster. Puoi eliminare solo i provider di capacità che non sono associati a un cluster. Per risolvere questo problema, completa i passaggi indicati nella sezione Verifica se il tuo provider di capacità è impostato nella strategia del provider di capacità predefinita per il cluster..

Nota: in caso di errori durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Risoluzione

Verifica se il tuo provider di capacità è utilizzato da un servizio Amazon ECS nella strategia del provider di capacità

1.    Se disponi di più servizi in un cluster, utilizza il seguente script per verificare i servizi che utilizzano il provider di capacità.

Prima di eseguire lo script, effettua le seguenti operazioni:

Imposta i parametri del cluster e del provider di capacità sui tuoi valori. Imposta le credenziali di AWS CLI nella tua regione AWS. Installa jq dal sito web jq.

#! /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'

Nota: se lo script restituisce un output vuoto, nessuno dei servizi del cluster utilizza il provider di capacità. Passa alla sezione Verifica se il tuo provider di capacità è impostato nella strategia del provider di capacità predefinita per il cluster.

2.    Aggiorna i servizi restituiti nell'output dello script con un nuovo provider di capacità.

3.    Elimina il vecchio provider di capacità.

Importante: non è possibile aggiornare un servizio utilizzando una strategia o un tipo di avvio di un provider di capacità. È necessario aggiornare il servizio con un altro provider di capacità.

Verifica se il tuo provider di capacità è impostato nella strategia del provider di capacità predefinita per il cluster

1.    Per trovare il provider di capacità predefinito per il tuo cluster, esegui il comando seguente:

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

2.    Per eliminare il provider di capacità, devi modificare la strategia predefinita di provider di capacità per il tuo cluster utilizzando la console Amazon ECS o AWS CLI.

Utilizzando la console Amazon ECS:

1.    Apri la console Amazon ECS.

2.    Nel pannello di navigazione, scegli Cluster, quindi scegli il tuo cluster.

3.    Scegli Aggiorna cluster.

Utilizzo di 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

Nota: nell'esempio di codice precedente, sostituisci mycluster con il tuo cluster. Sostituisci newCP con il nuovo provider di capacità che desideri aggiungere. Sostituisci oldCP con il provider di capacità che desideri eliminare.

4.    Elimina il vecchio provider di capacità.

Tutti i provider di capacità esistenti associati a un cluster che sono omessi dalla chiamata API PutClusterCapacityProviders vengono dissociati dal cluster. Le stesse regole si applicano alla strategia predefinita di provider di capacità del cluster.


AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa