Salta al contenuto

Come posso risolvere gli errori del sistema di autorizzazione Lambda per Gateway API?

4 minuti di lettura
0

Ho collegato un sistema di autorizzazione AWS Lambda a una mia API di Gateway Amazon API. Desidero risolvere gli errori del sistema di autorizzazione Lambda che ricevo alle richieste di invocazione di Gateway API.

Risoluzione

Verifica che le richieste di invocazione raggiungano la funzione Lambda

Utilizza Amazon CloudWatch per esaminare la metrica Invocations. Se la metrica mostra un valore, le richieste di invocazione raggiungono la funzione Lambda.

Se la metrica Invocations non mostra invocazioni, verifica la metrica Throttles per individuare la presenza di richieste di invocazione limitate. Per risolvere i problemi di limitazione (della larghezza di banda della rete) di Lambda, consulta Come posso risolvere gli errori di limitazione (della larghezza di banda della rete) "Rate exceeded" e "TooManyRequestsException" di una funzione Lambda?

Esamina i log di esecuzione di Gateway API per identificare l'errore

Per identificare gli errori del sistema di autorizzazione Lambda, attiva la registrazione dell'API in CloudWatch ed esamina i log. Quindi risolvi il problema in base al messaggio di errore ricevuto.

Risolvi l'errore "Invalid permissions on Lambda function"

Se ricevi il seguente messaggio di errore, l'API di Gateway API non dispone dell'autorizzazione per invocare la funzione Lambda:

"Execution failed due to configuration error: Invalid permissions on Lambda function"

Quando crei il sistema di autorizzazione Lambda dalla console Gateway API, Gateway API aggiunge automaticamente le autorizzazioni necessarie alla policy basata sulle risorse della funzione Lambda. Se configuri il sistema di autorizzazione Lambda con strumenti Infrastructure as Code (IaC), come AWS CloudFormation o Kit di sviluppo per il cloud AWS (AWS CDK), devi aggiungere le autorizzazioni manualmente.

Aggiungi le seguenti autorizzazioni alla policy basata sulle risorse della funzione Lambda:

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "xyz",
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:your-region:accountID:function:function-name",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:execute-api:your-region:accountID:API_ID/authorizers/AuthorizerID"
        }
      }
    }
  ]
}

Nota: sostituisci your-region con la tua Regione AWS, accountID con l'ID del tuo account AWS e function-name con il nome della tua funzione Lambda. Inoltre, sostituisci API_ID con l'ID della tua API di Gateway API e AuthorizerID con l'ID del tuo sistema di autorizzazione Lambda.

Per configurare un sistema di autorizzazione Lambda per più account, consulta Configurazione di un sistema di autorizzazione Lambda di Gateway API multi-account.

Risolvi l'errore di configurazione "Unable to parse given policy"

Se ricevi il seguente messaggio di errore, significa che c'è un problema con la funzione Lambda del sistema di autorizzazione:

"Execution failed due to configuration error: Unable to parse given policy"

Per risolverlo, completa i seguenti passaggi:

  1. Apri la console Lambda.
  2. Nel pannello di navigazione, scegli Funzioni, quindi seleziona la funzione Lambda di autorizzazione.
  3. Controlla il valore presente in Origine del codice per la funzione. Assicurati che il codice sia corretto.<br id=hardline_break/> Nota: per esempi validi, consulta Esempio di funzione del sistema di autorizzazione REQUEST Lambda e Esempio di funzione del sistema di autorizzazione TOKEN Lambda.
  4. Per assicurarti che la funzione Lambda funzioni correttamente, esegui un test della funzione.

Risolvi l'errore "AuthorizationFailureException"

Se ricevi il seguente messaggio di errore, potresti avere un problema con il sistema di autorizzazione Lambda:

"Execution failed due to an authorizer error Tue Jan 01 04:59:40 UTC 2020 : AuthorizerFailureException"

Per risolverlo, identifica eventuali errori di autorizzazione, errori di sintassi del codice o problemi di timeout della funzione Lambda controllando i log di CloudWatch.

Risolvi l'errore "500 Internal Server Error"

Se ricevi un messaggio di errore "500 Internal Server Error" quando invochi un'API HTTP di Gateway API, consulta Risoluzione dei problemi relativi ai sistemi di autorizzazione Lambda.

Nota: ricevi questo messaggio di errore anche se il sistema di autorizzazione Lambda non risponde entro 10 secondi.