Richten Sie die Lambda-Proxyintegration für API Gateway mit dem ein AWS CLI - APIAmazon-Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Richten Sie die Lambda-Proxyintegration für API Gateway mit dem ein AWS CLI

In diesem Abschnitt zeigen wir, wie Sie eine Proxyintegration API mit dem AWS CLI Lambda einrichten. Ausführliche Anweisungen zur Verwendung der API Gateway-Konsole zur Konfiguration einer Proxyressource mit der Lambda-Proxyintegration finden Sie unterTutorial: Erstellen Sie eine REST API mit einer Lambda-Proxyintegration.

Als Beispiel verwenden wir die folgende Lambda-Beispielfunktion als Backend von: 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); };

Vergleicht man dies mit dem benutzerdefinierten Lambda-Integrations-Setup inRichten Sie benutzerdefinierte Lambda-Integrationen in Gateway ein API, kann die Eingabe für diese Lambda-Funktion in den Anforderungsparametern und im Hauptteil ausgedrückt werden. Sie haben mehr Spielraum, um dem Client die Weitergabe der gleichen Eingabedaten zu ermöglichen. Hier kann der Client den Namen von "greeter" als Abfragezeichenfolgeparameter, Kopfzeile oder Texteigenschaft übergeben. Die Funktion kann außerdem die benutzerdefinierte Lambda-Integration unterstützen. Die API Einrichtung ist einfacher. Sie müssen keine Methoden- oder Integrationsantwort konfigurieren.

So richten Sie eine Lambda-Proxyintegration mit dem AWS CLI
  1. Rufen Sie den create-rest-api Befehl auf, um ein API zu erstellen:

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

    Notieren Sie sich den id Wert (te6si5ach7) API des Ergebnisses in der Antwort:

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

    Sie benötigen den API id gesamten Abschnitt.

  2. Rufen Sie den Befehl get-resources auf, um die id der Stammressource zu ermitteln.

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

    Die erfolgreiche Antwort wird wie folgt angezeigt:

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

    Notieren Sie den id-Wert (krznpq9xpg) der Ressource. Sie benötigen diese in den nächsten Schritten.

  3. Rufen Sie create-resource auf, um eine API Gateway-Ressource zu erstellen von/greeting:

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

    Eine erfolgreiche Antwort ähnelt dem folgenden Beispiel:

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

    Notieren Sie den ausgegebenen id-Wert (2jf6xt) der {proxy+}-Ressource. Sie benötigen die ID, um im nächsten Schritt eine Methode auf der /{proxy+}-Ressource zu erstellen.

  4. Rufen Sie put-method zum Erstellen einer ANY-Methodenanforderung ANY /{proxy+} auf:

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

    Eine erfolgreiche Antwort ähnelt dem folgenden Beispiel:

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

    Diese API Methode ermöglicht es dem Client, Grüße von der Lambda-Funktion im Backend zu empfangen oder zu senden.

  5. Rufen Sie put-integration auf, um die Integration der ANY /{proxy+}-Methode mit einer Lambda-Funktion namens HelloWorld einzurichten. Diese Funktion beantwortet die Anforderung mit der Nachricht "Hello, {name}!", sofern der greeter-Parameter angegeben wurde, oder "Hello, World!", wenn kein Abfragezeichenfolgeparameter festgelegt wurde.

    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
    Wichtig

    Für Lambda-Integrationen müssen Sie die HTTP Methode von POST für die Integrationsanforderung gemäß der Spezifikation der Lambda-Serviceaktion für Funktionsaufrufen verwenden. Die IAM Rolle von apigAwsProxyRole muss Richtlinien haben, die es dem apigateway Dienst ermöglichen, Lambda-Funktionen aufzurufen. Weitere Hinweise zu IAM Berechtigungen finden Sie unter. APIGateway-Berechtigungsmodell zum Aufrufen eines API

    Im Erfolgsfall sieht die Ausgabe folgendermaßen oder ähnlich aus:

    { "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" }

    Anstatt eine IAM Rolle für anzugebencredentials, können Sie den Befehl add-permission aufrufen, um ressourcenbasierte Berechtigungen hinzuzufügen. Das macht die API Gateway-Konsole.

  6. Rufen Sie create-deployment auf, API um das in einer test Phase bereitzustellen:

    aws apigateway create-deployment --rest-api-id te6si5ach7 --stage-name test --region us-west-2
  7. Testen API Sie das mit den folgenden URL C-Befehlen in einem Terminal.

    Aufrufen von API mit dem Abfragezeichenfolgenparameter von?greeter=jane:

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

    Aufrufen von API mit einem Header-Parameter vongreeter:jane:

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

    Aufrufen von API mit einem Hauptteil von{"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 allen Fällen ist die Ausgabe eine Antwort mit dem folgenden Antworttext: 200

    Hello, jane!