

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 Lambda-Funktionen aufrufen mit AWS SAM
<a name="serverless-sam-cli-using-invoke"></a>

Das lokale Aufrufen einer Lambda-Funktion vor dem Testen oder Bereitstellen in der Cloud kann eine Reihe von Vorteilen haben. Es ermöglicht Ihnen, die Logik Ihrer Funktion schneller zu testen. Wenn Sie zuerst lokal testen, verringert sich die Wahrscheinlichkeit, dass Probleme beim Testen in der Cloud oder während der Bereitstellung erkannt werden, wodurch Sie unnötige Kosten vermeiden können. Darüber hinaus erleichtern lokale Tests das Debuggen.

Sie können Ihre Lambda-Funktion lokal aufrufen, indem Sie den [sam local invoke](sam-cli-command-reference-sam-local-invoke.md) Befehl verwenden und die logische ID der Funktion und eine Ereignisdatei angeben. **sam local invoke**akzeptiert auch `stdin` als Ereignis. Weitere Informationen zu Veranstaltungen finden Sie unter [Ereignis](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-event) im *AWS Lambda Entwicklerhandbuch*. Informationen zu den Formaten von Ereignisnachrichten verschiedener AWS Dienste finden Sie im *AWS Lambda Entwicklerhandbuch* [unter Verwendung AWS Lambda mit anderen Diensten](https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html).

**Anmerkung**  
Es wird nicht empfohlen, die lokalen Aufruffunktionen von SAM CLI in nicht vertrauenswürdigem Code zu verwenden. Um vollständig von Ihrer lokalen Umgebung isoliert zu sein, führen Sie den Code direkt im Lambda-Service aus.

**Anmerkung**  
Der **sam local invoke** Befehl entspricht dem Befehl AWS Command Line Interface (AWS CLI). [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html) Sie können beide Befehle verwenden, um eine Lambda-Funktion aufzurufen.

Sie müssen den **sam local invoke** Befehl in dem Projektverzeichnis ausführen, das die Funktion enthält, die Sie aufrufen möchten.

 Beispiele:

```
# Invoking function with event file
$ sam local invoke "Ratings" -e event.json

# Invoking function with event via stdin
$ echo '{"message": "Hey, are you there?" }' | sam local invoke --event - "Ratings"

# For more options
$ sam local invoke --help
```

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

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

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

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

Die `--env-vars` Option unterstützt zwei Dateiformate. Das Dateiformat wird anhand des Dateiinhalts automatisch erkannt.

### Deklarieren von Umgebungsvariablen mit JSON
<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`

### Deklarieren von Umgebungsvariablen mit .env-Dateien
<a name="serverless-sam-cli-using-invoke-environment-file-dotenv"></a>

Sie können auch eine `.env` Datei verwenden, um Umgebungsvariablen zu deklarieren. In einer `.env` Datei deklarierte Variablen gelten global für alle Funktionen und entsprechen dem `Parameters` Objekt im JSON-Format.

```
TABLE_NAME=localtable
BUCKET_NAME=amzn-s3-demo-bucket
STAGE=dev
```

Das `.env` Format unterstützt Kommentare (Zeilen, die mit beginnen`#`) und Werte in Anführungszeichen.

**Anmerkung**  
Das `.env` Format unterstützt nur globale Umgebungsvariablen. Verwenden Sie das JSON-Format, um funktionsspezifische Umgebungsvariablen zu deklarieren.

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

Um Umgebungsvariablen mit denen zu überschreiben, die in Ihrer Umgebungsvariablendatei definiert sind, verwenden Sie das `--env-vars` Argument mit den **start-api** Befehlen **invoke** oder. Beispiel:

```
# Using a JSON file
sam local invoke --env-vars env.json

# Using a .env file
sam local invoke --env-vars .env
```

## Layer
<a name="serverless-sam-cli-using-invoke-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).

## Weitere Informationen
<a name="serverless-sam-cli-using-invoke-learn"></a>

Ein praktisches Beispiel für das lokale Aufrufen von Funktionen finden Sie in [Modul 2 — Lokal ausführen](https://s12d.com/sam-ws-en-local) in *The Complete AWS SAM Workshop*.