Configurare l'integrazione del proxy Lambda per API Gateway utilizzando AWS CLI - 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 l'integrazione del proxy Lambda per API Gateway utilizzando AWS CLI

In questa sezione, mostriamo come configurare un'integrazione API con il proxy Lambda utilizzando il. AWS CLI Per istruzioni dettagliate sull'utilizzo della console API Gateway per configurare una risorsa proxy con l'integrazione del proxy Lambda, vedere. Tutorial: Creare un'integrazione REST API con un proxy Lambda

Ad esempio, utilizziamo la seguente funzione Lambda di esempio come backend di: API

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); };

Rispetto alla configurazione di integrazione personalizzata Lambda inConfigura integrazioni personalizzate Lambda in Gateway API, l'input di questa funzione Lambda può essere espresso nei parametri e nel corpo della richiesta. Avrai maggiore libertà per permettere al client di passare gli stessi dati di input. Qui il client può passare il nome del mittente della formula di saluto come parametro della stringa di query, intestazione o proprietà del corpo. La funzione può anche supportare l'integrazione personalizzata Lambda. La API configurazione è più semplice. Non devi configurare la risposta del metodo o la risposta di integrazione.

Per configurare un'integrazione con proxy Lambda utilizzando AWS CLI
  1. Chiama il create-rest-api comando per creare unAPI:

    aws apigateway create-rest-api --name 'HelloWorld (AWS CLI)' --region us-west-2

    Nota il id valore risultante API (te6si5ach7) nella risposta:

    { "name": "HelloWorldProxy (AWS CLI)", "id": "te6si5ach7", "createdDate": 1508461860 }

    Hai bisogno di API id tutta questa sezione.

  2. Chiama il comando get-resources per ottenere il valore di id della risorsa root:

    aws apigateway get-resources --rest-api-id te6si5ach7 --region us-west-2

    La risposta di esito positivo sarà simile alla seguente:

    { "items": [ { "path": "/", "id": "krznpq9xpg" } ] }

    Prendi nota del valore di id (krznpq9xpg) della risorsa root. Ti servirà nella prossima fase e successivamente.

  3. Chiama create-resource per creare una risorsa API gateway di/greeting:

    aws apigateway create-resource --rest-api-id te6si5ach7 \ --region us-west-2 \ --parent-id krznpq9xpg \ --path-part {proxy+}

    La risposta con esito positivo è simile a quella riportata di seguito.

    { "path": "/{proxy+}", "pathPart": "{proxy+}", "id": "2jf6xt", "parentId": "krznpq9xpg" }

    Prendi nota del valore {proxy+} della risorsa id (2jf6xt). Ti servirà per creare un metodo nella risorsa /{proxy+} nella prossima fase.

  4. Chiama put-method per creare una richiesta del metodo ANY ANY /{proxy+}:

    aws apigateway put-method --rest-api-id te6si5ach7 \ --region us-west-2 \ --resource-id 2jf6xt \ --http-method ANY \ --authorization-type "NONE"

    La risposta con esito positivo è simile a quella riportata di seguito.

    { "apiKeyRequired": false, "httpMethod": "ANY", "authorizationType": "NONE" }

    Questo API metodo consente al client di ricevere o inviare saluti dalla funzione Lambda nel backend.

  5. Chiama put-integration per configurare l'integrazione del metodo ANY /{proxy+} con una funzione Lambda, denominata HelloWorld. Questa funzione risponde alla richiesta con un messaggio "Hello, {name}!" se è specificato il parametro greeter, altrimenti con un messaggio "Hello, World!" se il parametro della stringa di query non è impostato.

    aws apigateway put-integration \ --region us-west-2 \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method ANY \ --type AWS_PROXY \ --integration-http-method POST \ --uri arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:HelloWorld/invocations \ --credentials arn:aws:iam::123456789012:role/apigAwsProxyRole
    Importante

    Per le integrazioni Lambda, è necessario utilizzare il HTTP metodo di POST per la richiesta di integrazione, in base alla specifica dell'azione del servizio Lambda per le chiamate di funzioni. Il IAM ruolo delle politiche apigAwsProxyRole indispensabili che consentono al apigateway servizio di richiamare le funzioni Lambda. Per ulteriori informazioni sulle IAM autorizzazioni, consulta. APIModello di autorizzazioni Gateway per richiamare un API

    L'output corretto sarà simile al seguente:

    { "passthroughBehavior": "WHEN_NO_MATCH", "cacheKeyParameters": [], "uri": "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:1234567890:function:HelloWorld/invocations", "httpMethod": "POST", "cacheNamespace": "vvom7n", "credentials": "arn:aws:iam::1234567890:role/apigAwsProxyRole", "type": "AWS_PROXY" }

    Invece di fornire un IAM ruolo percredentials, puoi chiamare il comando add-permission per aggiungere autorizzazioni basate sulle risorse. Questo è ciò che fa la console Gateway. API

  6. Chiama create-deployment per API implementarlo su una test fase:

    aws apigateway create-deployment --rest-api-id te6si5ach7 --stage-name test --region us-west-2
  7. Prova l'APIutilizzo dei seguenti URL comandi c in un terminale.

    Chiamando il API con il parametro della stringa di query di?greeter=jane:

    curl -X GET 'https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/greeting?greeter=jane'

    Chiamando il API con un parametro di greeter:jane intestazione pari a:

    curl -X GET https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/hi \ -H 'content-type: application/json' \ -H 'greeter: jane'

    Chiamando il API con un corpo di{"greeter":"jane"}:

    curl -X POST https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/hi \ -H 'content-type: application/json' \ -d '{ "greeter": "jane" }'

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

    Hello, jane!