Tutorial: Erstellen Sie eine REST API mit einer Lambda-Proxyintegration - 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.

Tutorial: Erstellen Sie eine REST API mit einer Lambda-Proxyintegration

Die Lambda-Proxyintegration ist ein leichter, flexibler API API Gateway-Integrationstyp, mit dem Sie eine API Methode — oder eine ganze API — in eine Lambda-Funktion integrieren können. Die Lambda-Funktion kann in jeder Sprache, die Lambda unterstützt geschrieben werden. Da es sich um eine Proxyintegration handelt, können Sie die Implementierung der Lambda-Funktion jederzeit ändern, ohne Ihre erneut bereitstellen zu müssen. API

In diesem Tutorial führen Sie folgende Aufgaben aus:

  • Erstellen Sie eine "Hello, World!"- Lambda-Funktion als Backend für die. API

  • Erstellen und testen Sie eine "Hello, World!"- APImit Lambda-Proxyintegration.

Erstellen Sie eine "Hello, World!"- Lambda-Funktion

Erstellen von „Hello, World!“ Lambda-Funktion in der Lambda-Konsole
  1. Melden Sie sich bei der Lambda-Konsole unter https://console.aws.amazon.com/lambda an.

  2. Wählen Sie in der AWS Navigationsleiste eine. AWS-Region

    Anmerkung

    Notieren Sie die Region, in der Sie die Lambda-Funktion erstellen. Sie benötigen es, wenn Sie das erstellenAPI.

  3. Wählen Sie im Navigationsbereich Functions (Funktionen) aus.

  4. Wählen Sie Create function (Funktion erstellen).

  5. Wählen Sie Author from scratch aus.

  6. Führen Sie unter Basic information (Grundlegende Informationen) die folgenden Schritte aus:

    1. Geben Sie in Function name (Funktionsname) GetStartedLambdaProxyIntegration ein.

    2. Wählen Sie für Laufzeit die neueste unterstützte Node.js- oder Python-Laufzeit aus.

    3. Behalten Sie für Architektur die Standardeinstellung bei.

    4. Erweitern Sie unter Berechtigungen die Option Standardausführungsrolle ändern. Wählen Sie in der Dropdown-Liste Ausführungsrolle die Option Neue Rolle aus AWS -Richtlinienvorlagen erstellen aus.

    5. Geben Sie in Role Name (Rollenname) den Namen GetStartedLambdaBasicExecutionRole ein.

    6. Lassen Sie das Feld Policy templates (Richtlinien-Vorlagen) leer.

    7. Wählen Sie Create function (Funktion erstellen).

  7. Fügen Sie im Inline-Code-Editor unter Function code (Funktionscode) den folgenden Code ein:

    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. Wählen Sie Deploy (Bereitstellen) aus.

Erstellen Sie ein „Hallo, Welt!“ API

Erstelle jetzt eine API für dein „Hello, World!“ Lambda-Funktion mithilfe der API Gateway-Konsole.

Um ein „Hallo, Welt!“ zu erstellen API
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigatewayan.

  2. Wenn Sie API Gateway zum ersten Mal verwenden, wird eine Seite angezeigt, auf der Sie mit den Funktionen des Dienstes vertraut gemacht werden. Wählen Sie RESTAPIunter Build aus. Wenn das API Popup-Fenster „Beispiel erstellen“ angezeigt wird, wählen Sie „OK“.

    Wenn Sie API Gateway nicht zum ersten Mal verwenden, wählen Sie Create API. Wählen Sie RESTAPIunter Build aus.

  3. Geben Sie als APINamen einLambdaProxyAPI.

  4. (Optional) Geben Sie unter Description (Beschreibung) eine Beschreibung ein.

  5. Lassen Sie den APIEndpunkttyp auf Regional eingestellt.

  6. Wählen Sie Erstellen API.

Nachdem Sie eine erstellt habenAPI, erstellen Sie eine Ressource. In der Regel werden API Ressourcen entsprechend der Anwendungslogik in einem Ressourcenbaum organisiert. Für dieses Beispiel erstellen Sie eine /helloworld-Ressource.

Erstellen Sie eine Ressource
  1. Wählen Sie Create Resource (Ressource erstellen) aus.

  2. Die Proxy-Ressource bleibt ausgeschaltet.

  3. Ressourcenpfad wird als / beibehalten.

  4. Geben Sie für Resource name (Ressourcenname) helloworld ein.

  5. Lassen Sie CORS(Cross Origin Resource Sharing) ausgeschaltet.

  6. Wählen Sie Create Resource (Ressource erstellen) aus.

