Tutorial: Creare un'integrazione REST API con un proxy 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à.

Tutorial: Creare un'integrazione REST API con un proxy Lambda

L'integrazione proxy Lambda è un tipo di API integrazione API Gateway leggero e flessibile che consente di integrare un API metodo, o un intero, con una API funzione Lambda. La funzione Lambda può essere scritta in qualsiasi linguaggio supportato da Lambda. Poiché si tratta di un'integrazione proxy, puoi modificare l'implementazione della funzione Lambda in qualsiasi momento senza dover ridistribuire la tua. API

In questo tutorial, esegui quanto indicato di seguito:

  • Creazione di una funzione Lambda "Hello, World!" La funzione Lambda fungerà da backend per. API

  • Creazione e test di un'API "Hello World!" APIcon l'integrazione del proxy Lambda.

Creazione di una funzione Lambda "Hello, World!" valida e completa

Per creare una funzione Lambda "Hello, World!" Funzione Lambda nella console Lambda
  1. Accedi alla console Lambda all'indirizzo https://console.aws.amazon.com /lambda.

  2. Nella barra di AWS navigazione, scegli un. Regione AWS

    Nota

    Prendere nota della regione in cui si crea la funzione Lambda. Ti servirà quando creerai ilAPI.

  3. Nel riquadro di navigazione scegliere Functions (Funzioni).

  4. Selezionare Create function (Crea funzione).

  5. Scegli Author from scratch (Crea da zero).

  6. In Basic information (Informazioni di base) eseguire queste operazioni:

    1. In Function name (Nome funzione) immettere GetStartedLambdaProxyIntegration.

    2. Per Runtime, scegli l'ultimo runtime supportato di Node.js o di Python.

    3. Per Architecture, mantieni l'impostazione predefinita.

    4. In Autorizzazioni espandere Modifica ruolo di esecuzione predefinito. Nell'elenco a discesa Ruolo di esecuzione, scegli Crea nuovo ruolo dai modelli di policy AWS .

    5. In Role name (Nome ruolo) immettere GetStartedLambdaBasicExecutionRole.

    6. Lasciare il campo Policy templates (Modelli di policy) vuoto.

    7. Selezionare Create function (Crea funzione).

  7. In Function code (Codice funzione), nell'editor di codice inline, copiare/incollare il codice seguente:

    Node.js
    export const handler = function(event, context, callback) { console.log('Received event:', JSON.stringify(event, null, 2)); var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; var greeter = 'World'; if (event.greeter && event.greeter!=="") { greeter = event.greeter; } else if (event.body && event.body !== "") { var body = JSON.parse(event.body); if (body.greeter && body.greeter !== "") { greeter = body.greeter; } } else if (event.queryStringParameters && event.queryStringParameters.greeter && event.queryStringParameters.greeter !== "") { greeter = event.queryStringParameters.greeter; } else if (event.multiValueHeaders && event.multiValueHeaders.greeter && event.multiValueHeaders.greeter != "") { greeter = event.multiValueHeaders.greeter.join(" and "); } else if (event.headers && event.headers.greeter && event.headers.greeter != "") { greeter = event.headers.greeter; } res.body = "Hello, " + greeter + "!"; callback(null, res); };
    Python
    import json def lambda_handler(event, context): print(event) greeter = 'World' try: if (event['queryStringParameters']) and (event['queryStringParameters']['greeter']) and ( event['queryStringParameters']['greeter'] is not None): greeter = event['queryStringParameters']['greeter'] except KeyError: print('No greeter') try: if (event['multiValueHeaders']) and (event['multiValueHeaders']['greeter']) and ( event['multiValueHeaders']['greeter'] is not None): greeter = " and ".join(event['multiValueHeaders']['greeter']) except KeyError: print('No greeter') try: if (event['headers']) and (event['headers']['greeter']) and ( event['headers']['greeter'] is not None): greeter = event['headers']['greeter'] except KeyError: print('No greeter') if (event['body']) and (event['body'] is not None): body = json.loads(event['body']) try: if (body['greeter']) and (body['greeter'] is not None): greeter = body['greeter'] except KeyError: print('No greeter') res = { "statusCode": 200, "headers": { "Content-Type": "*/*" }, "body": "Hello, " + greeter + "!" } return res
  8. Selezionare Deploy (Distribuisci).

Crea un messaggio «Hello, World!» API

Ora creane uno API per il tuo «Hello, World!» Funzione Lambda utilizzando la console API Gateway.

