Tutorial: Hello World REST-API mit Lambda-Proxy-Integration erstellen - 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.

Tutorial: Hello World REST-API mit Lambda-Proxy-Integration erstellen

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

In diesem Tutorial führen Sie folgende Aufgaben aus:

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

  • Erstellen und testen Sie eine "Hello, World!"- API mit Lambda-Proxy-Integration.

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 Region aus (z. B. USA Ost (Nord-Virginia)).

    Anmerkung

    Notieren Sie die Region, in der Sie die Lambda-Funktion erstellen. Sie benötigen sie zum Erstellen der API.

  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. 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.

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

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

    6. 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 eine "Hello, World!"- API

Erstellen Sie jetzt eine API für Ihre "Hello World" Lambda-Funktion unter Verwendung der API Gateway-Konsole.

Erstellen von „Hello, World!“ API
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wenn Sie API Gateway zum ersten Mal verwenden, sehen Sie eine Seite, die Sie mit den Funktionen des Service vertraut macht. Wählen Sie unter REST-API die Option Erstellen aus. Wenn das Popup-Fenster Create Exampe API (Beispiel-API erstellen) angezeigt wird, klicken Sie auf OK.

    Wenn Sie API Gateway nicht zum ersten Mal verwenden, wählen Sie Create API (API erstellen). Wählen Sie unter REST-API die Option Build (Erstellen) aus.

  3. Geben Sie in API name (API-Name) LambdaProxyAPI ein.

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

  5. Lassen Sie die Einstellung für API-Endpunkttyp bei Regional.

  6. Wählen Sie Create API (API erstellen) aus.

Nachdem Sie eine API erstellt haben, können Sie nun eine Ressource erstellen. In der Regel werden API-Ressourcen in einer Ressourcenstruktur organisiert, die der Anwendungslogik entspricht. Für dieses Beispiel erstellen Sie eine /helloworld-Ressource.

Erstellen Sie eine Ressource
  1. Wählen Sie die /-Ressource aus und klicken Sie dann auf Ressource erstellen.

  2. Die Proxy-Ressource bleibt ausgeschaltet.

  3. Ressourcenpfad wird als / beibehalten.

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

  5. CORS (Cross Origin Resource Sharing) bleibt ausgeschaltet.

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

In einer Proxy-Integration wird die gesamte Anfrage unverändert an die Backend-Lambda-Funktion gesendet. Dazu wird eine Catch-All-ANY-Methode verwendet, die eine HTTP-Methode repräsentiert. Der tatsächliche HTTP-Methode wird vom Client zur Laufzeit angegeben. Mit der Methode ANY haben Sie die Möglichkeit, eine einzige API-Methodeneinrichtung für alle unterstützten HTTP-Methoden zu verwenden: DELETE, GET, HEAD, OPTIONS, PATCH, POST und PUT.

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 BELIEBIG 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 die aus, AWS-Region in der 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.

Bereitstellen und Testen der API

Stellen Sie Ihre API bereit
  1. Klicken Sie auf Deploy API.

  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 Stufendetails das Kopiersymbol aus, um die Aufruf-URL Ihrer API zu kopieren.

Browser und cURL verwenden, um eine API mit Lambda-Proxy-Integration zu testen

Sie können einen Browser oder eine cURL zum Testen Ihrer API verwenden.

Um GET-Anforderungen mit ausschließlich Abfragezeichenfolge-Parametern zu testen, können Sie die URL für die helloworld-Ressource der API in eine Adressleiste des Browsers eingeben. Beispiel: https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?name=John&city=Seattle

Für andere Methoden müssen Sie erweiterte REST-API-Testtools wie POSTMAN oder cURL verwenden. In diesem Tutorial wird cURL verwendet. Bei den cURL-Befehl-Beispielen wird davon ausgegangen, dass cURL auf Ihrem Computer installiert ist.

So testen Sie die bereitgestellte API mithilfe von cURL:
  1. Öffnen Sie ein Terminal-Fenster.

  2. Kopieren Sie den folgenden cURL-Befehl und fügen Sie ihn in das Terminalfenster ein. Ersetzen Sie dann die Aufruf-URL mit der URL, die Sie zuvor kopiert haben und fügen Sie dann /helloworld am Ende der URL hinzu.

    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. So rufen Sie die API mit dem Abfragezeichenfolgeparameter ?greeter=John auf:

      curl -X GET 'https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld?greeter=John'
    2. So rufen Sie die API mit einem Header-Parameter von greeter:John auf:

      curl -X GET https://r275xc9bmd.execute-api.us-east-1.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -H 'greeter: John'
    3. So rufen Sie die API mit einem Textkörper von {"greeter":"John"} auf:

      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!