

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.

# Lokal ausgeführtes API Gateway mit AWS SAM
<a name="serverless-sam-cli-using-start-api"></a>

Die lokale Ausführung von Amazon API Gateway kann eine Vielzahl von Vorteilen haben. Wenn Sie API Gateway lokal ausführen, können Sie beispielsweise API-Endpunkte vor der Bereitstellung in der AWS Cloud lokal testen. Wenn Sie zuerst lokal testen, können Sie häufig weniger Tests und Entwicklungen in der Cloud durchführen, was zur Kostensenkung beitragen kann. Darüber hinaus erleichtert die lokale Ausführung das Debuggen. 

Verwenden Sie den Befehl, um eine lokale Instanz von API Gateway zu starten, mit der Sie die HTTP-Anforderungs-/Antwortfunktionalität testen können. `sam local start-api` AWS SAMCLI Diese Funktion bietet Hot-Reloading, sodass Sie Ihre Funktionen schnell weiterentwickeln und überarbeiten können.

**Anmerkung**  
*Beim erneuten Laden* im laufenden Betrieb werden nur die Dateien aktualisiert, die sich geändert haben, und der Status der Anwendung bleibt unverändert. Im Gegensatz dazu wird *beim Live-Reloading* die gesamte Anwendung aktualisiert und der Status der Anwendung geht verloren.

Anweisungen zur Verwendung des `sam local start-api` Befehls finden Sie unter. [Einführung in das Testen mit sam local start-api](using-sam-cli-local-start-api.md)

 AWS SAM Verwendet standardmäßig AWS Lambda Proxyintegrationen und unterstützt sowohl `HttpApi` `Api` Ressourcentypen als auch. Weitere Informationen zu Proxyintegrationen für `HttpApi` Ressourcentypen finden Sie unter [Arbeiten mit AWS Lambda Proxyintegrationen für HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html) im *API Gateway Developer Guide*. Weitere Informationen zu Proxyintegrationen mit `Api` Ressourcentypen finden Sie unter [Grundlegendes zur API Gateway Lambda-Proxyintegration](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-create-api-as-simple-proxy) im *API Gateway Developer Guide*.

**Beispiel:**

```
$ sam local start-api
```

AWS SAM findet automatisch alle Funktionen in Ihrer AWS SAM Vorlage, für die `Api` Ereignisquellen `HttpApi` definiert wurden. Dann hängt es die Funktion an den definierten HTTP-Pfaden ein.

Im folgenden `Api` Beispiel wird die `Ratings` Funktion `ratings.py:handler()` bei For-Anfragen eingebunden`/ratings`: `GET`

```
Ratings:
  Type: AWS::Serverless::Function
  Properties:
    Handler: ratings.handler
    Runtime: python3.9
    Events:
      Api:
        Type: Api
        Properties:
          Path: /ratings
          Method: get
```

Hier ist ein Beispiel für eine `Api` Antwort:

```
// Example of a Proxy Integration response
exports.handler = (event, context, callback) => {
    callback(null, {
        statusCode: 200,
        headers: { "x-custom-header" : "my custom header value" },
        body: "hello world"
    });
}
```

Wenn Sie den Code Ihrer Funktion ändern, führen Sie den `sam build` Befehl for aus, `sam local start-api` um Ihre Änderungen zu erkennen.

## Umgebungsvariablendatei
<a name="serverless-sam-cli-using-start-api-environment-variable"></a>

Gehen Sie wie folgt vor, um Umgebungsvariablen lokal zu deklarieren, die die in Ihren Vorlagen definierten Werte überschreiben:

1. Erstellen Sie eine JSON-Datei, die die zu überschreibenden Umgebungsvariablen enthält.

1. Verwenden Sie das `--env-vars` Argument, um die in Ihren Vorlagen definierten Werte zu überschreiben.

### Umgebungsvariablen deklarieren
<a name="serverless-sam-cli-using-invoke-environment-file-declaring"></a>

Um Umgebungsvariablen zu deklarieren, die global für alle Ressourcen gelten, geben Sie ein `Parameters` Objekt wie das Folgende an:

```
{
    "Parameters": {
        "TABLE_NAME": "localtable",
        "BUCKET_NAME": "amzn-s3-demo-bucket",
        "STAGE": "dev"
    }
}
```

Um unterschiedliche Umgebungsvariablen für jede Ressource zu deklarieren, geben Sie Objekte für jede Ressource wie folgt an:

```
{
    "MyFunction1": {
        "TABLE_NAME": "localtable",
        "BUCKET_NAME": "amzn-s3-demo-bucket",
    },
    "MyFunction2": {
        "TABLE_NAME": "localtable",
        "STAGE": "dev"
    }
}
```

Bei der Angabe von Objekten für jede Ressource können Sie die folgenden Bezeichner verwenden, die in der Reihenfolge von höchster bis niedrigster Priorität aufgeführt sind:

1. `logical_id`

1. `function_id`

1. `function_name`

1. Vollständige Pfadkennung

Sie können beide oben genannten Methoden zum Deklarieren von Umgebungsvariablen zusammen in einer einzigen Datei verwenden. Dabei haben Umgebungsvariablen, die Sie für bestimmte Ressourcen bereitgestellt haben, Vorrang vor globalen Umgebungsvariablen.

Speichern Sie Ihre Umgebungsvariablen in einer JSON-Datei, z. B. `env.json`

### Werte von Umgebungsvariablen überschreiben
<a name="serverless-sam-cli-using-start-api-environment-file-override"></a>

Um Umgebungsvariablen mit den in Ihrer JSON-Datei definierten Variablen zu überschreiben, verwenden Sie das `--env-vars` Argument mit den **start-api** Befehlen **invoke** oder. Beispiel:

```
$ sam local start-api --env-vars env.json
```

## Layer
<a name="serverless-sam-cli-using-start-api-layers"></a>

Wenn Ihre Anwendung Ebenen enthält, finden Sie Informationen zum Debuggen von Problemen mit Layern auf Ihrem lokalen Host unter[Steigern Sie die Effizienz mithilfe von Lambda-Schichten mit AWS SAM](serverless-sam-cli-layers.md).