

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 von Terraform zur Bereitstellung von Zustandsmaschinen in Step Functions
<a name="terraform-sfn"></a>

[Terraform](https://www.terraform.io/intro/) by HashiCorp ist ein Framework für die Erstellung von Anwendungen unter Verwendung von Infrastructure as Code (IaC). Mit Terraform können Sie Zustandsmaschinen erstellen und Funktionen wie die Vorschau von Infrastrukturbereitstellungen und die Erstellung wiederverwendbarer Vorlagen verwenden. Terraform-Vorlagen helfen Ihnen dabei, den Code zu verwalten und wiederzuverwenden, indem sie ihn in kleinere Abschnitte aufteilen.

Wenn Sie mit Terraform vertraut sind, können Sie den in diesem Thema beschriebenen Entwicklungszyklus als Modell für die Erstellung und Bereitstellung Ihrer Zustandsmaschinen in Terraform verfolgen. Wenn Sie mit Terraform nicht vertraut sind, empfehlen wir Ihnen, zunächst den Workshop [Einführung in Terraform zu absolvieren, um sich mit Terraform vertraut zu](https://catalog.workshops.aws/terraform101/en-US) machen. AWS

**Tipp**  
[https://catalog.workshops.aws/stepfunctions/iac/deploy-with-terraform](https://catalog.workshops.aws/stepfunctions/iac/deploy-with-terraform)

**Topics**
+ [Voraussetzungen](#terraform-sfn-prerequisites)
+ [Entwicklungslebenszyklus mit Terraform](#terraform-sfn-dev-lifecycle)
+ [IAM-Rollen und -Richtlinien für Ihren State Machine](#terraform-sfn-iam-policy)

## Voraussetzungen
<a name="terraform-sfn-prerequisites"></a>

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
+ Installieren Sie Terraform auf Ihrem Computer. [Informationen zur Installation von Terraform finden Sie unter Terraform installieren.](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ Installieren Sie Step Functions Local auf Ihrem Computer. Wir empfehlen, das Docker-Image Step Functions Local zu installieren, um Step Functions Local zu verwenden. Weitere Informationen finden Sie unter [Testen von Zustandsmaschinen mit Step Functions Local (nicht unterstützt)](sfn-local.md).
+ Installieren Sie AWS SAM CLI. Informationen zur Installation finden Sie unter [Installation der AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html) im *AWS Serverless Application Model Entwicklerhandbuch*.
+ Installieren Sie den AWS Toolkit for Visual Studio Code , um das Workflow-Diagramm Ihrer Zustandsmaschinen anzuzeigen. Informationen zur Installation finden Sie [unter Installation von AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html) im *AWS Toolkit for Visual Studio Code Benutzerhandbuch*.

## Analysieren Sie den Lebenszyklus der Maschinenentwicklung mit Terraform
<a name="terraform-sfn-dev-lifecycle"></a>

Das folgende Verfahren erklärt, wie Sie einen State-Machine-Prototyp, den Sie mit [Workflow Studio](workflow-studio.md) in der Step Functions Functions-Konsole erstellen, als Ausgangspunkt für die lokale Entwicklung mit Terraform und dem verwenden können. [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html)

Das vollständige Beispiel, in dem die Zustandsmaschine-Entwicklung mit Terraform erörtert und die Best Practices im Detail vorgestellt werden, finden Sie unter Bewährte Methoden [für das Schreiben von Step Functions Terraform-Projekten](https://aws.amazon.com/blogs/devops/best-practices-for-writing-step-functions-terraform-projects/).

**Um den Entwicklungszyklus einer State Machine mit Terraform zu beginnen**

1. Starten Sie ein neues Terraform-Projekt mit dem folgenden Befehl.

   ```
   terraform init
   ```

1. Öffnen Sie die [Step Functions Functions-Konsole](https://console.aws.amazon.com/states/home?region=us-east-1#/), um einen Prototyp für Ihre State Machine zu erstellen.

1. Gehen Sie in Workflow Studio wie folgt vor:

   1. Erstellen Sie Ihren Workflow-Prototyp.

   1. Exportieren Sie die [Amazon States Language (ASL)](concepts-amazon-states-language.md) -Definition Ihres Workflows. **Wählen Sie dazu die Dropdownliste **Import/Export** und dann JSON-Definition exportieren aus.**

1. Speichern Sie die exportierte ASL-Definition in Ihrem Projektverzeichnis.

   Sie übergeben die exportierte ASL-Definition als Eingabeparameter an die [https://registry.terraform.io/modules/terraform-aws-modules/step-functions/aws/latest](https://registry.terraform.io/modules/terraform-aws-modules/step-functions/aws/latest)Terraform-Ressource, die die Funktion verwendet. [https://developer.hashicorp.com/terraform/language/functions/templatefile](https://developer.hashicorp.com/terraform/language/functions/templatefile) Diese Funktion wird innerhalb des Definitionsfeldes verwendet, das die exportierte ASL-Definition und alle Variablenersetzungen weitergibt.
**Tipp**  
Da die ASL-Definitionsdatei lange Textblöcke enthalten kann, empfehlen wir, die Inline-EOF-Methode zu vermeiden. Dadurch ist es einfacher, Parameter in Ihre Zustandsmaschinen-Definition einzufügen.

1. (Optional) Aktualisieren Sie die ASL-Definition in Ihrer IDE und visualisieren Sie Ihre Änderungen mithilfe von. AWS Toolkit for Visual Studio Code  
![\[Screenshot der ASL-Definition eines Workflows in Visual Studio Code und seiner visuellen Darstellung.\]](http://docs.aws.amazon.com/de_de/step-functions/latest/dg/images/visualize-sm-terraform-iac.png)

   [Um zu vermeiden, dass Sie Ihre Definition ständig exportieren und in Ihr Projekt umgestalten, empfehlen wir Ihnen, Aktualisierungen lokal in Ihrer IDE vorzunehmen und diese Aktualisierungen mit Git zu verfolgen.](https://git-scm.com/) 

1. Testen Sie Ihren Workflow mit [Step Functions Local](sfn-local.md).
**Tipp**  
Mithilfe von [AWS SAM CLI](sfn-local-lambda.md) Local können Sie Serviceintegrationen mit Lambda-Funktionen und API Gateway auch lokal APIs in Ihrer Zustandsmaschine testen.

1. Zeigen Sie eine Vorschau Ihrer Zustandsmaschine und anderer AWS Ressourcen an, bevor Sie die Zustandsmaschine bereitstellen. Führen Sie dazu den folgenden Befehl aus.

   ```
   terraform plan
   ```

1. Stellen Sie Ihre Zustandsmaschine mithilfe des folgenden Befehls von Ihrer lokalen Umgebung oder über [CI/CD-Pipelines](https://aws.amazon.com/blogs/developer/build-infrastructure-ci-for-terraform-code-leveraging-aws-developer-tools-and-terratest/) aus bereit.

   ```
   terraform apply
   ```

1. (Optional) Bereinigen Sie Ihre Ressourcen und löschen Sie die Zustandsmaschine mit dem folgenden Befehl.

   ```
   terraform destroy
   ```

## IAM-Rollen und -Richtlinien für Ihren State Machine
<a name="terraform-sfn-iam-policy"></a>

Verwenden Sie die [Terraform-Dienstintegrationsrichtlinien](https://registry.terraform.io/modules/terraform-aws-modules/step-functions/aws/latest#service-integration-policies), um Ihrer Zustandsmaschine die erforderlichen IAM-Berechtigungen hinzuzufügen, z. B. die Berechtigung zum Aufrufen von Lambda-Funktionen. Sie können auch explizite Rollen und Richtlinien definieren und diese Ihrer Zustandsmaschine zuordnen.

Das folgende Beispiel für eine IAM-Richtlinie gewährt Ihrer Zustandsmaschine Zugriff, um eine Lambda-Funktion mit dem Namen aufzurufen. `myFunction`

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:InvokeFunction"
      ],
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:myFunction"
    }
  ]
}
```

Wir empfehlen außerdem, die [https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document)Datenquelle bei der Definition von IAM-Richtlinien für Ihre Zustandsmaschinen in Terraform zu verwenden. Auf diese Weise können Sie überprüfen, ob Ihre Richtlinie falsch formatiert ist, und alle Ressourcen durch Variablen ersetzen.

Das folgende Beispiel für eine IAM-Richtlinie verwendet die `aws_iam_policy_document` Datenquelle und gewährt Ihrer Zustandsmaschine Zugriff, um eine Lambda-Funktion mit dem Namen aufzurufen. `myFunction`

```
data "aws_iam_policy_document" "state_machine_role_policy" {
  
  statement {
    effect = "Allow"

    actions = [
      "lambda:InvokeFunction"
    ]

    resources = ["${aws_lambda_function.function-1.arn}:*"]
  }
  
}
```

**Tipp**  
Weitere erweiterte AWS Architekturmuster, die mit Terraform bereitgestellt wurden, finden Sie unter Terraform-Beispiele unter [Serverless Land Workflows Collection](https://serverlessland.com/workflows?framework=Terraform).