

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.

# AWS SAMCLITerraformUnterstützung
<a name="terraform-support"></a>

In diesem Abschnitt wird die Verwendung der AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) mit Ihren Terraform Projekten und der Terraform Cloud behandelt.

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

**Topics**
+ [Erste Schritte mit Terraform Support für AWS SAMCLI](gs-terraform-support.md)
+ [Verwenden von AWS SAMCLI with Terraform für lokales Debuggen und Testen](using-samcli-terraform.md)
+ [Verwenden von AWS SAMCLI with Serverless.tf für lokales Debuggen und Testen](using-samcli-serverlesstf.md)
+ [AWS SAMCLImit Terraform Referenz](terraform-reference.md)
+ [Wofür ist AWS SAMCLI Support vorgesehenTerraform?](#what-is-terraform-support)

# Erste Schritte mit Terraform Support für AWS SAMCLI
<a name="gs-terraform-support"></a>

Dieses Thema behandelt die ersten Schritte mit der Verwendung der AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) mitTerraform.

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

**Topics**
+ [AWS SAMCLITerraformVoraussetzungen](#gs-terraform-support-prerequisites)
+ [Verwenden von AWS SAMCLI Befehlen mit Terraform](#gs-terraform-support-using)
+ [Für Terraform Projekte eingerichtet](#gs-terraform-support-projects)
+ [Einrichtung für Terraform Cloud](#gs-terraform-support-cloud)

## AWS SAMCLITerraformVoraussetzungen
<a name="gs-terraform-support-prerequisites"></a>

Erfüllen Sie alle Voraussetzungen, um AWS SAMCLI mit der Verwendung von in Ihren Terraform Projekten zu beginnen.

1. 

**Installieren oder aktualisieren Sie das AWS SAMCLI**

   Um zu überprüfen, ob Sie das AWS SAMCLI installiert haben, führen Sie Folgendes aus:

   ```
   $ sam --version
   ```

   Wenn das bereits installiert AWS SAMCLI ist, wird in der Ausgabe eine Version angezeigt. Informationen zum Upgrade auf die neueste Version finden Sie unter[Aktualisierung des AWS SAMCLI](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade).

   Anweisungen zur Installation von AWS SAMCLI mit allen erforderlichen Komponenten finden Sie unter[Installieren Sie das AWS SAMCLI](install-sam-cli.md).

1. 

**Installieren Terraform**

   Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Sie Terraform installiert haben:

   ```
   $ terraform -version
   ```

   Informationen zur Installation Terraform finden [Sie unter Installieren Terraform](https://developer.hashicorp.com/terraform/downloads) in der *TerraformRegistrierung*.

1. 

**DockerFür lokale Tests installieren**

   Das AWS SAMCLI ist Docker für lokale Tests erforderlich. Informationen zur Installation Docker finden Sie unter[Installation von Docker zur Verwendung mit dem AWS SAMCLI](install-docker.md).

## Verwenden von AWS SAMCLI Befehlen mit Terraform
<a name="gs-terraform-support-using"></a>

Wenn Sie einen unterstützten AWS SAMCLI Befehl ausführen, verwenden Sie die `--hook-name` Option und geben Sie den `terraform` Wert an. Im Folgenden wird ein Beispiel gezeigt:

```
$ sam local invoke --hook-name terraform
```

Sie können diese Option in Ihrer AWS SAMCLI Konfigurationsdatei wie folgt konfigurieren:

```
hook_name = "terraform"
```

## Für Terraform Projekte eingerichtet
<a name="gs-terraform-support-projects"></a>

Führen Sie die Schritte in diesem Thema aus, um das AWS SAMCLI mit Terraform Projekten zu verwenden.

Es ist kein zusätzliches Setup erforderlich, wenn Sie Ihre AWS Lambda Artefakte außerhalb Ihres Terraform Projekts erstellen. Informationen [Verwenden von AWS SAMCLI with Terraform für lokales Debuggen und Testen](using-samcli-terraform.md) zur Verwendung von finden Sie unter AWS SAMCLI.

Wenn Sie Ihre Lambda-Artefakte in Ihren Terraform Projekten erstellen, müssen Sie wie folgt vorgehen:

1. Installieren Sie Python 3.8 oder neuer

1. Installieren Sie das Make Tool.

1. Definieren Sie die Build-Logik Ihrer Lambda-Artefakte in Ihrem Terraform Projekt.

1. Definieren Sie eine `sam metadata` Ressource, die AWS SAMCLI Sie über Ihre Build-Logik informieren soll.

1. Verwenden Sie den AWS SAMCLI `sam build` Befehl, um Ihre Lambda-Artefakte zu erstellen.

### Installieren Sie Python 3.8 oder neuer
<a name="gs-terraform-support-projects-python"></a>

Python3.8 oder neuer ist für die Verwendung mit dem erforderlich AWS SAMCLI. Wenn Sie die `sam build` Creates ausführen, AWS SAMCLI `makefiles` die Python Befehle zum Erstellen Ihrer Lambda-Artefakte enthalten.

Installationsanweisungen finden Sie unter [Python herunterladen im Python's](https://wiki.python.org/moin/BeginnersGuide/Download) *Beginners Guide*.

Stellen Sie sicher, dass Python 3.8 oder neuer zu Ihrem Computerpfad hinzugefügt wurde, indem Sie Folgendes ausführen:

```
$ python --version
```

Die Ausgabe sollte eine Version von Python 3.8 oder neuer anzeigen.

### Installieren Sie das Make Tool
<a name="gs-terraform-support-projects-make"></a>

GNU[Make](https://www.gnu.org/software/make/)ist ein Tool, das die Generierung von ausführbaren Dateien und anderen Nicht-Quelldateien für Ihr Projekt steuert. Die AWS SAMCLI Kreationen`makefiles`, die auf dieses Tool angewiesen sind, um Ihre Lambda-Artefakte zu erstellen.

Wenn Sie es nicht auf Ihrem lokalen Computer Make installiert haben, installieren Sie es, bevor Sie fortfahren.

Für Windows können Sie die Installation mit [Chocolatey durchführen](https://chocolatey.org/). Anweisungen finden Sie unter [Verwenden von Chocolatey](https://www.technewstoday.com/install-and-use-make-in-windows/#using-chocolatey) unter *So installieren und verwenden Sie „*Make“ in Windows

### Definieren Sie die Build-Logik für Lambda-Artefakte
<a name="gs-terraform-support-projects-logic"></a>

Verwenden Sie den `null_resource` Terraform Ressourcentyp, um Ihre Lambda-Build-Logik zu definieren. Im Folgenden finden Sie ein Beispiel, das ein benutzerdefiniertes Build-Skript verwendet, um eine Lambda-Funktion zu erstellen.

```
resource "null_resource" "build_lambda_function" {
    triggers = {
        build_number = "${timestamp()}" 
    }

    provisioner "local-exec" {
        command =  substr(pathexpand("~"), 0, 1) == "/"? "./py_build.sh \"${local.lambda_src_path}\" \"${local.building_path}\" \"${local.lambda_code_filename}\" Function" : "powershell.exe -File .\\PyBuild.ps1 ${local.lambda_src_path} ${local.building_path} ${local.lambda_code_filename} Function"
    }
}
```

### Definieren Sie eine Ressource sam metadata
<a name="gs-terraform-support-projects-metadata"></a>

Die `sam metadata` Ressource ist ein `null_resource` Terraform Ressourcentyp, der sie AWS SAMCLI mit den Informationen versorgt, die sie zum Auffinden Ihrer Lambda-Artefakte benötigt. Für jede Lambda-Funktion oder Schicht in Ihrem Projekt ist eine eindeutige `sam metadata` Ressource erforderlich. *Weitere Informationen zu diesem Ressourcentyp finden Sie unter [null\$1resource](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) in der Registrierung. Terraform*

**Um eine Ressource zu definieren sam metadata**

1. Geben Sie Ihrer Ressource einen Namen, der mit beginnt`sam_metadata_`, um die Ressource als sam metadata Ressource zu identifizieren.

1. Definieren Sie Ihre Lambda-Artefakteigenschaften innerhalb des `triggers` Blocks Ihrer Ressource.

1. Geben Sie mit dem `depends_on` Argument Ihre an`null_resource`, die Ihre Lambda-Build-Logik enthält.

   Im Folgenden finden Sie eine Beispielvorlage:

   ```
   resource "null_resource" "sam_metadata_..." {
     triggers = {
       resource_name = resource_name
       resource_type = resource_type
       original_source_code = original_source_code
       built_output_path = built_output_path
     }
     depends_on = [
       null_resource.build_lambda_function # ref to your build logic
     ]
   }
   ```

   Im Folgenden finden Sie eine `sam metadata` Beispielressource:

   ```
   resource "null_resource" "sam_metadata_aws_lambda_function_publish_book_review" {
       triggers = {
           resource_name = "aws_lambda_function.publish_book_review"
           resource_type = "ZIP_LAMBDA_FUNCTION"
           original_source_code = "${local.lambda_src_path}"
           built_output_path = "${local.building_path}/${local.lambda_code_filename}"
       }
       depends_on = [
           null_resource.build_lambda_function
       ]
   }
   ```

Der Inhalt Ihrer `sam metadata` Ressource variiert je nach Lambda-Ressourcentyp (Funktion oder Layer) und Verpackungstyp (ZIP oder Bild). Weitere Informationen und Beispiele finden Sie unter[Sam-Metadatenressource](terraform-sam-metadata.md).

Wenn Sie eine `sam metadata` Ressource konfigurieren und einen unterstützten AWS SAMCLI Befehl verwenden, generiert er die Metadatendatei, bevor der AWS SAMCLI Befehl ausgeführt AWS SAMCLI wird. Sobald Sie diese Datei generiert haben, können Sie die `--skip-prepare-infra` Option mit future AWS SAMCLI Befehlen verwenden, um den Metadaten-Generierungsprozess zu überspringen und Zeit zu sparen. Diese Option sollte nur verwendet werden, wenn Sie keine Änderungen an der Infrastruktur vorgenommen haben, z. B. neue Lambda-Funktionen oder neue API-Endpunkte erstellt haben.

### Verwenden Sie die AWS SAMCLI, um Ihre Lambda-Artefakte zu erstellen
<a name="gs-terraform-support-projects-build"></a>

Verwenden Sie den AWS SAMCLI `sam build` Befehl, um Ihre Lambda-Artefakte zu erstellen. Wenn Sie das ausführen`sam build`, AWS SAMCLI macht der Folgendes:

1. Sucht in Ihrem Terraform Projekt nach `sam metadata` Ressourcen, um mehr über Ihre Lambda-Ressourcen zu erfahren und diese zu finden.

1. Initiiert Ihre Lambda-Build-Logik, um Ihre Lambda-Artefakte zu erstellen.

1. Erstellt ein `.aws-sam` Verzeichnis, das Ihr Terraform Projekt für die Verwendung mit den Befehlen organisiert. AWS SAMCLI `sam local`

**Um mit Sam Build zu bauen**

1. Führen Sie in dem Verzeichnis, das Ihr Terraform Root-Modul enthält, Folgendes aus:

   ```
   $ sam build --hook-name terraform
   ```

1. Führen Sie den folgenden Befehl aus, um eine bestimmte Lambda-Funktion oder -Layer zu erstellen

   ```
   $ sam build --hook-name terraform lambda-resource-id
   ```

   Die Lambda-Ressourcen-ID kann der Name der Lambda-Funktion oder die vollständige Terraform Ressourcenadresse sein, z. B. `aws_lambda_function.list_books` oder. `module.list_book_function.aws_lambda_function.this[0]`

Wenn sich Ihr Funktionsquellcode oder andere Terraform Konfigurationsdateien außerhalb des Verzeichnisses befinden, das Ihr Terraform Stammmodul enthält, müssen Sie den Speicherort angeben. Verwenden Sie die `--terraform-project-root-path` Option, um den absoluten oder relativen Pfad zum Verzeichnis der obersten Ebene anzugeben, das diese Dateien enthält. Im Folgenden wird ein Beispiel gezeigt:

```
$ sam build --hook-name terraform --terraform-project-root-path ~/projects/terraform/demo
```

#### Mithilfe eines Containers erstellen
<a name="gs-terraform-support-projects-build-container"></a>

Wenn Sie den AWS SAMCLI `sam build` Befehl ausführen, können Sie den so konfigurieren, AWS SAMCLI dass Ihre Anwendung mithilfe eines lokalen Docker Containers erstellt wird.

**Anmerkung**  
Sie müssen es Docker installiert und konfiguriert haben. Detaillierte Anweisungen finden Sie unter [Installation von Docker zur Verwendung mit dem AWS SAMCLI](install-docker.md).

**Um mit einem Container zu bauen**

1. Erstellen Sie eine`Dockerfile`, die die Make Tools TerraformPython, und enthält. Sie sollten auch Ihre Lambda-Funktionslaufzeit angeben.

   Das Folgende ist ein Beispiel: `Dockerfile`

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:2
   
   RUN yum -y update \
       && yum install -y unzip tar gzip bzip2-devel ed gcc gcc-c++ gcc-gfortran \
       less libcurl-devel openssl openssl-devel readline-devel xz-devel \
       zlib-devel glibc-static libcxx libcxx-devel llvm-toolset-7 zlib-static \
       && rm -rf /var/cache/yum
   
   RUN yum -y install make \
       && yum -y install zip
   
   RUN yum install -y yum-utils \
       && yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo \
       && yum -y install terraform \
       && terraform --version
   
   # AWS Lambda Builders
   RUN amazon-linux-extras enable python3.8
   RUN yum clean metadata && yum -y install python3.8
   RUN curl -L get-pip.io | python3.8
   RUN pip3 install aws-lambda-builders
   RUN ln -s /usr/bin/python3.8 /usr/bin/python3
   RUN python3 --version
   
   VOLUME /project
   WORKDIR /project
   
   ENTRYPOINT ["sh"]
   ```

1. Verwenden Sie [https://docs.docker.com/engine/reference/commandline/build/](https://docs.docker.com/engine/reference/commandline/build/), um Ihr Docker Image zu erstellen.

   Im Folgenden wird ein Beispiel gezeigt:

   ```
   $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
   ```

1. Führen Sie den AWS SAMCLI `sam build` Befehl mit den `--build-image` Optionen `--use-container` und aus.

   Im Folgenden wird ein Beispiel gezeigt:

   ```
   $ sam build --use-container --build-image terraform-build:v1
   ```

### Nächste Schritte
<a name="gs-terraform-support-projects-next"></a>

Informationen zur ersten Verwendung von AWS SAMCLI mit Ihren Terraform Projekten finden Sie unter[Verwenden von AWS SAMCLI with Terraform für lokales Debuggen und Testen](using-samcli-terraform.md).

## Einrichtung für Terraform Cloud
<a name="gs-terraform-support-cloud"></a>

Wir empfehlen, die Version Terraform v1.6.0 oder eine neuere Version zu verwenden. Wenn Sie eine ältere Version verwenden, müssen Sie lokal eine Terraform Plandatei generieren. Die lokale Plandatei enthält die AWS SAM CLI Informationen, die sie benötigt, um lokale Tests und Debuggings durchzuführen.

**Um eine lokale Plandatei zu generieren**
**Anmerkung**  
Diese Schritte sind in Terraform v1.6.0 oder neuer Version nicht erforderlich. Informationen zum Einstieg in die Verwendung von AWS SAM CLI with Terraform Cloud finden Sie unter[Verwenden mit AWS SAMCLI Terraform](using-samcli-terraform.md).

1. **Ein API-Token konfigurieren** — Die Art des Tokens hängt von Ihrer Zugriffsebene ab. Weitere Informationen finden Sie in der *Terraform CloudDokumentation* unter [API-Token](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/api-tokens).

1. **Legen Sie die Umgebungsvariable Ihres API-Tokens** fest — Im Folgenden finden Sie ein Beispiel aus der Befehlszeile:

   ```
   $ export TOKEN="<api-token-value>"
   ```

1. **Ermitteln Sie Ihre Run-ID** — Suchen Sie in der Terraform Cloud Konsole die Run-ID für den Terraform Run, den Sie mit dem verwenden möchten AWS SAMCLI.

   Die Run-ID befindet sich im Breadcrumb-Pfad Ihres Laufs.  
![\[Der Breadcrumb-Pfad, in dem Terraform Cloud die Run-ID angezeigt wird.\]](http://docs.aws.amazon.com/de_de/serverless-application-model/latest/developerguide/images/terraform-01.png)

1. **Die Plandatei abrufen — Rufen** Sie mithilfe Ihres API-Tokens Ihre lokale Plandatei ab. Im Folgenden finden Sie ein Beispiel aus der Befehlszeile:

   ```
   curl \
      --header "Authorization: Bearer $TOKEN" \
      --header "Content-Type: application/vnd.api+json" \
      --location \
      https://app.terraform.io/api/v2/runs/<run ID>/plan/json-output \
      > custom_plan.json
   ```

Sie sind jetzt bereit, AWS SAMCLI with zu verwendenTerraform Cloud. Wenn Sie einen unterstützten AWS SAMCLI Befehl verwenden, verwenden Sie die `--terraform-plan-file` Option, um den Namen und den Pfad Ihrer lokalen Plandatei anzugeben. Im Folgenden wird ein Beispiel gezeigt:

```
$ sam local invoke --hook-name terraform --terraform-plan-file custom-plan.json
```

Im Folgenden finden Sie ein Beispiel für die Verwendung des `sam local start-api` Befehls:

```
$ sam local start-api --hook-name terraform --terraform-plan-file custom-plan.json
```

*Eine Beispielanwendung, die Sie mit diesen Beispielen verwenden können, finden Sie unter [api\$1gateway\$1v2\$1tf\$1cloud](https://github.com/aws-samples/aws-sam-terraform-examples/tree/main/ga/api_gateway_v2_tf_cloud) im aws-samples Repository. GitHub*

### Nächste Schritte
<a name="gs-terraform-support-cloud-next"></a>

Informationen zum Einstieg in die Verwendung von AWS SAMCLI with Terraform Cloud finden Sie unter[Verwenden von AWS SAMCLI with Terraform für lokales Debuggen und Testen](using-samcli-terraform.md).

# Verwenden von AWS SAMCLI with Terraform für lokales Debuggen und Testen
<a name="using-samcli-terraform"></a>

In diesem Thema wird beschrieben, wie Sie unterstützte Befehle der AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) mit Ihren Terraform Projekten und verwendenTerraform Cloud.

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

**Topics**
+ [Lokales Testen mit sam local invoke](#using-samcli-terraform-local-invoke)
+ [Lokales Testen mit sam local start-api](#using-samcli-terraform-local-start-api)
+ [Lokales Testen mit sam local start-lambda](#using-samcli-terraform-local-start-lambda)
+ [Terraform-Einschränkungen](#using-samcli-terraform-unsupported)

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

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

Im Folgenden finden Sie ein Beispiel für das lokale Testen Ihrer Lambda-Funktion, 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 sam local start-api
<a name="using-samcli-terraform-local-start-api"></a>

Um `sam local start-api` mit zu verwendenTerraform, führen Sie den folgenden Befehl 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 sam local 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, rufen sie AWS SAMCLI automatisch Ihren Lambda-Autorisierer auf, 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 in finden Sie [https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage)in Terraform der Registrierung. Terraform*

## Lokales Testen mit sam local 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 der AWS Command Line Interface (AWS CLI):

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

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

1. Verwenden Sie die 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>

Bei der Verwendung von with gelten folgende EinschränkungenTerraform: AWS SAMCLI
+ Lambda-Funktionen, die mit mehreren Ebenen verknüpft sind.
+ Terraformlokale Variablen, die Verbindungen zwischen Ressourcen definieren.
+ Verweisen auf eine 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 vermeiden, können Sie ausführen, `terraform apply` wenn eine neue Ressource hinzugefügt wird.

# Verwenden von AWS SAMCLI with Serverless.tf für lokales Debuggen und Testen
<a name="using-samcli-serverlesstf"></a>

Die AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) kann mit Serverless.tf-Modulen zum lokalen Debuggen und Testen Ihrer Funktionen und Ebenen verwendet werden. AWS Lambda Die folgenden Befehle werden unterstützt: AWS SAMCLI
+ `sam build`
+ `sam local invoke`
+ `sam local start-api`
+ `sam local start-lambda`

**Anmerkung**  
Serverless.tf Version 4.6.0 und neuer unterstützt die Integration. AWS SAMCLI

Um zu beginnen, die AWS SAMCLI mit Ihren Serverless.TF-Modulen zu verwenden, aktualisieren Sie auf die neueste Version von Serverless.tf und die. AWS SAMCLI

Ab Version 6.0.0 von **serverless.tf** müssen Sie den Parameter auf setzen. `create_sam_metadata` `true` Dadurch werden die Metadatenressourcen generiert, die der Befehl benötigt. AWS SAMCLI `sam build`

Weitere Informationen zu Serverless.tf finden Sie im [terraform-aws-lambda-module](https://registry.terraform.io/modules/terraform-aws-modules/lambda/aws/latest).

# AWS SAMCLImit Terraform Referenz
<a name="terraform-reference"></a>

Dieser Abschnitt ist die Referenz für die Verwendung der AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) Terraform für lokales Debuggen und Testen.

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

## AWS SAM Referenz zu den unterstützten Funktionen
<a name="terraform-reference-sam"></a>

Eine Referenzdokumentation für AWS SAMCLI Funktionen, deren Verwendung mit Terraform unterstützt wird, finden Sie hier:
+ [sam build](sam-cli-command-reference-sam-build.md)
+ [sam local invoke](sam-cli-command-reference-sam-local-invoke.md)
+ [sam local start-api](sam-cli-command-reference-sam-local-start-api.md)
+ [sam local start-lambda](sam-cli-command-reference-sam-local-start-lambda.md)

## Terraformspezifische Referenz
<a name="terraform-reference-specific"></a>

Spezifische Referenzdokumentation zur Verwendung von AWS SAMCLI Terraform with finden Sie hier:
+ [Sam-Metadatenressource](terraform-sam-metadata.md)

# Sam-Metadatenressource
<a name="terraform-sam-metadata"></a>

Diese Seite enthält Referenzinformationen für den **sam metadata resource** Ressourcentyp, der für Terraform Projekte verwendet wird.
+ Eine Einführung in die Verwendung der AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) mit Terraform finden Sie unter[Wofür ist AWS SAMCLI Support vorgesehenTerraform?](terraform-support.md#what-is-terraform-support).
+ Informationen zur Verwendung von AWS SAMCLI with Terraform finden Sie unter[Verwenden von AWS SAMCLI with Terraform für lokales Debuggen und Testen](using-samcli-terraform.md).

**Topics**
+ [Argumente](#terraform-sam-metadata-arguments)
+ [Beispiele](#terraform-sam-metadata-examples)

## Argumente
<a name="terraform-sam-metadata-arguments"></a>


****  

| Argument | Description | 
| --- | --- | 
| built\$1output\$1path | Der Pfad zu den erstellten Artefakten Ihrer AWS Lambda Funktion. | 
| docker\$1build\$1args | Decodierte Zeichenfolge des JSON-Objekts mit den Docker-Build-Argumenten. Dieses Argument ist optional. | 
| docker\$1context | Der Pfad zu dem Verzeichnis, das den Docker-Image-Build-Kontext enthält. | 
| docker\$1file |  Der Pfad zur Docker-Datei. Dieser Pfad ist relativ zum `docker_context` Pfad. Dieses Argument ist optional. Der Standardwert ist `Dockerfile`.  | 
| docker\$1tag | Der Wert des erstellten Docker-Image-Tags. Dieser Wert ist optional. | 
| depends\$1on | Der Pfad zur Building-Ressource für Ihre Lambda-Funktion oder -Layer. Weitere Informationen finden Sie unter [Das **depends\$1on** Argument](https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on) in der TerraformRegistrierung. | 
| original\$1source\$1code |  Der Pfad, an dem Ihre Lambda-Funktion definiert ist. Dieser Wert kann eine Zeichenfolge, ein Array von Zeichenfolgen oder ein dekodiertes JSON-Objekt als Zeichenfolge sein. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| resource\$1name | Der Name der Lambda-Funktion. | 
| resource\$1type |  Das Format Ihres Lambda-Funktionspakettyps. Zulässige Werte sind: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| source\$1code\$1property | Der Pfad zum Lambda-Ressourcencode im JSON-Objekt. Definieren Sie diese Eigenschaft, wenn original\$1source\$1code es sich um ein JSON-Objekt handelt. | 

## Beispiele
<a name="terraform-sam-metadata-examples"></a>

### Sam-Metadatenressource, die unter Verwendung des ZIP-Pakettyps auf eine Lambda-Funktion verweist
<a name="terraform-sam-metadata-examples-example1"></a>

```
# Lambda function resource
resource "aws_lambda_function" "tf_lambda_func" {
  filename = "${path.module}/python/hello-world.zip"
  handler = "index.lambda_handler"
  runtime = "python3.8"
  function_name = "function_example"
  role = aws_iam_role.iam_for_lambda.arn
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}

# sam metadata resource
resource "null_resource" "sam_metadata_function_example" {
  triggers = {
    resource_name = "aws_lambda_function.function_example"
    resource_type = "ZIP_LAMBDA_FUNCTION"
    original_source_code = "${path.module}/python"
    built_output_path = "${path.module}/building/function_example"
  }
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}
```

### Sam-Metadatenressource, die unter Verwendung des Image-Pakettyps auf eine Lambda-Funktion verweist
<a name="terraform-sam-metadata-examples-example2"></a>

```
resource "null_resource" "sam_metadata_function {
  triggers = {
    resource_name = "aws_lambda_function.image_function"
    resource_type = "IMAGE_LAMBDA_FUNCTION"
    docker_context = local.lambda_src_path
    docker_file = "Dockerfile"
    docker_build_args = jsonencode(var.build_args)
    docker_tag = "latest"
  }
}
```

### SAM-Metadatenressource, die auf eine Lambda-Schicht verweist
<a name="terraform-sam-metadata-examples-example3"></a>

```
resource "null_resource" "sam_metadata_layer1" {
  triggers = {
    resource_name = "aws_lambda_layer_version.layer"
    resource_type = "LAMBDA_LAYER"
    original_source_code = local.layer_src
    built_output_path = "${path.module}/${layer_build_path}"
  }
  depends_on = [null_resource.layer_build]
}
```

## Wofür ist AWS SAMCLI Support vorgesehenTerraform?
<a name="what-is-terraform-support"></a>

Verwenden Sie die AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) mit Ihren Terraform Projekten oder Terraform Cloud zum lokalen Debuggen und Testen von:
+ AWS Lambda Funktionen und Ebenen.
+ Amazon API Gateway APIs.

Eine Einführung in das Terraform finden Sie unter [Was istTerraform?](https://developer.hashicorp.com/terraform/intro) auf der *HashiCorpTerraformWebsite*.

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

**Anmerkung**  
Im Rahmen des AWS SAMCLI Parsing-Schritts der Integration generieren AWS SAMCLI Prozesse, Benutzerbefehle, Projektdateien und -daten. Die Befehlsausgabe sollte unverändert bleiben, aber in bestimmten Umgebungen kann die Umgebung oder der Runner zusätzliche Protokolle oder Informationen in die Ausgabe einfügen.

**Topics**
+ [Was ist das AWS SAMCLI?](#what-is-terraform-support-sam-cli)
+ [Wie verwende ich das AWS SAMCLI mitTerraform?](#what-is-terraform-support-how)
+ [Nächste Schritte](#what-is-terraform-support-next)

### Was ist das AWS SAMCLI?
<a name="what-is-terraform-support-sam-cli"></a>

Das AWS SAMCLI ist ein Befehlszeilentool, das Sie mit AWS SAM Vorlagen und unterstützten Integrationen von Drittanbietern verwenden können, z. B. Terraform um Ihre serverlosen Anwendungen zu erstellen und auszuführen. Eine Einführung in das finden Sie unter AWS SAMCLI. [Was ist das? AWS SAMCLI](what-is-sam-overview.md#what-is-sam-cli)

Der AWS SAMCLI unterstützt die folgenden Befehle fürTerraform:
+ `sam local invoke`— Initiiert einen einmaligen lokalen Aufruf einer AWS Lambda Funktionsressource. Weitere Informationen zu diesem Befehl finden Sie unter[Einführung in das Testen mit sam local invoke](using-sam-cli-local-invoke.md).
+ `sam local start-api`— Führen Sie Ihre Lambda-Ressourcen lokal aus und testen Sie sie über einen lokalen HTTP-Serverhost. Diese Art von Tests ist hilfreich für Lambda-Funktionen, die von einem API-Gateway-Endpunkt aufgerufen werden. Weitere Informationen zu diesem Befehl finden Sie unter. [Einführung in das Testen mit sam local start-api](using-sam-cli-local-start-api.md)
+ `sam local start-lambda`— Starten Sie einen lokalen Endpunkt für Ihre Lambda-Funktion, um Ihre Funktion lokal mit AWS Command Line Interface (AWS CLI) oder aufzurufen. SDKs 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)

### Wie verwende ich das AWS SAMCLI mitTerraform?
<a name="what-is-terraform-support-how"></a>

Der [TerraformKernworkflow](https://developer.hashicorp.com/terraform/intro/core-workflow) besteht aus drei Phasen: **Schreiben**, **Planen** und **Anwenden**. Mit der AWS SAMCLI Unterstützung für Terraform können Sie die Vorteile des AWS SAMCLI `sam local` Befehlssatzes nutzen und gleichzeitig Ihre Terraform Workflows weiterhin zur Verwaltung Ihrer Anwendungen verwenden AWS. Im Allgemeinen bedeutet dies Folgendes:
+ **Schreiben** — Verfassen Sie Ihre Infrastruktur als Code mithilfe vonTerraform.
+ **Testen und Debuggen** — Verwenden Sie den AWS SAMCLI, um Ihre Anwendungen lokal zu testen und zu debuggen.
+ **Planen — Sehen Sie** sich vor der Anwendung eine Vorschau der Änderungen an.
+ **Anwenden** — Stellen Sie Ihre Infrastruktur bereit.

Ein Beispiel für die Verwendung von AWS SAMCLI with Terraform finden Sie unter [Better together: AWS SAMCLI und HashiCorp Terraform](https://aws.amazon.com/blogs/compute/better-together-aws-sam-cli-and-hashicorp-terraform/) im *AWS Compute-Blog*.

### Nächste Schritte
<a name="what-is-terraform-support-next"></a>

Informationen zum Erfüllen aller Voraussetzungen und zur Einrichtung Terraform finden Sie unter[Erste Schritte mit Terraform Support für AWS SAMCLI](gs-terraform-support.md).