Bei einer Proxy-Integration wird die gesamte Anfrage unverändert über eine Catch-All-Methode, die eine beliebige ANY Methode darstellt, an die Backend-Lambda-Funktion gesendet. HTTP Die eigentliche HTTP Methode wird vom Client zur Laufzeit angegeben. Die ANY Methode ermöglicht es Ihnen, ein einziges API Methoden-Setup für alle unterstützten HTTP Methoden zu verwenden: DELETE GETHEAD,OPTIONS,PATCH,POST, undPUT.

Erstellen einer ANY-Methode
  1. Wählen Sie die /helloworld-Ressource aus und klicken Sie dann auf Methode erstellen.

  2. Wählen Sie als Methodentyp die Option ANY aus.

  3. Wählen Sie für den Integration type (Integrationstyp) die Option Lambda function (Lambda-Funktion) aus.

  4. Schalten Sie die Lambda-Proxy-Integration ein.

  5. Wählen Sie für Lambda-Funktion den Ort aus, AWS-Region an dem Sie Ihre Lambda-Funktion erstellt haben, und geben Sie dann den Funktionsnamen ein.

  6. Wenn Sie die Standardzeitüberschreitung von 29 Sekunden verwenden möchten, lassen Sie das Kontrollkästchen Default timeout (Standardzeitüberschreitung) aktiviert. Wenn Sie einen benutzerdefinierten Zeitüberschreitungswert festlegen möchten, wählen Sie Default timeout (Standardzeitüberschreitung) aus und geben Sie einen Zeitüberschreitungswert zwischen 50 und 29000 Millisekunden ein.

  7. Wählen Sie Methode erstellen aus.

Stellen Sie die bereit und testen Sie API

Um Ihr zu implementieren API
  1. Wählen Sie BereitstellenAPI aus.

  2. Wählen Sie für Stufe die Option Neue Stufe aus.

  3. Geben Sie für Stage name (Stufenname) test ein.

  4. (Optional) Geben Sie unter Description (Beschreibung) eine Beschreibung ein.

  5. Wählen Sie Bereitstellen.

  6. Wählen Sie unter Stage-Details das Kopiersymbol aus, um Ihren API Aufruf zu kopieren. URL

Verwenden Sie Browser und cURL, um eine API mit Lambda-Proxyintegration zu testen

Sie können einen Browser oder C verwenden, um Ihren URL API zu testen.

Um GET Anfragen nur mit Abfragezeichenfolgenparametern zu testen, können Sie die helloworld Ressource URL for API the in die Adressleiste eines Browsers eingeben.

Um die Ressource URL for the API zu erstellen, hängen Sie die helloworld Ressource helloworld und den Parameter für die Abfragezeichenfolge ?greeter=John an Ihren Aufruf URL an. Sie URL sollten wie folgt aussehen.

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

Für andere Methoden müssen Sie erweiterte REST API Testwerkzeuge wie POSTMANoder c verwendenURL. In diesem Tutorial wird c verwendetURL. Bei den folgenden URL C-Befehlsbeispielen URL wird davon ausgegangen, dass c auf Ihrem Computer installiert ist.

Um Ihr Deployment API mit c zu testenURL:
  1. Öffnen Sie ein Terminal-Fenster.

  2. Kopieren Sie den folgenden URL c-Befehl und fügen Sie ihn in das Terminalfenster ein. Ersetzen Sie den Befehl invoke URL durch den Befehl, den Sie im vorherigen Schritt kopiert haben, und fügen Sie ihn am Ende von /helloworld hinzu. URL

    Anmerkung

    Wenn Sie den Befehl unter Windows ausführen, verwenden Sie stattdessen die folgende Syntax:

    curl -v -X POST "https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld" -H "content-type: application/json" -d "{ \"greeter\": \"John\" }"
    1. Um den API mit dem Abfragezeichenfolgenparameter aufzurufen: ?greeter=John

      curl -X GET 'https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John'
    2. Um das API mit einem Header-Parameter von aufzurufengreeter:John:

      curl -X GET https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -H 'greeter: John'
    3. Um das API mit einem Hauptteil von aufzurufen{"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 allen Fällen ist die Ausgabe eine Antwort mit dem folgenden Antworttext: 200

    Hello, John!