Come posso risolvere gli errori quando elimino un provider di capacità in Amazon ECS?

6 minuti di lettura
0

Ricevo un errore quando tento di eliminare un provider di capacità per il mio cluster Amazon Elastic Container Service (Amazon ECS).

Breve descrizione

Se hai utilizzato il comando dell’interfaccia della linea di comando AWS (AWS CLI) delete-capacity-provider o l'API ](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteCapacityProvider.html)DeleteCapacityProvider[, potresti ricevere uno dei seguenti errori:

"updateStatus": "DELETE_FAILED"

-oppure-

"updateStatusReason": "The capacity provider cannot be deleted because it is associated with cluster: Cluster Name. Remove the capacity provider from the cluster and try again."

Se hai utilizzato la Console di gestione AWS per eliminare un provider di capacità, potresti ricevere il seguente errore:

"There was an error deleting capacity provider Capacity Provider Name. The specified capacity provider is in use and cannot be removed"

Non puoi eliminare un provider di capacità associato a un cluster. Per risolvere i problemi di eliminazione, devi rimuovere il provider di capacità dal cluster o eliminare il cluster. Dopodiché elimina il provider di capacità.

Nota: se elimini un gruppo Amazon EC2 Auto Scaling, il relativo provider di capacità passa allo stato INATTIVO. Non è consigliabile utilizzare provider di capacità nello stato INATTIVO perché potrebbero essere rimossi automaticamente in qualsiasi momento.

Risoluzione

Nota: se ricevi messaggi di errore quando esegui i comandi AWS CLI, consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI. Per la formattazione, installa jq da Download jq sul sito web di jq.

Individua i provider di capacità associati al tuo cluster

Per individuare tutti i provider di capacità associati a un cluster Amazon ECS, utilizza la console Amazon ECS o l'interfaccia della linea di comando AWS.

Console Amazon ECS

Completa i seguenti passaggi:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, scegliCluster.
  3. Seleziona il cluster.
  4. Scegli la scheda Infrastruttura.
  5. Scegli Provider di capacità.

AWS CLI

Esegui il seguente comando describe-clusters:

aws ecs describe-clusters --cluster your-cluster-name | jq '.clusters[].capacityProviders'

Nota: sostituisci your_cluster_name con il nome del tuo cluster.

Assicurati che Amazon ECS non utilizzi il provider di capacità nella strategia del provider di capacità

Per visualizzare i servizi che utilizzano il provider di capacità, esegui il seguente script:

#!/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: sostituisci ClusterName con il nome del tuo cluster e CapacityProviderName con il nome del tuo provider di capacità. Se lo script restituisce un output vuoto, nessuno dei servizi del cluster utilizza il provider di capacità. In tal caso, passa alla sezione Verifica se il provider di capacità è impostato nella strategia predefinita del provider di capacità per il cluster.

Prima di poter eliminare un provider di capacità esistente in uso, devi aggiornare Amazon ECS per utilizzare un nuovo provider di capacità. Utilizza la console Amazon ECS o l'interfaccia della linea di comando AWS. Quando aggiorni il servizio, utilizza Forza una nuova distribuzione per trasferire attività che utilizzano la capacità delle istanze Amazon Elastic Compute Cloud (Amazon EC2) tra provider.

Per utilizzare l'interfaccia della linea di comando di AWS per aggiornare il provider di capacità, completa i seguenti passaggi:

  1. Esegui il seguente comando describe-services per visualizzare la strategia del provider di capacità esistente per il servizio:

    aws ecs describe-services --cluster my-cluster --services my-service

    Nota: sostituisci my-cluster con il nome del tuo cluster e my-service con il nome del tuo servizio.

  2. Crea una nuova strategia del provider di capacità che escluda il provider di capacità che desideri rimuovere. Assicurati che il peso totale per i provider di capacità rimanenti sia 100.

  3. Esegui il seguente comando update-service per aggiornare il servizio:

    aws ecs update-service \
      --cluster your-cluster-name \
      --service your-service-name \
      --capacity-provider-strategy capacityProvider=remaining-provider,weight=100 \
      --force-new-deployment

    Nota: sostituisci your-cluster-name con il nome del tuo cluster e your-service-name con il nome del tuo servizio. Inoltre, sostituisci remaining-provider con il nome del nuovo provider di capacità.

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

Per trovare la strategia predefinita del provider di capacità per il cluster, esegui il seguente comando describe-clusters:

aws ecs describe-clusters --cluster mycluster | jq '.clusters[].defaultCapacityProviderStrategy'

Se il provider di capacità che desideri eliminare è presente nell'output del comando, è necessario modificare la strategia predefinita del provider di capacità. Puoi utilizzare la console Amazon ECS o l'interfaccia della linea di comando di AWS.

Console Amazon ECS

Completa i seguenti passaggi:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, scegliCluster.
  3. Seleziona il cluster.
  4. Scegli Aggiorna cluster.
  5. In Configurazione del cluster, per Strategia predefinita del provider di capacità, scegli Rimuovi per il provider di capacità.
  6. Seleziona Aggiorna.

AWS CLI

Esegui il seguente comando put-cluster-capacity-providers:

aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers [] --default-capacity-provider-strategy []

Nota: sostituisci ClusterName con il nome del tuo cluster.

Sostituisci il provider di capacità precedente con un nuovo provider di capacità prima di eliminarlo. Per sostituire il provider di capacità, esegui il seguente comando put-cluster-capacity-provider:

aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers UpdatedCapacityProvider --default-capacity-provider-strategy capacityProvider=UpdatedCapacityProvider --region RegionName

Nota: sostituisci ClusterName con il nome del tuo cluster, UpdatedCapacityProvider con il nuovo provider di capacità e RegionName con la tua regione AWS.

Quando esegui il comando put-cluster-capacity-providers, devi includere tutti i provider di capacità che desideri mantenere nel cluster. Se non includi un provider di capacità, Amazon ECS dissocia il provider di capacità dal cluster.

Elimina il provider di capacità

Per eliminare il provider di capacità, esegui il seguente comando delete-capacity-provider:

aws ecs delete-capacity-provider --capacity-provider PreviousCapacityProvider

Nota: sostituisci PreviousCapacityProvider con l'ARN del provider di capacità che desideri eliminare.

Per verificare che il provider di capacità sia eliminato, esegui il seguente comando describe-capacity-providers:

aws ecs describe-capacity-providers --capacity-provider PreviousCapacityProvider

Nota: sostituisci PreviousCapacityProvider con l'ARN del provider di capacità che hai eliminato.

Nell'output del comando, verifica che lo stato del provider di capacità sia ** INATTIVO**.

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 mesi fa