Salta al contenuto

Come posso risolvere i problemi relativi ai vincoli di posizionamento di attività Amazon ECS?

5 minuti di lettura
0

Desidero utilizzare i vincoli di posizionamento delle attività per eseguire attività su Amazon Elastic Container Service (Amazon ECS). Tuttavia, le attività rimangono bloccate nello stato IN SOSPESO e non vengono avviate.

Breve descrizione

Se si configurano vincoli di posizionamento dell’attività nella definizione dell'attività, nell'attività o nel servizio, è necessario disporre di un'istanza di container che corrisponda ai relativi attributi. In caso contrario, le attività rimangono bloccate nello stato IN SOSPESO o non vengono avviate e viene visualizzato uno dei seguenti errori:

  • service (service-name) was unable to place a task because no container instance met all of its requirements. The closest matching Container instance ( a1b2c3d4-5678-90ab-cdef-11111EXAMPLE ) is missing a required attribute.
  • TaskFailedToStart: MemberOf placement constraint unsatisfied.
  • TaskFailedToStart: ATTRIBUTE

Risoluzione

Nota: se ricevi errori durante l’esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per risolvere i problemi relativi ai vincoli di posizionamento delle attività, controlla innanzitutto gli attributi specificati nel vincolo di posizionamento dell'attività. Quindi assicurati che le istanze di container abbiano gli attributi richiesti.

Controlla i vincoli di posizionamento dell’attività specificati solo nella definizione dell'attività

Se utilizzi i vincoli di posizionamento dell’attività solo nella definizione dell'attività, esegui il comando seguente per verificare se alle istanze di container mancano gli attributi:

ecs-cli check-attributes --task-def example-task-def --cluster example-cluster --region region-code --container-instances example-container-instance-id

Nota: sostituisci example-task-def con la tua definizione dell'attività, example-cluster con il nome del tuo cluster, region-code con la tua regione AWS e example-container-instance-id con l'ID della tua istanza di container.

Per ulteriori informazioni, consulta Checking for missing attributes and debugging reason attribute errors (Verifica degli attributi mancanti e risoluzione degli errori relativi agli attributi) sul sito web di GitHub.

Controlla i vincoli di posizionamento dell’attività specificati nella definizione dell'attività, nel servizio o nell'attività

Per verificare i vincoli di posizionamento nella definizione dell'attività, completa i seguenti passaggi:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, seleziona Definizioni di attività.
  3. Scegli la definizione dell'attività, quindi seleziona la revisione della definizione dell'attività.
  4. Scegli Posizionamento delle attività.

Per verificare i vincoli di posizionamento specificati per il servizio, completa i seguenti passaggi:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, scegliCluster.
  3. Nella pagina Cluster, scegli il tuo cluster.
  4. In Servizi, scegli il tuo servizio.
  5. Seleziona Configurazione e rete, quindi scegli Strategia e vincoli di posizionamento delle attività.

Per verificare il vincolo di posizionamento specificato per una determinata attività, esegui il seguente comando AWS CLI describe-tasks:

    aws ecs describe-tasks  --cluster example-cluster --region region-code
    --tasks task-id

Nota: sostituisci example-cluster con il nome del tuo cluster, region-code con la tua regione e task-id con l’ID della tua attività. Nell'output del comando, controlla il valore placementConstraints.

Assicurati che le istanze di container abbiano gli attributi richiesti

Utilizza la console Amazon ECS o l'interfaccia della linea di comando AWS per controllare gli attributi dell'istanza di container.

Console Amazon ECS

Completa i seguenti passaggi:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, scegliCluster.
  3. Nella pagina Cluster, scegli il tuo cluster.
  4. Scegli la scheda Infrastruttura.
  5. In Istanze di container, seleziona la tua istanza di container.
  6. Scegli Operazioni, quindi seleziona Visualizza/modifica attributi.
  7. Assicurati che l'istanza di container abbia gli attributi richiesti specificati nel vincolo di posizionamento.

Interfaccia della linea di comando AWS

Esegui il seguente comando describe-container-instances:

aws ecs describe-container-instances --cluster example-cluster --region region-code
--container-instances example-container-instance-id

Nota: sostituisci example-cluster con il nome del tuo cluster, region-code con la tua regione e example-container-instance-id con l'ID della tua istanza di container.

Per visualizzare tutte le istanze di container con un attributo specifico, esegui il comando list-container-instances:

aws ecs list-container-instances --cluster example-cluster --region region-code --filter "attribute:ecs.instance-type == t2.micro"

Nota: sostituisci example-cluster con il nome del tuo cluster, region-code con la tua regione e attribute:ecs.instance-type == t2.micro con il tuo attributo. Il comando precedente elenca tutte le istanze di container nel cluster che hanno un tipo di istanza t2.micro.

Per utilizzare l'interfaccia della linea di comando AWS per aggiungere o aggiornare un attributo per un'istanza di container, esegui il seguente comando put-attributes:

aws ecs put-attributes \
    --cluster example-cluster \
    --region region-code \
    --attributes name=stack,value=production,targetId=example-container-instance-id

Nota: sostituisci example-cluster con il nome del tuo cluster, region-code con la tua regione e example-container-instance-id con l'ID della tua istanza di container. Aggiungi i tuoi attributi all'opzione --attributes. L’esempio di comando precedente aggiunge il nome dello stack e il valore produzione all'istanza di container.

(Facoltativo) Aggiorna il vincolo di posizionamento dell’attività

Se i vincoli di posizionamento dell’attività sono errati o troppo restrittivi, aggiornali nella definizione dell’attività o nel servizio. Oppure esegui il seguente comando register-task-definition per creare una nuova revisione della definizione dell'attività:

aws ecs register-task-definition \
    --cli-input-json file://jsonfilepath/filename.json

Nota: sostituisci jsonfilepath.filename.json con il JSON di definizione dell'attività.

Per aggiornare i vincoli di posizionamento di un'attività autonoma, esegui il seguente comando run-task:

aws ecs run-task \
    --cluster clustername \
    --placement-constraints exampleconstraints

Nota: sostituisci ** clustername** con il nome del tuo cluster e exampleconstraints con i tuoi vincoli di posizionamento.

AWS UFFICIALEAggiornata 2 anni fa