Per creare un messaggio «Hello, World!» API
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Se è la prima volta che utilizzi API Gateway, viene visualizzata una pagina che presenta le funzionalità del servizio. In RESTAPI, scegli Costruisci. Quando viene visualizzato il API popup Crea esempio, scegli OK.

    Se non è la prima volta che usi API Gateway, scegli Crea API. In RESTAPI, scegli Build.

  3. Per APInome, inserisciLambdaProxyAPI.

  4. (Facoltativo) In Description (Descrizione), immettere una descrizione.

  5. Mantieni il tipo di API endpoint impostato su Regionale.

  6. Scegli Crea API.

Dopo aver creato unAPI, crei una risorsa. In genere, API le risorse sono organizzate in un albero di risorse in base alla logica dell'applicazione. In questo esempio crei una risorsa /helloworld.

Per creare una risorsa
  1. Scegli Crea risorsa.

  2. Mantieni l'opzione Risorsa proxy disattivata.

  3. Mantieni Percorso risorsa impostato su /.

  4. Per Resource Name (Nome risorsa) immetti helloworld.

  5. Mantieni CORS(Cross Origin Resource Sharing) disattivato.

  6. Scegli Crea risorsa.

In un'integrazione proxy, l'intera richiesta viene inviata alla funzione Lambda di backend così com'è, tramite un metodo generico che rappresenta qualsiasi ANY metodo. HTTP Il HTTP metodo effettivo viene specificato dal client in fase di esecuzione. Il ANY metodo consente di utilizzare un'unica configurazione di API metodo per tutti i HTTP metodi supportati: DELETEGET,HEAD,OPTIONS,PATCH,POST, ePUT.

Per creare un metodo ANY
  1. Seleziona la risorsa /helloworld, quindi scegli Crea metodo.

  2. In Tipo di metodo, seleziona ANY.

  3. Per Tipo di integrazione seleziona Funzione Lambda.

  4. Attiva l'opzione Integrazione proxy Lambda.

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

  6. Per utilizzare il valore di timeout predefinito di 29 secondi, mantieni attiva l'opzione Timeout predefinito. Per impostare un timeout personalizzato, scegli Timeout predefinito e immetti un valore di timeout compreso tra 50 e 29000 millisecondi.

  7. Scegli Crea metodo.

Implementa e testa il API

Per implementare il tuo API
  1. Scegliere Deploy (Implementa)API.

  2. In Fase, seleziona Nuova fase.

  3. In Stage name (Nome fase) immettere test.

  4. (Facoltativo) In Description (Descrizione), immettere una descrizione.

  5. Seleziona Deploy (Implementa).

  6. In Stage details, scegli l'icona di copia per copiare API la tua chiamataURL.

Usa browser e c URL per testare an API con l'integrazione del proxy Lambda

Puoi usare un browser o c URL per testare il tuoAPI.

Per testare GET le richieste utilizzando solo i parametri della stringa di query, puoi inserire la helloworld risorsa URL for the API nella barra degli indirizzi del browser.

Per creare la risorsa URL for API the, aggiungi la helloworld risorsa helloworld e il parametro della stringa di query ?greeter=John alla tua URL invoke. Il tuo URL dovrebbe avere il seguente aspetto.

https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John

Per altri metodi, è necessario utilizzare utilità di REST API test più avanzate, come POSTMANo c URL. Questo tutorial utilizza c. URL Gli esempi di URL comandi c riportati di seguito presuppongono che c URL sia installato sul computer.

Per testare il tuo distribuito API usando c: URL
  1. Apri una finestra del terminale.

  2. Copia il seguente URL comando c e incollalo nella finestra del terminale, quindi sostituisci l'invoke URL con quello che hai copiato nel passaggio precedente e aggiungi /helloworld alla fine di. URL

    Nota

    Se si esegue il comando in Windows, utilizzare questa sintassi:

    curl -v -X POST "https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld" -H "content-type: application/json" -d "{ \"greeter\": \"John\" }"
    1. Per chiamare il parametro API con la stringa di interrogazione di: ?greeter=John

      curl -X GET 'https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John'
    2. Per chiamarlo API con un parametro header pari a: greeter:John

      curl -X GET https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -H 'greeter: John'
    3. Per chiamarli API con un corpo di{"greeter":"John"}:

      curl -X POST https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -d '{ "greeter": "John" }'

    In tutti i casi, l'output è una risposta 200 con il corpo seguente:

    Hello, John!