

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-Nicht-Proxy-Integration
<a name="getting-started-lambda-non-proxy-integration"></a>

In dieser exemplarischen Vorgehensweise verwenden wir die API Gateway-Konsole zur Erstellung einer API, die es einem Client ermöglicht, Lambda-Funktionen über die Lambda Nicht-Proxy-Integration (auch als benutzerdefinierte Integration bekannt) aufzurufen. Weitere Informationen zu AWS Lambda und Lambda-Funktionen finden Sie im [AWS Lambda -Entwicklerhandbuch](https://docs.aws.amazon.com/lambda/latest/dg/). 

Um das Lernen zu erleichtern, haben wir eine einfache Lambda-Funktion mit minimaler API-Einrichtung ausgewählt, um Sie durch die Schritte zur Erstellung einer API Gateway-API mit der benutzerdefinierten Lambda-Integration zu führen. Bei Bedarf werden wir Teile der Logik beschreiben. Ein ausführlicheres Beispiel für die benutzerdefinierte Lambda-Integration finden Sie unter [Tutorial: Erstellen Sie eine Rechner-REST-API mit zwei AWS Serviceintegrationen und einer Lambda-Non-Proxy-Integration](integrating-api-with-aws-services-lambda.md). 

Bevor Sie die API erstellen, richten Sie das Lambda-Backend ein, indem Sie eine Lambda-Funktion in AWS Lambda Lambda erstellen, wie nachfolgend beschrieben.

**Topics**
+ [Lambda-Funktion für die Nicht-Proxy-Integration von Lambda erstellen](#getting-started-new-lambda)
+ [API mit Lambda Nicht-Proxy-Integration erstellen](#getting-started-new-api)
+ [Testaufruf der API-Methode](#getting-started-new-get)
+ [Bereitstellen der API](#getting-started-deploy-api)
+ [Testen der API in einer Bereitstellungsstufe](#getting-started-test)
+ [Bereinigen](#getting-started-clean-up)

## Lambda-Funktion für die Nicht-Proxy-Integration von Lambda erstellen
<a name="getting-started-new-lambda"></a>

**Anmerkung**  
Das Erstellen von Lambda-Funktionen kann zu Gebühren für Ihr AWS Konto führen.

 In diesem Schritt erstellen Sie eine "Hello World"-ähnliche Lambda-Funktion für die benutzerdefinierte Integration von Lambda. In dieser schrittweisen Anleitung heißt die Funktion `GetStartedLambdaIntegration`.

 Die Implementierung dieser `GetStartedLambdaIntegration`-Lambda-Funktion sieht wie folgt aus: 

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

```
'use strict';
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];            
var times = ['morning', 'afternoon', 'evening', 'night', 'day'];

export const handler = async(event) => {
  console.log(event);
  // Parse the input for the name, city, time and day property values
  let name = event.name === null || event.name === undefined || event.name === "" ? 'you' : event.name;
  let city = event.city === undefined ? 'World' : event.city;
  let time = times.indexOf(event.time)<0 ? 'day' : event.time;
  let day = days.indexOf(event.day)<0 ? null : event.day;

  // Generate a greeting
  let greeting = 'Good ' + time + ', ' + name + ' of ' + city + '. ';
  if (day) greeting += 'Happy ' + day + '!';
  
  // Log the greeting to CloudWatch
  console.log('Hello: ', greeting);
  
  // Return a greeting to the caller
  return {"greeting": greeting}
};
```

------
#### [ Python ]

```
import json

days = {
    'Sunday',
    'Monday',
    'Tuesday',
    'Wednesday',
    'Thursday',
    'Friday',
    'Saturday'}
times = {'morning', 'afternoon', 'evening', 'night', 'day'}


def lambda_handler(event, context):
    print(event)
    # parse the input for the name, city, time, and day property values
    name = event.get("name") or 'you'
    city = event.get("city") or 'World'
    try:
        if event['time'] in times:
            time = event['time']
        else:
            time = 'day'
    except KeyError:
        time = 'day'
    try:
        if event['day'] in days:
            day = event['day']
        else:
            day = ''
    except KeyError:
        day = ''
    # Generate a greeting
    greeting = 'Good ' + time + ', ' + name + ' of ' + \
        city + '.' + ['', ' Happy ' + day + '!'][day != '']
    # Log the greeting to CloudWatch
    print(greeting)

    # Return a greeting to the caller
    return {"greeting": greeting}
```

------

Für die benutzerdefinierte Lambda-Integration übergibt API Gateway die Eingabe an die Lambda-Funktion vom Client als Integrationsanforderungsdaten. Das `event`-Objekt des Lambda-Funktionshandlers ist die Eingabe. 

Unsere Lambda-Funktion ist einfach. Sie analysiert das `event`-Objekt mit der Eingabe auf die Eigenschaften `name`, `city`, `time` und `day`. Sie gibt anschließend ein JSON-Objekt `{"message":greeting}` an den Aufrufer zurück. Die Nachricht nutzt das `"Good [morning|afternoon|day], [name|you] in [city|World]. Happy day!"`-Muster. Es wird angenommen, dass die Eingabe an die Lambda-Funktion das folgenden JSON-Objekt ist: 

```
{
  "city": "...",
  "time": "...",
  "day": "...",
  "name" : "..."
}
```

Weitere Informationen finden Sie im [AWS Lambda -Entwicklerhandbuch](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html). 

Darüber hinaus protokolliert die Funktion ihre Ausführung bei Amazon, CloudWatch indem sie aufruft`console.log(...)`. Dies ist hilfreich, wenn Sie die Funktionsaufrufe zum Debuggen nachverfolgen möchten. Damit die `GetStartedLambdaIntegration` Funktion den Anruf protokollieren kann, richten Sie eine IAM-Rolle mit entsprechenden Richtlinien für die Lambda-Funktion ein, um die CloudWatch Streams zu erstellen und Protokolleinträge zu den Streams hinzuzufügen. Die Lambda-Konsole führt Sie durch die Erstellung der erforderlichen IAM-Rollen und Richtlinien.

Wenn Sie die API einrichten, ohne die API Gateway-Konsole zu verwenden, wie z. B. beim [Import einer API aus einer OpenAPI-Datei](https://github.com/aws-samples/api-gateway-secure-pet-store/blob/master/src/main/resources/swagger.yaml#L39), müssen Sie, falls erforderlich, explizit eine Aufrufrolle und Richtlinien für API Gateway erstellen und einrichten, um die Lambda-Funktionen aufzurufen. Weitere Informationen über das Einrichten von Lambda-Aufruf- und Ausführungsrollen für eine API Gateway-API finden Sie unter [Zugriffskontrolle für eine API mit IAM-Berechtigungen](permissions.md). 

 Im Vergleich mit `GetStartedLambdaProxyIntegration`, der Lambda-Proxy-Integration, nimmt die `GetStartedLambdaIntegration` Lambda-Funktion für die benutzerdefinierte Lambda-Integration nur Eingaben aus den API Gateway API-Integrationsanforderungsdaten entgegen. Die Funktion kann eine Ausgabe als beliebiges JSON-Objekt, als Zeichenfolge, als Boolean oder sogar Binär-Blob zurückgeben. Die Lambda-Funktion für die Lambda-Proxy-Integration kann dagegen die Eingabe von beliebigen Anfragedaten entgegennehmen, muss aber ein bestimmtes JSON-Objekt zurückgeben. Die `GetStartedLambdaIntegration`-Funktion für die benutzerdefinierte Lambda-Integration kann API-Anfrageparameter als Eingabe nutzen, sofern API Gateway die erforderlichen API-Anfrageparameter vor dem Weiterleiten der Anfrage an das Backend zum Anfragetext zuordnet. Hierzu muss der API-Entwickler beim Erstellen der API eine Mapping-Vorlage für die API-Methode erstellen und konfigurieren. 

Erstellen Sie jetzt die `GetStartedLambdaIntegration` Lambda-Funktion. 

**So erstellen Sie die `GetStartedLambdaIntegration` Lambda-Funktion für die benutzerdefinierte Integration von Lambda**

1. Öffnen Sie die AWS Lambda Konsole unter. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)

1. Führen Sie eine der folgenden Aktionen aus:
   + Wenn die Willkommensseite angezeigt wird, wählen Sie **Get Started Now (Jetzt beginnen)** und dann **Create function (Funktion erstellen)** aus.
   + Wenn die Listenseite **Lambda > Functions (Lambda > Funktionen)** angezeigt wird, wählen Sie **Create function (Funktion erstellen)**.

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

1. Verfahren Sie im Bereich **Author from scratch** wie folgt:

   1. Geben Sie für **Name** **GetStartedLambdaIntegration** als Namen der Lambda-Funktion 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 unter **Role name (Rollenname)** einen Namen für die Rolle ein (z. B. **GetStartedLambdaIntegrationRole**).

   1. Wählen Sie für **Policy templates (Richtlinienvorlagen)** die Option **Simple microservice permissions (Einfache Microservice-Berechtigungen)**.

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

1. Legen Sie im Bereich **Configuration function** (Konfiguration) unter **Function code** (Funktionscode) die Folgendes fest:

   1. Kopieren Sie den Code in der Lambda-Funktion am Anfang dieses Abschnitts und fügen Sie ihn in den Inline-Codeeditor ein.

   1. Akzeptieren Sie die Standardwerte für alle anderen Felder in diesem Abschnitt.

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

1. Um die neu erstellte Funktion zu testen, wählen Sie die Registerkarte **Test** aus.

   1. Geben Sie für **Event name (Ereignisname)** **HelloWorldTest** ein. 

   1. Ersetzen Sie für **Ereignis-JSON** den Standardcode durch den folgenden Code.

      ```
      {
        "name": "Jonny",
        "city": "Seattle",
        "time": "morning",
        "day": "Wednesday"
      }
      ```

   1.  Wählen Sie **Test**, um die Funktion aufzurufen. Der Abschnitt **Execution result: succeeded** wird angezeigt. Erweitern Sie **Details** und diese Ausgabe wird angezeigt.

      ```
      {
          "greeting": "Good morning, Jonny of Seattle. Happy Wednesday!"
      }
      ```

      Die Ausgabe wird auch in CloudWatch Logs geschrieben. 

 Als Zusatzaufgabe können Sie die IAM-Konsole verwenden, um die IAM-Rolle (`GetStartedLambdaIntegrationRole`) anzuzeigen, die bei der Erstellung der Lambda-Funktion erstellt wurde. An diese IAM-Rolle sind zwei Inline-Richtlinien angehängt. Eine legt die grundlegenden Berechtigungen für die Ausführung von Lambda fest. Es ermöglicht das CloudWatch `CreateLogGroup` Aufrufen aller CloudWatch Ressourcen Ihres Kontos in der Region, in der die Lambda-Funktion erstellt wurde. Diese Richtlinie ermöglicht auch das Erstellen der CloudWatch Streams und das Protokollieren von Ereignissen für die `GetStartedLambdaIntegration` Lambda-Funktion. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "arn:aws:logs:us-east-1:111111111111:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111111111111:log-group:/aws/lambda/GetStartedLambdaIntegration:*"
            ]
        }
    ]
}
```

------

Das andere Richtliniendokument bezieht sich auf das Aufrufen eines anderen AWS Dienstes, der in diesem Beispiel nicht verwendet wird. Sie können sie überspringen. 

 Der IAM-Rolle ist eine vertrauenswürdige Entität zugeordnet. Diese ist `lambda.amazonaws.com`. Hier ist die Vertrauensstellung: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

 Die Kombination aus dieser Vertrauensbeziehung und der Inline-Richtlinie ermöglicht es der Lambda-Funktion, eine `console.log()` Funktion aufzurufen, um Ereignisse in Logs zu protokollieren. CloudWatch 

## API mit Lambda Nicht-Proxy-Integration erstellen
<a name="getting-started-new-api"></a>

 Wenn die Lambda-Funktion (`GetStartedLambdaIntegration`) erstellt und getestet ist, können Sie die Funktion über eine API Gateway-API zur Verfügung stellen. Zur Veranschaulichung stellen wir die Lambda-Funktion mit einer generischen HTTP-Methode bereit. Wir verwenden den Anforderungstext, eine URL-Pfadvariable, eine Abfragezeichenfolge und einen Header für den Empfang der erforderlichen Eingabedaten vom Client. Wir schalten den API Gateway-Anfragevalidierer für die API ein, um sicherzustellen, dass alle erforderlichen Daten korrekt definiert und spezifiziert sind. Wir konfigurieren eine Zuordnungsvorlage für API Gateway, um die vom Kunden bereitgestellten Anfragedaten in das Format zu transformieren, das von der Backend-Lambda-Funktion benötigt wird.

**Eine API mit einer Lambda Nicht-Proxy-Integration erstellen**

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) **LambdaNonProxyAPI** 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 **/\$1city\$1**-Ressource erstellen. Dies ist ein Beispiel für eine Ressource mit einer Pfadvariablen, die Eingaben vom Client annimmt. In einem späteren Schritt werden Sie diese Pfadvariable der Lambda-Funktionseingabe mittels einer Zuordnungsvorlage zuweisen.

**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)** **\$1city\$1** ein.

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

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

Nachdem Sie eine **/\$1city\$1**-Ressource erstellt haben, können Sie nun eine `ANY`-Methode erstellen. Das `ANY` HTTP-Verb ist ein Platzhalter für eine gültige HTTP-Methode, die ein Client zur Laufzeit sendet. Dieses Beispiel zeigt, dass die `ANY`-Methode sowohl für die benutzerdefinierte Integration von Lambda als auch für die Integration von Lambda-Proxys verwendet werden kann.

**Erstellen einer `ANY`-Methode**

1. Wählen Sie die **/\$1city\$1**-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. Lassen Sie **Lambda proxy integration** (Lambda-Proxyintegration) deaktiviert.

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. Klicken Sie auf **Einstellungen für Methodenanfragen**.

   Als Nächstes aktivieren Sie eine Anforderungsvalidierung für eine URL-Pfadvariable, einen Abfragezeichenfolgenparameter und einen Header, um sicherzustellen, dass alle erforderlichen Daten definiert sind. Für dieses Beispiel erstellen Sie einen `time`-Abfragezeichenfolgenparameter und einen `day`-Header. 

1. Wählen Sie für **Anforderungs-Validierer** die Option **Abfragezeichenfolgeparameter und -Header validieren** aus.

1. Wählen Sie **URL query string parameters** (URL-Abfragezeichenfolgen-Parameter) und gehen Sie wie folgt vor: 

   1. Wählen Sie **Abfragezeichenfolge hinzufügen** aus.

   1. Geben Sie unter **Name** **time** ein.

   1. Aktivieren Sie die Option **Erforderlich**.

   1. **Caching** bleibt ausgeschaltet. 

1. Klicken Sie auf **HTTP-Anforderungs-Header** und gehen Sie dann wie folgt vor: 

   1. Wählen Sie **Add header**.

   1. Geben Sie unter **Name** **day** ein.

   1. Aktivieren Sie die Option **Erforderlich**.

   1. **Caching** bleibt ausgeschaltet. 

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

Nachdem Sie einen Anforderungs-Validator aktiviert haben, konfigurieren Sie die Integrationsanforderung für die `ANY`-Methode, indem Sie eine Textzuordnungsvorlage hinzufügen, um die eingehende Anfrage in eine JSON-Nutzlast umzuwandeln, wie es die Backend-Lambda-Funktion erfordert. 

**Konfigurieren der Integrationsanforderung**

1. Klicken Sie in der Registerkarte **Integrationsanfrage** unter **Einstellungen für Integrationsanfragen** auf **Bearbeiten**.

1. Wählen Sie für **Anforderungstext-Pass-Through** die Option **Wenn keine Vorlagen definiert sind (empfohlen)** aus.

1. Wählen Sie **Zuordnungsvorlagen** aus.

1. Wählen Sie **Add mapping template**.

1. Geben Sie für **Content type** (Inhaltstyp) **application/json** ein.

1. Geben Sie für **Vorlagentext** den folgenden Code ein:

   ```
   #set($inputRoot = $input.path('$'))
   {
     "city": "$input.params('city')",
     "time": "$input.params('time')",
     "day":  "$input.params('day')",
     "name": "$inputRoot.callerName"
   }
   ```

1. Wählen Sie **Speichern**.

## Testaufruf der API-Methode
<a name="getting-started-new-get"></a>

 Die API Gateway-Konsole bietet Ihnen eine Testmöglichkeit, mit der Sie den Aufruf der API testen können, bevor sie bereitgestellt wird. Sie verwenden die Testfunktion der Konsole, um die API über das Senden der folgenden Anforderung zu testen: 

```
POST /Seattle?time=morning
day:Wednesday

{
    "callerName": "John"
}
```

 In dieser Testanforderung legen Sie `ANY` auf `POST`fest, `{city}` auf `Seattle`, weisen `Wednesday` als `day`-Header-Wert zu und weisen `"John"` als `callerName`-Wert zu. 

**So testen Sie die `ANY`-Methode**

1. Wählen Sie die Registerkarte **Test**. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.

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

1. Geben Sie für **Pfad** unter **Stadt** den Wert **Seattle** ein.

1. Für **Abfrage-Zeichenketten** geben Sie **time=morning** ein.

1. Für **Headers** geben Sie den Wert **day:Wednesday** ein.

1. Geben Sie für **Anforderungstext** **\$1 "callerName": "John" \$1** ein

1. Wählen Sie **Test** aus.

Überprüfen Sie, ob die zurückgegebene Antwortnutzlast wie folgt lautet:

```
{
  "greeting": "Good morning, John of Seattle. Happy Wednesday!"
}
```

Sie können außerdem die Protokolle anzeigen, um zu untersuchen, wie API Gateway die Anfrage und Antwort verarbeitet.

```
Execution log for request test-request
Thu Aug 31 01:07:25 UTC 2017 : Starting execution for request: test-invoke-request
Thu Aug 31 01:07:25 UTC 2017 : HTTP Method: POST, Resource Path: /Seattle
Thu Aug 31 01:07:25 UTC 2017 : Method request path: {city=Seattle}
Thu Aug 31 01:07:25 UTC 2017 : Method request query string: {time=morning}
Thu Aug 31 01:07:25 UTC 2017 : Method request headers: {day=Wednesday}
Thu Aug 31 01:07:25 UTC 2017 : Method request body before transformations: { "callerName": "John" }
Thu Aug 31 01:07:25 UTC 2017 : Request validation succeeded for content type application/json
Thu Aug 31 01:07:25 UTC 2017 : Endpoint request URI: https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:GetStartedLambdaIntegration/invocations
Thu Aug 31 01:07:25 UTC 2017 : Endpoint request headers: {x-amzn-lambda-integration-tag=test-request, Authorization=****************************************************************************************************************************************************************************************************************************************************************************************************************************************338c72, X-Amz-Date=20170831T010725Z, x-amzn-apigateway-api-id=beags1mnid, X-Amz-Source-Arn=arn:aws:execute-api:us-west-2:123456789012:beags1mnid/null/POST/{city}, Accept=application/json, User-Agent=AmazonAPIGateway_beags1mnid, X-Amz-Security-Token=FQoDYXdzELL//////////wEaDMHGzEdEOT/VvGhabiK3AzgKrJw+3zLqJZG4PhOq12K6W21+QotY2rrZyOzqhLoiuRg3CAYNQ2eqgL5D54+63ey9bIdtwHGoyBdq8ecWxJK/YUnT2Rau0L9HCG5p7FC05h3IvwlFfvcidQNXeYvsKJTLXI05/yEnY3ttIAnpNYLOezD9Es8rBfyruHfJfOqextKlsC8DymCcqlGkig8qLKcZ0hWJWVwiPJiFgL7laabXs++ZhCa4hdZo4iqlG729DE4gaV1mJVdoAagIUwLMo+y4NxFDu0r7I0/EO5nYcCrppGVVBYiGk7H4T6sXuhTkbNNqVmXtV3ch5bOlh7 [TRUNCATED]
Thu Aug 31 01:07:25 UTC 2017 : Endpoint request body after transformations: {
  "city": "Seattle",
  "time": "morning",
  "day": "Wednesday",
  "name" : "John"
}
Thu Aug 31 01:07:25 UTC 2017 : Sending request to https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:GetStartedLambdaIntegration/invocations
Thu Aug 31 01:07:25 UTC 2017 : Received response. Integration latency: 328 ms
Thu Aug 31 01:07:25 UTC 2017 : Endpoint response body before transformations: {"greeting":"Good morning, John of Seattle. Happy Wednesday!"}
Thu Aug 31 01:07:25 UTC 2017 : Endpoint response headers: {x-amzn-Remapped-Content-Length=0, x-amzn-RequestId=c0475a28-8de8-11e7-8d3f-4183da788f0f, Connection=keep-alive, Content-Length=62, Date=Thu, 31 Aug 2017 01:07:25 GMT, X-Amzn-Trace-Id=root=1-59a7614d-373151b01b0713127e646635;sampled=0, Content-Type=application/json}
Thu Aug 31 01:07:25 UTC 2017 : Method response body after transformations: {"greeting":"Good morning, John of Seattle. Happy Wednesday!"}
Thu Aug 31 01:07:25 UTC 2017 : Method response headers: {X-Amzn-Trace-Id=sampled=0;root=1-59a7614d-373151b01b0713127e646635, Content-Type=application/json}
Thu Aug 31 01:07:25 UTC 2017 : Successfully completed execution
Thu Aug 31 01:07:25 UTC 2017 : Method completed with status: 200
```

Die Protokolle zeigen die eingehende Anforderung vor der Zuordnung und die Integrationsanforderung nach der Zuordnung. Wenn ein Test fehlschlägt, sind die Protokolle nützlich, um zu prüfen, ob die ursprüngliche Eingabe korrekt ist oder ob die Mapping-Vorlage ordnungsgemäß funktioniert. 

## Bereitstellen der API
<a name="getting-started-deploy-api"></a>

 Der Testaufruf ist eine Simulation und hat Einschränkungen. Beispielsweise umgeht er alle Autorisierungsmechanismen für die API. Zum Testen der API-Ausführung in Echtzeit müssen Sie die API bereitstellen. Um eine API bereitzustellen, können Sie einen Snapshot der API erstellen. Der Stufenname definiert den Basispfad entsprechend dem standardmäßigen Hostnamen der API. Die Root-Ressource der API wird nach dem Stufenamen angehängt. Wenn Sie die API ändern, müssen Sie sie erneut für eine neue oder bestehende Stufe bereitstellen, bevor die Änderungen wirksam werden. 

**So stellen Sie die API für eine Stufe 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.
**Anmerkung**  
Die Eingabe muss als UTF-8-kodierter (also nicht lokalisierter) Text erfolgen.

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

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

Wählen Sie unter **Stufendetails** das Kopiersymbol aus, um die Aufruf-URL Ihrer API zu kopieren. Das allgemeine Muster der Basis-URL lautet `https://api-id.region.amazonaws.com/stageName`. Wenn beispielsweise die Basis-URL der API (`beags1mnid`) in der Region `us-west-2` erstellt und für die Stufe `test` bereitgestellt wird, lautet der Name `https://beags1mnid.execute-api.us-west-2.amazonaws.com/test`.

## Testen der API in einer Bereitstellungsstufe
<a name="getting-started-test"></a>

Es gibt mehrere Möglichkeiten zum Testen einer bereitgestellten API. Für GET-Anforderungen mit nur URL-Pfadvariablen oder Parameter für Abfragezeichenfolgen können Sie die API-Ressourcen-URL in einem Browser eingeben. Für andere Methoden müssen Sie erweiterte REST-API-Testtools wie [POSTMAN](https://www.postman.com/) oder [cURL](https://curl.se/) verwenden.

**So testen Sie die API mithilfe von cURL**

1. Öffnen Sie ein Terminalfenster auf Ihrem lokalen Computer, der mit dem Internet verbunden ist.

1. So können Sie dies testen `POST /Seattle?time=evening`:

   Kopieren Sie den folgenden cURL-Befehl und fügen Sie ihn in das Terminalfenster ein.

   ```
   curl -v -X POST \
     'https://beags1mnid.execute-api.us-west-2.amazonaws.com/test/Seattle?time=evening' \
     -H 'content-type: application/json' \
     -H 'day: Thursday' \
     -H 'x-amz-docs-region: us-west-2' \
     -d '{
   	"callerName": "John"
   }'
   ```

   Als Ergebnis sollten Sie eine erfolgreiche Antwort mit der folgenden Nutzlast erhalten:

   ```
   {"greeting":"Good evening, John of Seattle. Happy Thursday!"}
   ```

   Wenn Sie diese Methode `POST` zu `PUT` ändern, erhalten Sie dieselbe Antwort.

## Bereinigen
<a name="getting-started-clean-up"></a>

Wenn Sie die für diese Anleitung erstellten Lambda-Funktionen nicht mehr benötigen, können Sie diese nun löschen. Sie können auch die zugehörigen IAM-Ressourcen löschen.

**Warnung**  
Wenn Sie vorhaben, die anderen exemplarischen Vorgehensweisen in dieser Reihe abzuschließen, löschen Sie weder die Lambda-Ausführungsrolle noch die Lambda-Aufruf-Rolle. Wenn Sie eine Lambda-Funktion löschen, auf die Sie APIs sich verlassen, APIs funktionieren diese nicht mehr. Das Löschen einer Lambda-Funktion kann nicht rückgängig gemacht werden. Wenn Sie die Lambda-Funktion erneut verwenden möchten, müssen Sie die Funktion neu erstellen.  
Wenn Sie eine IAM-Ressource löschen, auf die sich eine Lambda-Funktion stützt, funktioniert diese Lambda-Funktion nicht mehr, und alle, APIs die auf diese Funktion angewiesen sind, funktionieren nicht mehr. Das Löschen einer IAM-Ressource kann nicht rückgängig gemacht werden. Wenn Sie die IAM-Ressource wieder nutzen möchten, müssen Sie diese neu erstellen. 

**So löschen Sie die Lambda-Funktion:**

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

1. Wählen Sie in der Liste der Funktionen **GetStartedLambdaIntegration**, **Aktionen** und anschließend **Delete function**. Wählen Sie bei Aufforderung erneut **Löschen** aus.

**Löschen Sie die zugehörigen IAM-Ressourcen wie folgt:**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie in **Details** **Roles**.

1. Wählen Sie in der Liste der Rollen **GetStartedLambdaIntegrationRole**, **Role Actions** und anschließend **Delete role**. Führen Sie die Schritte in der Konsole aus, um die Rolle zu löschen.