Come posso risolvere gli errori più comuni relativi alle chiamate API in Amazon ECS?
Desidero risolvere gli errori più comuni relativi alle chiamate API in Amazon Elastic Container Service (Amazon ECS).
Breve descrizione
I seguenti errori possono causare l'esito negativo di una chiamata API in Amazon ECS:
- "AccessDeniedException"
- "ClientException"
- "ClusterNotFoundException"
- "InvalidParameterException"
- "ServerException"
- "ServiceNotActiveException"
- "PlatformTaskDefinitionIncompatibilityException"
- "PlatformUnknownException"
- "ServiceNotFoundException"
- "UnsupportedFeatureException"
Anche le applicazioni eseguite all'interno delle attività Amazon ECS possono causare l'esito negativo di una chiamata API Amazon ECS.
Risoluzione
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Individua l'errore di una chiamata API
Quando si verifica un'attività in Amazon ECS, AWS CloudTrail registra la richiesta API come evento nella Cronologia degli eventi.
Per visualizzare la cronologia degli eventi di AWS CloudTrail e individuare l'errore dell'API, completa i seguenti passaggi:
- Apri la console CloudTrail.
- Nel pannello di navigazione, scegli Cronologia degli eventi.
- Scegli l'icona a forma di ingranaggio.
- Alla voce Seleziona colonne visibili, scegli Codice di errore. Quindi scegli Conferma.
- Nella pagina Cronologia degli eventi, alla voce Attributi di ricerca, scegli Nome evento.
- In Specifica un nome per l’evento, inserisci l'operazione che ha avuto esito negativo.
Nota: se non conosci il nome dell'evento, vai alla pagina Cronologia degli eventi. In Attributi di ricerca, scegli Origine evento. Per Specifica un'origine eventi, seleziona ecs.amazonaws.com per filtrare tutti gli eventi relativi al servizio ECS. - Nell'elenco dei risultati, seleziona gli eventi con codici di errore di cui desideri saperne di più.
Nota: puoi anche utilizzare Amazon Athena per eseguire query sui log di CloudTrail in base al codice di errore (errorcode) degli eventi.
Risolvi l'errore di una chiamata API
Intraprendi le seguenti azioni in base al codice di errore che hai ricevuto.
AccessDeniedException
Se l'utente o il ruolo AWS Identity and Access Management (AWS IAM) non ha le autorizzazioni richieste, ricevi un errore "AccessDeniedException". Il seguente esempio di errore indica che l'utente arn:aws:sts::123456789012:assumed-role/test-role/test-session non ha le autorizzazioni necessarie per eseguire l'operazione CreateCluster:
"An error occurred (AccessDeniedException) when calling the CreateCluster operation: User: arn:aws:sts::123456789012:assumed-role/test-role/test-session is not authorized to perform: CreateCluster on resource: * because no identity-based policy allows the ecs:CreateCluster action"
Per aggiungere l'autorizzazione appropriata alla policy delle autorizzazioni dell'identità IAM, completa i seguenti passaggi:
- Apri la console IAM.
- Nel pannello di navigazione, scegli Ruoli, Gruppi di utenti o Utenti in base all'identità IAM.
- Utilizza il filtro di ricerca per filtrare le opzioni relative al ruolo o all'utente. Quindi seleziona l'identità IAM che desideri visualizzare.
- Scegli la scheda Autorizzazioni.
- Per visualizzare le autorizzazioni associate all'identità IAM, espandi la policy delle autorizzazioni.
- Nella policy delle autorizzazioni, aggiungi ecs:your-event-name all'elenco Operazioni. Quindi seleziona Consenti per Effetto. Oppure crea una nuova policy che consenta ecs:your-event-name e collega la policy al ruolo o all'utente IAM. Per ulteriori informazioni, consulta Modificare le policy IAM.
Puoi utilizzare il simulatore di policy IAM per testare una policy che non è associata a un utente, a un gruppo di utenti o a un ruolo IAM.
ClientException
Se il client ECS specifica un identificatore o una risorsa che non è valido o non esiste, ricevi un errore "ClientException". Il seguente esempio di errore indica che il comando RunTask fa riferimento a una definizione dell'attività (TaskDefinition) non valida:
"An error occurred (ClientException) when calling the RunTask operation: TaskDefinition not found."
Verifica di fare riferimento alle risorse corrette nel comando, nelle chiamate API e nel codice.
ClusterNotFoundException
Se Amazon ECS non riesce a trovare il cluster specificato per un'operazione, ricevi un errore "ClusterNotFoundException". Il seguente esempio di errore indica che Amazon ECS non riesce a trovare il cluster specificato per l'operazione StartTask:
"An error occurred (ClusterNotFoundException) when calling the StartTask operation: Cluster not found."
Verifica di fare riferimento al nome del cluster corretto nel comando, nelle chiamate API e nel codice.
Per elencare tutti i cluster ECS correnti, esegui il comando AWS CLI list-clusters:
aws ecs list-clusters --region example_region
Nota: sostituisci example_region con la tua Regione AWS.
Quindi verifica che il cluster a cui fai riferimento nella chiamata API esista.
InvalidParameterException
Se un parametro immesso in un comando non è valido e la versione della definizione dell'attività non esiste, ricevi il seguente errore:
"An error occurred (InvalidParameterException) when calling the RunTask operation: TaskDefinition not found."
Il seguente esempio di comando RunTask include una definizione dell'attività CentOS:3 che non esiste:
aws ecs run-task --task-definition CentOS:3 --cluster example_cluster --region ap-southeast-2
Nota: Nell'esempio precedente, sostituisci example_cluster con il nome del tuo cluster.
Il seguente esempio di errore corrisponde al precedente comando RunTask:
"An error occurred (InvalidParameterException) when calling the RunTask operation: TaskDefinition not found."
Verifica che i parametri del comando siano validi.
ServerException
Se un server è inattivo quando effettui una chiamata API, ricevi un errore "ServerException". Se ricevi questo errore per tutte le chiamate API, il servizio AWS non è disponibile.
Gli errori ServerException sono spesso temporanei. Attendi, quindi esegui nuovamente la chiamata API. Se il problema persiste, contatta il Supporto AWS e fornisci le seguenti informazioni:
- Fornisci il timestamp che corrisponde all'errore.
- Se utilizzi la riga di comando, fornisci il comando che restituisce l'errore.
- Se utilizzi un linguaggio di programmazione o un'infrastruttura come strumenti di codice che utilizzano AWS SDK, fornisci il blocco di codice che restituisce l'errore.
- Se utilizzi la Console di gestione AWS, fornisci l'URL della pagina della Console di gestione AWS e l'operazione che restituisce l'errore.
ServiceNotActiveException
Se aggiorni un servizio Amazon ECS inattivo, ricevi un errore "ServiceNotActiveException". Verifica che il servizio ECS che desideri aggiornare sia nel cluster ECS e nello stato ACTIVE (Attivo).
Per elencare tutti i servizi in un cluster, esegui il comando AWS CLI list-clusters:
aws ecs list-services --cluster example_cluster
Nota: sostituisci example_cluster con il nome del tuo cluster.
Verifica che l'output del comando contenga il servizio che desideri aggiornare. Quindi esegui il comando describe-services per verificare che il servizio sia nello stato ACTIVE (Attivo):
aws ecs describe-services --services example_service_name --cluster example_cluster
Nota: sostituisci example_service_name e example_cluster con i tuoi valori.
Il seguente esempio di output indica che example-service è nello stato ACTIVE (Attivo):
{ "services": [{ "serviceArn": "arn:aws:ecs:ap-southeast-2:111122223333:service/my-cluster/example-service", "serviceName": "example-service", "clusterArn": "arn:aws:ecs:ap-southeast-2:111122223333:cluster/example-cluster", "loadBalancers": [], "serviceRegistries": [], "status": "ACTIVE", ...... }] }
Se il servizio non è nello stato ACTIVE (Attivo, verifica che il valore Numero di attività del servizio Amazon ECS sia maggiore di zero. Puoi anche eseguire il comando AWS CLI update-service per aggiornare il valore Numero di attività a 1:
aws ecs update-service --cluster example_cluster_name --service example_service_name --desired-count 1
Nota: sostituisci example_cluster_name e example_service_name con i tuoi valori. Puoi impostare il conteggio desiderato su un numero maggiore di zero.
Quindi, nella console ECS, verifica che lo stato della definizione dell'attività sia ATTIVO. Puoi anche eseguire il comando describe-task-definition:
aws ecs describe-task-definition --task-definition example_taskdefinition
Nota: sostituisci example_taskdefinition con la tua definizione dell'attività.
Controlla i log di CloudWatch per individuare eventuali errori del servizio o problemi di rete che corrispondono all'errore ServiceNotActiveException.
PlatformTaskDefinitionIncompatibilityException
Se avvii un'attività su una piattaforma che non soddisfa le funzionalità richieste dalla definizione dell'attività, ricevi un errore "PlatformTaskDefinitionIncompatibilityException". Nel seguente esempio di errore, la versione 1.3.0 della piattaforma non supporta i requisiti del comando AWS CLI create-service:
"An error occurred (PlatformTaskDefinitionIncompatibilityException) when calling the CreateService operation: One or more of the requested capabilities are not supported."
Il seguente esempio di comando create-service crea un servizio con un volume Amazon Elastic File System (Amazon EFS) collegato alla versione 1.3.0 della piattaforma:
aws ecs create-service \ --cluster example_cluster \ --task-definition example_taskdefinition \ --launch-type FARGATE \ --service-name example_service \ --desired-count 1 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ed7d31b5,subnet-833ef1cb],securityGroups=[sg-eeb28aa1]}" \ --platform-version 1.3.0
Verifica che la versione della piattaforma AWS Fargate supporti le funzionalità richieste dalla definizione delle attività.
PlatformUnknownException
Se specifichi una versione della piattaforma sconosciuta o errata quando avvii un'attività, ricevi un errore "PlatformUnknownException". Il seguente esempio di errore indica che la versione della piattaforma specificata in un'operazione di creazione del servizio non è corretta:
"An error occurred (PlatformUnknownException) when calling the CreateService operation: The specified platform does not exist."
Il seguente esempio di comando create-service contiene la versione 1.3 della piattaforma. che è errata, poiché la versione corretta è 1.3.0:
aws ecs create-service \ --cluster example_cluster\ --task-definition example_taskdefinition \ --launch-type FARGATE\ --enable-execute-command \ --service-name example_service\ --desired-count 1 \ --network-configuration="awsvpcConfiguration={subnets=["subnet-ed7d31b5","subnet-833ef1cb"],securityGroups=["sg-eeb28aa1"]}"\ --platform-version 1.3
Verifica che la versione della piattaforma specificata all'avvio di un'attività sia corretta. Per ulteriori informazioni, consulta Versioni della piattaforma Fargate per Amazon ECS (Linux) e Log delle modifiche della versione della piattaforma Fargate Windows.
ServiceNotFoundException
L'errore "ServiceNotFoundException" si verifica quando il servizio ECS specificato non esiste nel comando o nel codice. Verifica che il nome del servizio nel comando o nel codice sia corretto, quindi controlla che il servizio sia nel cluster. Per visualizzare tutti i servizi nel cluster, esegui il comando AWS CLI list-clusters:
aws ecs list-services --cluster example_cluster
Nota: sostituisci example_cluster con il tuo cluster.
UnsupportedFeatureException
L'errore "UnsupportedFeatureException" si verifica quando avvii un'attività Fargate in una Regione AWS in cui Fargate non supporta il container. Per ulteriori informazioni, consulta Regioni supportate per Amazon ECS su AWS Fargate.
Risolvi i problemi relativi alle API nelle applicazioni
Quando accedi a un'applicazione ospitata all'interno di un'attività ECS, puoi ricevere le seguenti risposte comuni con codice di stato HTTP 5##:
- Un errore "HTTP 500 - Internal server" si verifica se l'applicazione incontra una condizione imprevista, ad esempio un errore, oppure se configuri erroneamente l'applicazione.
- Un errore "HTTP 503 - Service unavailable" si verifica se un'attività ECS presenta un carico di lavoro elevato, oppure se l'applicazione all'interno dell'attività è inattiva per manutenzione.
Analizza i log dell'applicazione per le attività ECS in Amazon CloudWatch Logs. Ogni definizione dell'attività corrisponde a un flusso di log che contiene il log dell'applicazione generato dall'attività. Per visualizzare informazioni sul gruppo di log e sul flusso di log della definizione dell'attività, esegui il comando describe-task-definition:
aws ecs describe-task-definition --task-definition example_taskdefinition
Nota: sostituisci example_task_definition con la tua definizione dell'attività.
Informazioni correlate
- Argomenti
- Containers
- Lingua
- Italiano
Video correlati


Contenuto pertinente
AWS UFFICIALEAggiornata 2 anni fa