Risoluzione dei problemi relativi alle integrazione Lambda di API HTTP - Amazon API Gateway

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi relativi alle integrazione Lambda di API HTTP

Di seguito viene fornita una consulenza per la risoluzione dei problemi relativi a errori e problemi che potrebbero verificarsi quando si utilizza AWS Lambda integrazioni con API HTTP.

Problema: la mia API con un'integrazione Lambda restituisce {"message":"Internal Server Error"}

Per risolvere l'errore interno del server, aggiungere la $context.integrationErrorMessage variabile di registrazione al formato di registro e visualizzare i registri dell'API HTTP. Per raggiungere questo obiettivo, effettuare le seguenti operazioni:

Per creare un gruppo di log utilizzando il AWS Management Console
  1. Aprire la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Scegliere Gruppi di log.

  3. Scegliere Crea gruppo di log.

  4. Immettere un nome di gruppo di log, quindi scegliere Crea.

  5. Prendere nota del nome risorsa Amazon (ARN) per il tuo gruppo di log. Il formato ARN è arn:aws:logs: region: account-id:log-group:. log-group-name È necessario il gruppo di log ARN per abilitare la registrazione degli accessi per la propria API HTTP.

Per aggiungere la variabile di registrazione $context.integrationErrorMessage
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Scegliere l'API HTTP.

  3. In Monitor (Monitora), scegliere Logging (Registrazione).

  4. Selezionare una fase della tua API.

  5. Scegliere Modifica, quindi abilitare la registrazione degli accessi.

  6. Per Log destination (Destinazione dei log), immettere l'ARN per il gruppo di log creato nel passaggio precedente.

  7. Per Formato registro, scegliere CLF. API Gateway crea un formato di registro di esempio.

  8. Aggiungere $context.integrationErrorMessage alla fine del formato di registro.

  9. Selezionare Salva.

Per visualizzare i log delle API
  1. Generare i log Utilizzare un browser o curl per richiamare la tua API.

    $curl https://api-id.execute-api.us-west-2.amazonaws.com/route
  2. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  3. Scegliere l'API HTTP.

  4. In Monitor (Monitora), scegliere Logging (Registrazione).

  5. Selezionare la fase dell'API per la quale è stata abilitata la registrazione.

  6. Scegli Visualizza i log in CloudWatch.

  7. Scegliere il flusso di log più recente per visualizzare i log dell'API HTTP.

  8. La voce di registro dovrebbe essere simile alla seguente:

    CloudWatch Registra la voce del registro che mostra il messaggio di errore di integrazione di Lambda.

Poiché è stato aggiunto $context.integrationErrorMessage al formato di registro, viene visualizzato un messaggio di errore nei nostri registri che riassume il problema.

I registri potrebbero includere un messaggio di errore diverso che indica che si è verificato un problema con il codice della funzione Lambda. In tal caso, controllare il codice della funzione Lambda e verificare che la funzione Lambda restituisca una risposta nel formato richiesto. Se i log non includono messaggi di errore, aggiungere $context.error.message e $context.error.responseType al formato del log per ottenere ulteriori informazioni per la risoluzione dei problemi.

In questo caso, i registri mostrano che API Gateway non disponeva delle autorizzazioni necessarie per richiamare la funzione Lambda.

Quando si crea un'integrazione Lambda nella console API Gateway, le autorizzazioni vengono configurate automaticamente per richiamare la funzione Lambda. Quando crei un'integrazione Lambda utilizzando, o un SDK AWS CLI AWS CloudFormation, devi concedere le autorizzazioni ad API Gateway per richiamare la funzione. I seguenti AWS CLI comandi di esempio concedono l'autorizzazione a diversi percorsi API HTTP per richiamare una funzione Lambda.

Esempio: per la $default fase e il $default percorso di un'API HTTP
aws lambda add-permission \ --function-name my-function \ --statement-id apigateway-invoke-permissions \ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/\$default/\$default"
Esempio: per la prod fase e il test percorso di un'API HTTP
aws lambda add-permission \ --function-name my-function \ --statement-id apigateway-invoke-permissions \ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/prod/*/test"

Conferma la policy della funzione nella scheda Permissions (Autorizzazioni) della console Lambda.

Prova a richiamare nuovamente la tua API. Deve essere visualizzata la risposta della funzione Lambda.