Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Benutzerdefinierte Lambda-Integrationen in API Gateway einrichten

Fokusmodus
Benutzerdefinierte Lambda-Integrationen in API Gateway einrichten - Amazon API 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.

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.

Um zu zeigen, wie die benutzerdefinierte Lambda-Integration eingerichtet wird, erstellen wir ein API Gateway-API, um die GET /greeting?greeter={name}-Methode zum Aufrufen einer Lambda-Funktion bereitzustellen. Verwenden Sie eine der folgenden Lambda-Beispielfunktionen für Ihre API.

Verwenden Sie eine der folgenden Lambda-Beispielfunktionen:

Node.js
export const handler = function(event, context, callback) { var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; if (event.greeter==null) { callback(new Error('Missing the required greeter parameter.')); } else if (event.greeter === "") { res.body = "Hello, World"; callback(null, res); } else { res.body = "Hello, " + event.greeter +"!"; callback(null, res); } };
Python
import json def lambda_handler(event, context): print(event) res = { "statusCode": 200, "headers": { "Content-Type": "*/*" } } if event['greeter'] == "": res['body'] = "Hello, World" elif (event['greeter']): res['body'] = "Hello, " + event['greeter'] + "!" else: raise Exception('Missing the required greeter parameter.') return res
export const handler = function(event, context, callback) { var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; if (event.greeter==null) { callback(new Error('Missing the required greeter parameter.')); } else if (event.greeter === "") { res.body = "Hello, World"; callback(null, res); } else { res.body = "Hello, " + event.greeter +"!"; callback(null, res); } };

Die Funktion gibt die Nachricht "Hello, {name}!" zurück, sofern der greeter-Parameterwert keine leere Zeichenfolge ist. Wenn der "Hello, World!"-Wert eine leere Zeichenfolge ist, wird als Antwort greeter zurückgegeben. Die Funktion gibt eine Fehlermeldung zurück, "Missing the required greeter parameter." wenn der "greeter"-Parameter in der eingehenden Anforderung nicht festgelegt ist. Wir geben der Funktion den Namen HelloWorld.

Sie können sie in der Lambda-Konsole oder mithilfe der AWS CLI erstellen. In diesem Abschnitt definieren wir diese Funktion mithilfe des folgenden ARN:

arn:aws:lambda:us-east-1:123456789012:function:HelloWorld

Wenn die Lambda-Funktion im Backend eingerichtet ist, fahren Sie mit dem Einrichten der API fort.

So richten Sie die benutzerdefinierte Lambda-Integration mit dem AWS CLI
  1. Verwenden Sie den folgenden create-rest-apiBefehl, um eine API zu erstellen:

    aws apigateway create-rest-api --name 'HelloWorld (AWS CLI)'

    Die Ausgabe sieht wie folgt aus:

    { "name": "HelloWorld (AWS CLI)", "id": "te6si5ach7", "rootResourceId" : "krznpq9xpg", "createdDate": 1508461860 }

    In diesem Beispiel verwenden Sie die API id rootResourceId (te6si5ach7krznpq9xpg) und die ().

  2. Verwenden Sie den folgenden Befehl create-resource, um eine API-Gateway-Ressource von zu erstellen: /greeting

    aws apigateway create-resource \ --rest-api-id te6si5ach7 \ --parent-id krznpq9xpg \ --path-part greeting

    Die Ausgabe sieht wie folgt aus:

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

    Im nächsten Schritt verwenden Sie den id Wert (2jf6xt) der greeting Ressource, um eine Methode für die /greeting Ressource zu erstellen.

  3. Verwenden Sie den folgenden Befehl put-method, um eine API-Methodenanforderung von zu erstellen: GET /greeting?greeter={name}

    aws apigateway put-method --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --authorization-type "NONE" \ --request-parameters method.request.querystring.greeter=false

    Die Ausgabe sieht wie folgt aus:

    { "apiKeyRequired": false, "httpMethod": "GET", "authorizationType": "NONE", "requestParameters": { "method.request.querystring.greeter": false } }

    Diese API-Methode gestattet dem Client, einen Gruß über die Lambda-Funktion am Backend zu empfangen. Der greeter-Parameter ist optional, da das Backend entweder einen anonymen Aufrufer oder einen selbst identifizierten Aufrufer verarbeiten sollte.

  4. Verwenden Sie den folgenden put-method-responseBefehl, um die 200 OK Antwort auf die Methodenanforderung von einzurichten: GET /greeting?greeter={name}

    aws apigateway put-method-response \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --status-code 200

  5. Verwenden Sie den folgenden Befehl put-integration, um die Integration der GET /greeting?greeter={name} Methode mit einer Lambda-Funktion mit dem Namen einzurichten. HelloWorld Die 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 \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --type AWS \ --integration-http-method POST \ --uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:HelloWorld/invocations \ --request-templates '{"application/json":"{\"greeter\":\"$input.params('greeter')\"}"}' \ --credentials arn:aws:iam::123456789012:role/apigAwsProxyRole

    Die hier bereitgestellte Mapping-Vorlage übersetzt den greeter-Abfragezeichenfolgeparameter in den greeter-Parameter der JSON-Nutzlast. Dies ist notwendig, da die Eingabe einer Lambda-Funktion im Textkörper ausgedrückt werden muss.

    Wichtig

    Für Lambda-Integrationen müssen Sie entsprechend der Spezifikation der Lambda-Service-Aktion für Funktionsaufrufe die HTTP-Methode POST für die Integrationsanfrage verwenden. Der uri-Parameter ist der ARN der Aktion, die die Funktion aufruft.

    Die Ausgabe sieht wie folgt aus:

    { "passthroughBehavior": "WHEN_NO_MATCH", "cacheKeyParameters": [], "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:HelloWorld/invocations", "httpMethod": "POST", "requestTemplates": { "application/json": "{\"greeter\":\"$input.params('greeter')\"}" }, "cacheNamespace": "krznpq9xpg", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "type": "AWS" }

    Die IAM-Rolle apigAwsProxyRole muss über Richtlinien verfügen, die es dem apigateway-Service erlauben, Lambda-Funktionen aufzurufen. Anstatt eine IAM-Rolle für credentials bereitzustellen, können Sie den Befehl add-permission aufrufen, um ressourcenbasierte Berechtigungen hinzuzufügen. Auf diese Weise fügt die API Gateway-Konsole diese Berechtigungen hinzu.

  6. Verwenden Sie den folgenden put-integration-responseBefehl, um die Integrationsantwort so einzurichten, dass die Ausgabe der Lambda-Funktion als 200 OK Methodenantwort an den Client übergeben wird:

    aws apigateway put-integration-response \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --status-code 200 \ --selection-pattern ""

    Beim Festlegen des Auswahlmusters auf eine leere Zeichenfolge lautet die voreingestellte Antwort 200 OK.

    Die Ausgabe sieht wie folgt aus:

    { "selectionPattern": "", "statusCode": "200" }
  7. Verwenden Sie den folgenden Befehl create-deployment, um die API für eine Phase bereitzustellen: test

    aws apigateway create-deployment \ --rest-api-id te6si5ach7 \ --stage-name test
  8. Testen Sie die API mithilfe des folgenden cURL-Befehls in einem Terminal:

    curl -X GET 'https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/greeting?greeter=me' \ -H 'authorization: AWS4-HMAC-SHA256 Credential={access_key}/20171020/us-west-2/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=f327...5751'
DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.