Configurare un autorizzatore API Gateway Lambda - 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à.

Configurare un autorizzatore API Gateway Lambda

Dopo aver creato una funzione Lambda, configuri la funzione Lambda come autorizzatore per la tua. API Quindi configuri il metodo per richiamare l'autorizzatore Lambda per determinare se un chiamante può richiamare il tuo metodo. Puoi creare una funzione Lambda nello stesso account, o in un account diverso, da dove hai creato il tuo. API

Puoi testare l'autorizzatore Lambda utilizzando gli strumenti integrati nella console API Gateway o utilizzando Postman. Per istruzioni su come usare Postman per testare la funzione di autorizzazione Lambda, consulta. Chiama un utente API con un autorizzatore API Gateway Lambda

Configurare un autorizzatore Lambda (console)

La procedura seguente mostra come creare un autorizzatore Lambda nella console Gateway. API REST API Per ulteriori informazioni sui diversi tipi di autorizzatori Lambda, consulta. Scelta di un tipo di autorizzatore Lambda

REQUEST authorizer
Per configurare un autorizzatore REQUEST Lambda
  1. Accedi alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Seleziona unAPI, quindi scegli Autorizzatori.

  3. Scegli Create Authorizer (Crea autorizzazioni).

  4. In Nome del provider di autorizzazioni, immetti il nome di un provider di autorizzazioni.

  5. In Tipo di autorizzazione, seleziona Lambda.

  6. Per la funzione Lambda, seleziona il Regione AWS luogo in cui hai creato la funzione di autorizzazione Lambda, quindi inserisci il nome della funzione.

  7. Lascia vuoto il ruolo di richiamo Lambda per consentire alla REST API console API Gateway di impostare una policy basata sulle risorse. La policy concede a API Gateway le autorizzazioni per richiamare la funzione di autorizzazione Lambda. Puoi anche scegliere di inserire il nome di un IAM ruolo per consentire a API Gateway di richiamare la funzione di autorizzazione Lambda. Per un ruolo di esempio, vedi. Creazione di un ruolo IAM assumibile

  8. In Payload evento Lambda, scegli Richiesta.

  9. In Tipo di origine identità, seleziona un tipo di parametro. I tipi di parametri supportati sono Header, Query string, Stage variable e Context. Per aggiungere altre origini di identità, scegli Aggiungi parametro.

  10. Per memorizzare nella cache la policy di autorizzazione generata dalla funzione di autorizzazione, attiva l'opzione Autorizzazione caching. Quando la memorizzazione nella cache delle policy è abilitata, è possibile modificare il TTLvalore. L'impostazione TTLsu zero disabilita la memorizzazione nella cache delle politiche.

    Se abiliti la memorizzazione nella cache, l'autorizzatore deve restituire una politica applicabile a tutti i metodi di un. API Per applicare una politica specifica per il metodo, utilizza le variabili di contesto e. $context.path $context.httpMethod

  11. Scegli Create Authorizer (Crea autorizzazioni).

TOKEN authorizer
Per configurare un autorizzatore TOKEN Lambda
  1. Accedi alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Seleziona unAPI, quindi scegli Autorizzatori.

  3. Scegli Create Authorizer (Crea autorizzazioni).

  4. In Nome del provider di autorizzazioni, immetti il nome di un provider di autorizzazioni.

  5. In Tipo di autorizzazione, seleziona Lambda.

  6. Per la funzione Lambda, seleziona il Regione AWS luogo in cui hai creato la funzione di autorizzazione Lambda, quindi inserisci il nome della funzione.

  7. Lascia vuoto il ruolo di richiamo Lambda per consentire alla REST API console API Gateway di impostare una policy basata sulle risorse. La policy concede a API Gateway le autorizzazioni per richiamare la funzione di autorizzazione Lambda. Puoi anche scegliere di inserire il nome di un IAM ruolo per consentire a API Gateway di richiamare la funzione di autorizzazione Lambda. Per un ruolo di esempio, vedi. Creazione di un ruolo IAM assumibile

  8. In Payload evento Lambda, scegli Token.

  9. In Origine token, immetti il nome dell'intestazione contenente il token di autorizzazione. Il chiamante deve includere un'intestazione con questo nome per inviare il token di autorizzazione all'autorizzatore Lambda.

  10. (Facoltativo) Per la convalida del token, inserisci una dichiarazione. RegEx APIGateway esegue la convalida iniziale del token di input rispetto a questa espressione e richiama l'autorizzatore dopo la convalida riuscita.

  11. Per memorizzare nella cache la policy di autorizzazione generata dalla funzione di autorizzazione, attiva l'opzione Autorizzazione caching. Quando la memorizzazione della policy nella cache è abilitata, il nome dell'intestazione specificato in Origine token diventa la chiave della cache. Quando la memorizzazione nella cache delle policy è abilitata, è possibile modificare il valore. TTL L'impostazione TTLsu zero disabilita la memorizzazione nella cache delle politiche.

    Se abiliti la memorizzazione nella cache, l'autorizzatore deve restituire una politica applicabile a tutti i metodi di un. API Per applicare una politica specifica del metodo, puoi disattivare la memorizzazione nella cache delle autorizzazioni.

  12. Scegli Create Authorizer (Crea autorizzazioni).

Dopo aver creato l'autorizzatore Lambda, puoi testarlo. La procedura seguente mostra come testare l'autorizzatore Lambda.

