Ho definito la mia integrazione Lambda in API Gateway utilizzando una variabile di fase. Perché ricevo un "Errore interno del server" e un codice di stato 500 quando richiamo il metodo API?
Ho configurato la mia API di Gateway Amazon API per richiamare una funzione AWS Lambda utilizzando una variabile di fase. Quando richiamo il metodo API, la mia API restituisce il messaggio “Errore interno del server” e un codice di stato 500. Come posso risolvere l'errore?
Breve descrizione
Se la policy basata sulle risorse della funzione Lambda non include le autorizzazioni per consentire all'API di richiamare la funzione, API Gateway restituisce il messaggio Errore interno del server.
Se crei una variabile di fase per chiamare una funzione tramite l’API, devi aggiungere le autorizzazioni necessarie eseguendo una delle seguenti operazioni:
- Aggiorna la policy AWS Identity and Access Management (IAM) basata sulle risorse della funzione Lambda in modo che conceda al API Gateway l'autorizzazione per il richiamo.
-oppure- - Crea un ruolo IAM che API Gateway può assumere per richiamare la funzione Lambda.
Nota: se crei un'API del API Gateway con integrazione Lambda standard utilizzando la console API Gateway, la console aggiunge automaticamente le autorizzazioni necessarie.
Risoluzione
Nota: se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.
Controlla i file di log di Amazon CloudWatch per confermare che l'errore sia causato dalla mancanza di autorizzazioni
Per le REST API e le API WebSocket
Esamina i log di esecuzione di API Gateway. Se viene visualizzato un messaggio di errore simile al seguente Autorizzazioni non valide per la funzione Lambda, la mancanza di autorizzazioni è la causa dell'errore. Per ulteriori informazioni, consulta Come posso attivare CloudWatch Logs per la risoluzione dei problemi della mia REST API o dell'API WebSocket con API Gateway?
Per le API HTTP
Rivedi i log di accesso ad API Gateway. Se viene visualizzato un messaggio di errore che include Autorizzazioni non valide, la mancanza di autorizzazioni è la causa dell'errore. Per ulteriori informazioni, consulta Configurazione della registrazione per un'API HTTP.
Nota: La variabile di contesto integrationErrorMessage ($context.integrationErrorMessage) include il messaggio di errore da esaminare.
Per aggiornare la policy IAM basata sulle risorse della funzione Lambda in modo che conceda ad API Gateway l'autorizzazione al richiamo
Istruzioni per la console Lambda
Segui le istruzioni in Concedere l'accesso alle funzioni ai servizi AWS.
Di seguito è riportato un esempio di policy basata sulle risorse che concede ad API Gateway l'autorizzazione al richiamo:
{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "ServiceAllowListing", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:<AWS_Region>:<AWS_Account_Number>:function:<LambdaFunctionName>", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:execute-api:<AWS_Region>:<AWS_Account_Number>:<API_ID>" } } } ] }
Istruzioni per AWS CLI
Esegui il seguente comando di AWS CLI add-permission:
Importante: sostituisci le seguenti variabili prima di eseguire il comando:
- In arn:aws:lambda:region:account-id:function:function-name, inserisci il nome della risorsa Amazon (ARN) della funzione Lambda.
- In statement-id-guid, inserisci un ID istruzione univoco. Ad esempio, api-gateway-invoke.
- In arn:aws:execute-api:region:account-id:api-id/*/GET/lambdasv1, inserisci l'ARN della risorsa di API Gateway che richiama la funzione. Per il formato ARN per le API HTTP e le REST API, consulta Formato Risorsa delle autorizzazioni per l'esecuzione dell'API in API Gateway. Per il formato ARN per le API WebSocket, consulta Uso dell'autorizzazione IAM.
aws lambda add-permission --function-name arn:aws:lambda:region:account-id:function:function-name --statement-id statement-id-guid --action lambda:InvokeFunction --source-arn arn:aws:execute-api:region:account-id:api-id/*/GET/lambdasv1
Per creare un ruolo IAM che API Gateway possa assumere per richiamare la funzione Lambda
Segui le istruzioni in Modello di autorizzazione API Gateway per invocare un'API.
Nota: per ulteriori informazioni, consulta Controllo degli accessi a un'API con le autorizzazioni IAM.
Informazioni correlate
Impostazione delle variabili di fase per la distribuzione di una REST API
Utilizzo delle variabili di fase di Gateway Amazon API
Utilizzo delle variabili di fase di API Gateway per gestire le funzioni Lambda
Creazione di una REST API di API Gateway con integrazione Lambda
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa