Salta al contenuto

Come posso risolvere i problemi di integrazione degli endpoint Gateway API con Lambda?

4 minuti di lettura
0

Desidero integrare un endpoint Gateway Amazon API con AWS Lambda, ma ricevo un errore.

Risoluzione

Segui il procedimento di risoluzione relativo allo specifico messaggio di errore che hai ricevuto.

Prima di iniziare, attiva Amazon CloudWatch Logs per risolvere gli errori di Gateway API. Per Livello di log, scegli INFO in modo da generare i log di esecuzione per tutte le richieste.

API Gateway non dispone delle autorizzazioni per le funzioni Lambda

L'errore Invalid permissions on Lambda function si verifica quando Gateway API non ha le autorizzazioni per invocare la funzione Lambda. Per risolvere questo problema, consulta Come posso risolvere gli errori “Invalid permissions on Lambda function” delle API REST di API Gateway?

Nota: se utilizzi un altro servizio per distribuire le tue risorse API Gateway, come AWS CloudFormation, concedi le autorizzazioni alla risorsa AWS::Lambda::Permission.

Si verifica una limitazione (della larghezza di banda della rete)

Se un numero elevato di richieste limita la larghezza di banda della rete del servizio di backend, l'API di Gateway API potrebbe restituire un errore Internal server error. Attiva un meccanismo di backoff esponenziale e ripetizione, quindi invia nuovamente la richiesta. Se il problema persiste, controlla la quota di Gateway API. Se superi la quota di servizio, richiedi un aumento della quota per la concorrenza della funzione Lambda in modo che la funzione non subisca limitazioni (della larghezza di banda della rete).

A causa di problemi di limitazione (della larghezza di banda della rete) della funzione Lambda, potresti inoltre ricevere errori Rate exceeded e 429 TooManyRequestsException. Per ulteriori informazioni, consulta Come posso risolvere gli errori di limitazione (della larghezza di banda della rete) "Rate exceeded" e "TooManyRequestsException" di una funzione Lambda?

La mappatura del codice di stato è errata o mancante

Quando la mappatura del codice di stato HTTP è errata o mancante, puoi ricevere un messaggio di errore 500 simile al seguente:

"Execution failed due to configuration error: Output mapping refers to an invalid method response: 2xx/4xx/5xx”.

Per risolvere questo errore, configura la richiesta e la risposta di integrazione dell'operazione API per restituire il codice di stato corretto.

Le eccezioni del servizio Lambda non vengono gestite

Se non gestisci le eccezioni del servizio Lambda, come il timeout di una funzione Lambda, ricevi un errore Lambda.Unknown. Per evitare il timeout di una funzione Lambda, rendi idempotente il codice della funzione Lambda.

Per ulteriori informazioni, consulta Error Handling Patterns in Amazon API Gateway and AWS Lambda (Modelli di gestione degli errori in Gateway Amazon API e AWS Lambda).

Problemi di timeout degli endpoint di integrazione Lambda

Il limite di quota predefinito per il timeout di integrazione di Gateway API è 29 secondi per tutti i tipi di integrazione. Se la funzione Lambda impiega più di 29 secondi per restituire la risposta, la richiesta ha esito negativo e viene visualizzato un errore 504 Endpoint request timed out.

Assicurati che la funzione Lambda restituisca la risposta entro 29 secondi. Se la funzione Lambda non è in grado di restituire la risposta entro 29 secondi, richiedi un aumento della quota per il limite di timeout di integrazione.

Nota: per le API Regionali e le API private puoi aumentare il timeout di integrazione a più di 29 secondi. Tuttavia, un aumento del timeout di integrazione potrebbe richiedere una riduzione della quota di limitazione (della larghezza di banda della rete) a livello di Regione per l'account AWS.

Formato JSON di output della funzione Lambda errato

Se l'output della funzione Lambda integrata non è conforme al formato JSON specificato per le REST API, ricevi un errore malformed proxy. Accertati di utilizzare il formato JSON corretto per l'output delle funzioni Lambda per le integrazioni proxy e dei sistemi di autorizzazione Lambda.

Esempio di funzione Lambda per un'integrazione proxy:

{

"isBase64Encoded": true|false,

"statusCode": httpStatusCode,

"headers": { "headerName": "headerValue", ... },

"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },

"body": "..."

}

Informazioni correlate

Come posso risolvere gli errori 5xx per Gateway API?