Come posso risolvere i problemi durante la configurazione di un nuovo fornitore di capacità o l'aggiornamento di un fornitore di capacità esistente per il mio cluster Amazon ECS?

Ultimo aggiornamento: 13/04/2022

Riscontro problemi quando provo a configurare un nuovo fornitore di capacità o ad aggiornare un fornitore di capacità esistente per il mio cluster Amazon Elastic Container Service (Amazon ECS).

Breve descrizione

Alcuni dei problemi più comuni che si verificano quando configuri un nuovo fornitore di capacità o aggiorni un fornitore di capacità esistente per il cluster Amazon ECS sono i seguenti:

  • Si verificano errori quando crei un fornitore di capacità del gruppo Auto Scaling utilizzando AWS Command Line Interface (AWS CLI).
  • Viene visualizzato l'errore: The specified capacity provider already exists. To change the configuration of an existing capacity provider, update the capacity provider. (Il fornitore di capacità specificato esiste già. Per modificare la configurazione di un fornitore di capacità esistente, aggiorna il fornitore di capacità.)
  • Viene visualizzato l'errore: The specified Auto Scaling group ARN is already being used by another capacity provider. Specify a unique Auto Scaling group ARN and try again. (L'ARN del gruppo Auto Scaling specificato è già in uso da un altro fornitore di capacità. Specifica un ARN di gruppo Auto Scaling univoco e riprova.)
  • Quando crei la strategia del fornitore di capacità, viene visualizzato l'errore: The specified cluster is in a busy state. Cluster attachments must be in UPDATE_COMPLETE or UPDATE_FAILED state before they can be updated. Wait and try again. (Il cluster specificato è occupato. Gli elementi collegati al cluster devono essere nello stato UPDATE_COMPLETE o UPDATE_FAILED prima di poter essere aggiornati. Aspetta e riprova.)
  • Si verificano degli errori a causa di alcune limitazioni con il fornitore di capacità.
  • Il fornitore di capacità è stato creato con successo tramite AWS CloudFormation, ma non viene mostrato nella console.

Risoluzione

Si verificano degli errori quando crei un fornitore di capacità del gruppo Auto Scaling utilizzando AWS CLI

Per risolvere questo problema quando crei un fornitore di capacità utilizzando AWS CLI, esamina gli eventi di AWS CloudTrail per verificare la presenza dell'API CreateCapacityProvider. Di seguito sono riportati alcuni degli errori che potresti riscontrare con l'API CapacityProvider:

  • ClientException: questi errori sono generalmente causati da un'operazione del client. Questa operazione del client potrebbe utilizzare un'operazione o una risorsa per conto di un utente AWS Identity and Access Management (IAM) che non dispone delle autorizzazioni richieste per l'utilizzo della stessa. Questo errore potrebbe anche specificare un identificatore non valido.
  • UpdateInProgressException: questo errore viene visualizzato perché è già in corso un aggiornamento dell'agente container Amazon ECS sull'istanza di container specificata. Se l'agente container viene disconnesso mentre si trova in una fase di transizione, ad esempio PENDING o STAGING, il processo di aggiornamento potrebbe bloccarsi in quello stato. Tuttavia, quando l'agente si riconnette, riprende dal punto in cui si era fermato in precedenza.

Per maggiori informazioni, consulta la sezione Errori.

Nota: se ricevi un messaggio di errore durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Viene visualizzato l'errore: The specified capacity provider already exists. To change the configuration of an existing capacity provider, update the capacity provider (Il fornitore di capacità specificato esiste già. Per modificare la configurazione di un fornitore di capacità esistente, aggiorna il fornitore di capacità)

Quando crei il fornitore di capacità, utilizza un nome diverso da quelli dei fornitori di capacità utilizzati in precedenza. In alternativa, puoi eliminare il fornitore di capacità esistente con tale nome e quindi creare un nuovo fornitore di capacità.

Per visualizzare un elenco di tutti i fornitori di capacità creati, esegui il seguente comando:

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

Dovresti visualizzare un output simile al seguente:

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

Per eliminare un provider di capacità, esegui il seguente comando:

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

Per l'output di esempio e altre opzioni, consulta delete-capacity-provider.

Per creare un nuovo fornitore di capacità, esegui il seguente comando:

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

Per l'output di esempio e altre opzioni, consulta create-capacity-provider.

Viene visualizzato l'errore: The specified Auto Scaling group ARN is already being used by another capacity provider. Specify a unique Auto Scaling group ARN and try again (L'ARN del gruppo Auto Scaling specificato è già in uso da un altro fornitore di capacità. Specifica un ARN di gruppo Auto Scaling univoco e riprova)

Il gruppo Auto Scaling e il fornitore di capacità devono avere una relazione univoca. È possibile collegare un gruppo Auto Scaling a un solo fornitore di capacità e viceversa. Pertanto, verifica che il fornitore di capacità sia associato a un solo gruppo Auto Scaling.

Viene visualizzato l'errore: The specified cluster is in a busy state. Cluster attachments must be in UPDATE_COMPLETE or UPDATE_FAILED state before they can be updated. Wait and try again (Il cluster specificato è occupato. Gli elementi collegati al cluster devono essere nello stato UPDATE_COMPLETE o UPDATE_FAILED prima di poter essere aggiornati. Aspetta e riprova.)

Questo errore si risolve automaticamente in pochi minuti. Attendi qualche istante, quindi riprova ad aggiornare il fornitore di capacità. Inoltre, puoi eseguire il seguente comando della CLI per visualizzare lo stato corrente degli elementi collegati e attendere che l'elemento collegato sia nello stato UPDATE_COMPLETE.

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

L'output deve essere simile al seguente:

[
    "UPDATE_COMPLETE"
]

Si verificano degli errori a causa di alcune limitazioni con il fornitore di capacità

Quando crei o aggiorni un fornitore di capacità, tieni presenti le seguenti limitazioni:

  • Non è possibile specificare più di sei fornitori di capacità per una strategia di capacità.
  • In una strategia di cluster è possibile utilizzare i fornitori di capacità di gruppo Auto Scaling o i fornitori di capacità di AWS Fargate. Non è possibile utilizzare una combinazione di entrambi i tipi.
  • Il valore di base per la strategia del fornitore di capacità è supportato solo quando esegui le attività.

Il fornitore di capacità è stato creato con successo con CloudFormation, ma non viene mostrato nella console

Ciò può accadere quando non il fornitore di capacità non è stato associato al cluster nel modello CloudFormation.

Per evitare questo problema, utilizza il seguente frammento nel modello CloudFormation per associare il fornitore di capacità al cluster:

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