REQUEST authorizer
Per testare un autorizzatore REQUEST Lambda
  1. Accedi alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Seleziona il nome del tuo autorizzatore.

  3. In Test authorizer, inserisci un valore per la tua fonte di identità.

    Se utilizzi ilEsempio di funzione Lambda REQUEST dell'autorizzatore, procedi come segue:

    1. Seleziona Intestazione e immetti headerValue1, quindi scegli Aggiungi parametro.

    2. In Tipo di origine identità, seleziona Stringa di query e immetti queryValue1, quindi scegli Aggiungi parametro.

    3. In Tipo di origine identità, seleziona Variabile di fase e immetti stageValue1.

    Non puoi modificare le variabili di contesto per la chiamata di test, ma puoi modificare il modello di evento di test APIGateway Authorizer per la tua funzione Lambda. Quindi, puoi testare la tua funzione di autorizzazione Lambda con variabili di contesto modificate. Per ulteriori informazioni, consulta Testare le funzioni Lambda nella console nella Guida per gli AWS Lambda sviluppatori.

  4. Scegli Testa autorizzazioni.

TOKEN authorizer
Per testare un autorizzatore TOKEN Lambda
  1. Accedi alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Seleziona il nome del tuo autorizzatore.

  3. In Test authorizer, inserisci un valore per il tuo token.

    Se utilizzi ilEsempio di funzione Lambda TOKEN dell'autorizzatore, procedi come segue:

    1. Per il authorizationToken, inserisciallow.

  4. Scegli Testa autorizzazioni.

    Se l'autorizzatore Lambda nega correttamente una richiesta nell'ambiente di test, il test risponde con una risposta. 200 OK HTTP Tuttavia, al di fuori dell'ambiente di test, API Gateway restituisce una 403 Forbidden HTTP risposta e la richiesta del metodo fallisce.

Configurare un autorizzatore Lambda ()AWS CLI

Il seguente comando create-authorizer mostra come creare un autorizzatore Lambda utilizzando. AWS CLI

REQUEST authorizer

L'esempio seguente crea un REQUEST authorizer e utilizza l'Authorizerheader e la variabile di contesto come fonti di identità: accountId

aws apigateway create-authorizer \ --rest-api-id 1234123412 \ --name 'First_Request_Custom_Authorizer' \ --type REQUEST \ --authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \ --identity-source 'method.request.header.Authorization,context.accountId' \ --authorizer-result-ttl-in-seconds 300
TOKEN authorizer

L'esempio seguente crea un TOKEN autorizzatore e utilizza l'Authorizationintestazione come fonte di identità:

aws apigateway create-authorizer \ --rest-api-id 1234123412 \ --name 'First_Token_Custom_Authorizer' \ --type TOKEN \ --authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \ --identity-source 'method.request.header.Authorization' \ --authorizer-result-ttl-in-seconds 300

Dopo aver creato l'autorizzatore Lambda, puoi testarlo. Il test-invoke-authorizercomando seguente mostra come testare l'autorizzatore Lambda:

aws apigateway test-invoke-authorizer --rest-api-id 1234123412 \ --authorizer-id efg1234 \ --headers Authorization='Value'

Configurare un metodo per utilizzare un autorizzatore Lambda (console)

Dopo aver configurato l'autorizzatore Lambda, devi collegarlo a un metodo per il tuo. API

Per configurare un API metodo per utilizzare un autorizzatore Lambda
  1. Accedi alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Seleziona unAPI.

  3. Scegli Risorse, quindi scegli un nuovo metodo o scegli un metodo esistente.

  4. Nella scheda Richiesta metodo, in Impostazioni richiesta metodo, scegli Modifica.

  5. In Autorizzazioni, nel menu a discesa, seleziona la funzione di autorizzazione Lambda appena creata.

  6. (Facoltativo) Se desideri passare il token di autorizzazione al backend, scegli le intestazioni della HTTP richiesta. Scegli Aggiungi intestazione, quindi aggiungi il nome dell'intestazione di autorizzazione. Per Nome, inserisci il nome dell'intestazione che corrisponde al nome di origine del token che hai specificato quando hai creato l'autorizzatore Lambda per. API Questo passaggio non si applica alle autorizzazioni REQUEST.

  7. Selezionare Salva.

  8. Scegli Deploy API per distribuirlo su una fase. API Per una funzione di autorizzazione basata su REQUEST che usa variabili di fase, devi anche definire le variabili di fase richieste e specificare i relativi valori in Fasi.

Configurare un metodo per utilizzare un autorizzatore Lambda ()AWS CLI

Dopo aver configurato l'autorizzatore Lambda, devi collegarlo a un metodo per il tuo. API È possibile creare un nuovo metodo o utilizzare un'operazione di patch per collegare un autorizzatore a un metodo esistente.

Il seguente comando put-method mostra come creare un nuovo metodo che utilizza un autorizzatore Lambda:

aws apigateway put-method --rest-api-id 1234123412 \ --resource-id a1b2c3 \ --http-method PUT \ --authorization-type CUSTOM \ --authorizer-id efg1234

Il seguente comando update-method mostra come aggiornare un metodo esistente per utilizzare un autorizzatore Lambda:

aws apigateway update-method \ --rest-api-id 1234123412 \ --resource-id a1b2c3 \ --http-method PUT \ --patch-operations op="replace",path="/authorizationType",value="CUSTOM" op="replace",path="/authorizerId",value="efg1234"