

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.

# Verwendung der AWS SAM CLI mit Terraform zum lokalen Debuggen und Testen
<a name="using-samcli-terraform"></a>

In diesem Thema wird beschrieben, wie Sie unterstützte AWS Serverless Application Model Command Line Interface (AWS SAMCLI) -Befehle mit Ihren Terraform Projekten verwenden undTerraform Cloud.

Erstellen Sie ein [GitHub Problem, um Feedback zu geben und Funktionsanfragen einzureichen](https://github.com/aws/aws-sam-cli/issues/new?labels=area%2Fterraform).

**Topics**
+ [Lokales Testen mit gleicher lokaler Aufruf](#using-samcli-terraform-local-invoke)
+ [Lokales Testen mit dieselbe lokale Start-API](#using-samcli-terraform-local-start-api)
+ [Lokales Testen mit sam lokales Start-Lambda](#using-samcli-terraform-local-start-lambda)
+ [Terraform Einschränkungen](#using-samcli-terraform-unsupported)

## Lokales Testen mit gleicher lokaler Aufruf
<a name="using-samcli-terraform-local-invoke"></a>

**Anmerkung**  
Um den zum lokalen Testen AWS SAMCLI zu verwenden, müssen Sie Docker installiert und konfiguriert haben. Detaillierte Anweisungen finden Sie unter [Installation von Docker zur Verwendung mit dem AWS SAMCLI](install-docker.md).

Im Folgenden finden Sie ein Beispiel dafür, wie Sie Ihre Lambda-Funktion lokal testen, indem Sie ein Ereignis übergeben:

```
$ sam local invoke --hook-name terraform {{hello_world_function}} -e {{events/event.json}} -
```

Weitere Informationen zur Verwendung dieses Befehls finden Sie unter[Einführung in das Testen mit sam local invoke](using-sam-cli-local-invoke.md).

## Lokales Testen mit dieselbe lokale Start-API
<a name="using-samcli-terraform-local-start-api"></a>

Um es `sam local start-api` mit zu verwendenTerraform, führen Sie Folgendes aus:

```
$ sam local start-api --hook-name terraform
```

Im Folgenden wird ein Beispiel gezeigt:

```
$ sam local start-api --hook-name terraform                                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                          
Running Prepare Hook to prepare the current application                                                                                                                                                   
Executing prepare hook of hook "terraform"                                                                                                                                                                
Initializing Terraform application                                                                                                                                                                        
...
Creating terraform plan and getting JSON output                                                                                                                                                           
....
Generating metadata file                                                                                                                                                                                  
                                                                                                                                                                                                          
Unresolvable attributes discovered in project, run terraform apply to resolve them.                                                                                                                       
                                                                                                                                                                                                          
Finished generating metadata file. Storing in...
Prepare hook completed and metadata file generated at: ...    
Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]                                                                                                                                          
Mounting None at http://127.0.0.1:3000/hello [POST]                                                                                                                                                       
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. If you  
used sam build before running local commands, you will need to re-run sam build for the changes to be picked up. You only need to restart SAM CLI if you update your AWS SAM template                     
2023-06-26 13:21:20  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
```

Weitere Informationen zu diesem Befehl finden Sie unter[Einführung in das Testen mit dieselbe lokale Start-API](using-sam-cli-local-start-api.md).

### Lambda-Funktionen, die Lambda-Autorisierer verwenden
<a name="using-sam-cli-terraform-local-start-api-authorizers"></a>

Für Lambda-Funktionen, die für die Verwendung von Lambda-Autorisierern konfiguriert sind, AWS SAMCLI wird automatisch Ihr Lambda-Autorisierer aufgerufen, bevor Sie Ihren Lambda-Funktionsendpunkt aufrufen.
+ Weitere Informationen zu dieser Funktion finden Sie unter. AWS SAMCLI [Lambda-Funktionen, die Lambda-Autorisierer verwenden](using-sam-cli-local-start-api.md#using-sam-cli-local-start-api-authorizers)
+ Weitere Informationen zur Verwendung von Lambda-Autorisierern finden Sie unter Terraform [Resource: aws\_api\_gateway\_authorizer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage) In der Registrierung. * Terraform *

## Lokales Testen mit sam lokales Start-Lambda
<a name="using-samcli-terraform-local-start-lambda"></a>

Das Folgende ist ein Beispiel für das lokale Testen Ihrer Lambda-Funktion mit dem (): AWS Command Line Interface AWS CLI

1. Verwenden Sie das AWS SAMCLI, um eine lokale Testumgebung zu erstellen:

   ```
   $ sam local start-lambda --hook-name terraform {{hello_world_function}}
   ```

1. Verwenden Sie den AWS CLI , um Ihre Funktion lokal aufzurufen:

   ```
   $ aws lambda invoke --function-name {{hello_world_function}} --endpoint-url {{http://127.0.0.1:3001/ response.json --cli-binary-format raw-in-base64-out --payload file://events/event.json}}
   ```

Weitere Informationen zu diesem Befehl finden Sie unter[Einführung in das Testen mit sam local start-lambda](using-sam-cli-local-start-lambda.md).

## Terraform Einschränkungen
<a name="using-samcli-terraform-unsupported"></a>

Die folgenden Einschränkungen gelten bei der Verwendung von AWS SAMCLI withTerraform:
+ Lambda-Funktionen, die mit mehreren Ebenen verknüpft sind.
+ Terraformlokale Variablen, die Verbindungen zwischen Ressourcen definieren.
+ Referenzierung einer Lambda-Funktion, die noch nicht erstellt wurde. Dazu gehören Funktionen, die im Body-Attribut der REST-API-Ressource definiert sind.

Um diese Einschränkungen zu umgehen, können Sie ausführen, `terraform apply` wenn eine neue Ressource hinzugefügt wird.