Come posso risolvere gli errori 5xx di Gateway Amazon API?

Ultimo aggiornamento: 22/09/2022

Quando richiamo la mia API di Gateway Amazon API, ricevo un errore 5xx. Come posso risolvere gli errori 5xx di Gateway API?

Breve descrizione

I codici di risposta HTTP 5xx indicano errori del server. Gli errori 5xx di Gateway API includono:

  • 500 server interno
  • 502 gateway difettoso
  • 503 servizio non disponibile
  • 504 timeout della richiesta di endpoint

Risoluzione

Prima di iniziare, segui i passaggi per attivare i file di log Amazon CloudWatch per la risoluzione degli errori di Gateway API.

Puoi utilizzare i file di log Amazon CloudWatch per trovare gli errori 5xx da Gateway API. La metrica 5XXError di Gateway Amazon API conta il numero di errori lato server acquisiti in un determinato periodo.

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Errore 500: errore interno del server

Questo errore potrebbe essere dovuto a:

  • Errori nel codice della funzione AWS Lambda.
  • Autorizzazioni mancanti per l'utilizzo di una variabile di fase.
  • Mappatura del codice di stato HTTP errata o mancante.
  • Problemi di limitazione (della larghezza di banda della rete).
  • Il metodo POST di HTTP non è definito.
  • Autorizzazioni Lambda.
  • Problemi con il formato JSON della funzione Lambda.
  • La dimensione del payload del backend ha superato i 10 MB.
  • Integrazione di endpoint privati.

Errori nel codice della funzione Lambda

Gli errori 500 degli endpoint API che si integrano con Lambda potrebbero indicare che la funzione Lambda presenta un errore nel codice. Per ulteriori informazioni e per la risoluzione dei problemi, consulta la pagina Error Handling Patterns in Amazon API Gateway and AWS Lambda (Modelli di gestione degli errori in Gateway Amazon API e AWS Lambda).

Autorizzazioni mancanti per l'utilizzo di una variabile di fase

Se hai configurato un Gateway API per richiamare una funzione AWS Lambda utilizzando una variabile di fase, potresti ricevere un messaggio di errore "internal server error" (errore interno del server). Per risolvere questo errore, consulta la pagina Why do I get an "Internal server error" and a 500 status code when I invoke the API method? (Perché ricevo il messaggio "Errore interno del server" e un codice di stato 500 quando richiamo il metodo API?)

Mappatura del codice di stato HTTP errata o mancante

Anche la mappatura del codice di stato HTTP errata o mancante può causare errori 500. Per risolvere questo errore, puoi configurare integrazioni fittizie in Gateway Amazon API.

Problemi di limitazione (della larghezza di banda della rete)

Se il servizio di backend è limitato a causa di un numero elevato di richieste, l'API di Gateway Amazon API potrebbe restituire un messaggio di errore "internal server error" (errore interno del server). Puoi attivare un meccanismo di backoff esponenziale e di ripetizione dei tentativi e riprovare la richiesta. Se il problema persiste, controlla la quota limite del Gateway API. Se hai superato il limite della quota del servizio, puoi richiedere un aumento della quota.

Il metodo POST di HTTP non è definito

Per l'integrazione Lambda, è necessario utilizzare il metodo POST di HTTP per la richiesta di integrazione.

Aggiorna la richiesta di integrazione del metodo utilizzando il comando put-integration dell'interfaccia della linea di comando AWS simile al seguente:

aws apigateway put-integration \
    --rest-api-id id \
    --resource-id id \
    --http-method ANY \
    --type AWS_PROXY \
    --integration-http-method POST \
    --uri arn:aws:apigateway:us-east-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-east-2:account_id:function:helloworld/invocations

Quindi, distribuisci la REST API utilizzando il comando di AWS CLI create-deployment simile al seguente:

aws apigateway create-deployment \
    --rest-api-id id \
    --stage-name <value>

Autorizzazioni Lambda

Assicurati che la funzione Lambda integrata o la policy basata sulle risorse di autorizzazione Lambda includa le autorizzazioni affinché l'API richiami la funzione. Segui le istruzioni per aggiornare la policy basata sulle risorse della tua funzione Lambda.

Problemi con il formato JSON della funzione Lambda

La funzione Lambda integrata non restituisce l'output in base al formato JSON predefinito per le REST API e le API HTTP. Aggiorna la funzione Lambda o il formato JASON della funzione di autorizzazione Lambda in modo simile al seguente:

REST API

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },
    "body": "..."
}

API HTTP

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headername": "headervalue", ... },
    "multiValueHeaders": { "headername": ["headervalue", "headervalue2", ...], ... },
    "body": "..."
}

La dimensione del payload del backend ha superato i 10 MB

La dimensione massima del payload del backend è di 10 MB e non può essere aumentata. Assicurati che la dimensione del payload del backend non superi la quota predefinita di 10 MB.

Integrazione di endpoint privati

Se si utilizza un endpoint API privato, è necessario configurare anche l'integrazione privata di Gateway Amazon API. Segui le istruzioni per configurare le integrazioni private di Gateway Amazon API.

Errore 502: gateway errato

Un codice di errore 502 è correlato al servizio AWS con cui il tuo Gateway API si integra, ad esempio una funzione AWS Lambda. Il Gateway API non è stato in grado di elaborare la risposta come gateway o proxy.

Per risolvere l'errore 502 se integrato con una funzione proxy Lambda, consulta Come posso risolvere gli errori HTTP 502 dalle REST API del Gateway API con integrazione del proxy Lambda?

Nota: Gateway API interpreta la risposta dal servizio backend in un formato che può essere mappato nella sezione di risposta di integrazione utilizzando i modelli di mappatura. Per ulteriori informazioni, consulta Configurazione di una risposta di integrazione in Gateway API.

Errore 503: servizio non disponibile

Un codice di errore 503 è correlato all'integrazione backend e l'API di Gateway API non è in grado di ricevere una risposta.

Questo errore può verificarsi se il server di backend è:

  • Sovraccarico oltre la capacità e non è in grado di elaborare nuove richieste client.
  • Il server di backend è in fase di manutenzione temporanea.

Per risolvere questo errore, prendi in considerazione il provisioning di più risorse sul server di backend e l'attivazione di un meccanismo di backoff esponenziale e di ripetizione dei tentativi sul client. Quindi, prova di nuovo a eseguire la richiesta.

Errore 504: richiesta di endpoint scaduta

Se una richiesta di integrazione richiede più tempo del parametro di timeout massimo di integrazione del REST API del Gateway API, Gateway API restituisce un codice di stato HTTP 504.

Per risolvere questo errore, consulta Come posso risolvere gli errori di timeout dell'API HTTP 504 con Gateway API?


Questo articolo è stato utile?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?