

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 einer REST-API mit einer Lambda-Proxy-Integration
<a name="api-gateway-create-api-as-simple-proxy-for-lambda"></a>

[Lambda-Proxy-Integration](set-up-lambda-proxy-integrations.md) 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 ](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) 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\$1"- Die Lambda-Funktion ist das Backend für die API.
+ Erstellen und testen Sie eine "Hello, World\$1"- API mit Lambda-Proxy-Integration.

**Topics**
+ [Erstellen Sie eine "Hello, World\$1"- Lambda-Funktion](#api-gateway-proxy-integration-create-lambda-backend)
+ [Erstellen Sie eine "Hello, World\$1"- API](#api-gateway-create-api-as-simple-proxy-for-lambda-build)
+ [Bereitstellen und Testen der API](#api-gateway-create-api-as-simple-proxy-for-lambda-test)

## Erstellen Sie eine "Hello, World\$1"- Lambda-Funktion
<a name="api-gateway-proxy-integration-create-lambda-backend"></a>

**Erstellen von „Hello, World\$1“ Lambda-Funktion in der Lambda-Konsole**

1. Melden Sie sich bei der Lambda-Konsole unter [https://console.aws.amazon.com/lambda](https://console.aws.amazon.com/lambda) an.

1. Wählen Sie in der AWS Navigationsleiste eine. [AWS-Region](https://docs.aws.amazon.com/general/latest/gr/apigateway.html)
**Anmerkung**  
Notieren Sie die Region, in der Sie die Lambda-Funktion erstellen. Sie benötigen sie zum Erstellen der API.

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

1. Wählen Sie **Create function (Funktion erstellen)**.

1. Wählen Sie **Author from scratch** aus.

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

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

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

   1. Behalten Sie für **Architektur** die Standardeinstellung bei.

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

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

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

   1. Wählen Sie **Create function (Funktion erstellen)**.

1. Im **Inline-Code-Editor finden Sie unter Funktionscode** copy/paste den folgenden Code:

------
#### [ Node.js ]

   ```
   export const handler = async(event, context) => {
       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 + "!";
       return 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
   ```

------

1. Wählen Sie **Deploy (Bereitstellen)** aus.

## Erstellen Sie eine "Hello, World\$1"- API
<a name="api-gateway-create-api-as-simple-proxy-for-lambda-build"></a>

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

**Erstellen von „Hello, World\$1“ API**

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

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

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

1. (Optional) Geben Sie unter **Description (Beschreibung)** eine Beschreibung ein.

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

1. Wählen Sie als **IP-Adresstyp** die Option. **IPv4**

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

**So erstellen Sie eine Ressource**

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

1. Die **Proxy-Ressource** bleibt ausgeschaltet. 

1. **Ressourcenpfad** wird als `/` beibehalten.

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

1. **CORS (Cross Origin Resource Sharing)** bleibt ausgeschaltet.

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

1. Wählen Sie als **Methodentyp** die Option **BELIEBIG** aus.

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

1. Schalten Sie die **Lambda-Proxy-Integration** ein.

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

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

1. Wählen Sie **Methode erstellen** aus.

## Bereitstellen und Testen der API
<a name="api-gateway-create-api-as-simple-proxy-for-lambda-test"></a>

**Stellen Sie Ihre API bereit**

1. Klicken Sie auf **Deploy API**.

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

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

1. (Optional) Geben Sie unter **Description (Beschreibung)** eine Beschreibung ein.

1. Wählen Sie **Bereitstellen**.

1. 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
<a name="api-gateway-create-api-as-simple-proxy-for-lambda-test-curl"></a>

Sie können einen Browser oder eine [cURL](https://curl.se/) zum Testen Ihrer API verwenden.

Um `GET`-Anforderungen nur mit Abfragezeichenfolgeparametern zu testen, können Sie die URL der API-`helloworld`-Ressource in die Adressleiste eines Browsers eingeben. 

Fügen Sie die Ressource `helloworld` und den Abfragezeichenfolgeparameter `?greeter=John` an Ihre Aufruf-URL an, um die URL für die API-`helloworld`-Ressource zu erstellen. Ihre URL sollte 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-Testtools wie [POSTMAN](https://www.postman.com/) oder [cURL](https://curl.se/) 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.

1. 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'
      ```

   1. 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'
      ```

   1. 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!
   ```