

Hinweis zum Ende des Supports: Am 7. Oktober 2026 AWS endet der Support für AWS Proton. Nach dem 7. Oktober 2026 können Sie nicht mehr auf die AWS Proton Konsole oder AWS Proton die Ressourcen zugreifen. Ihre bereitgestellte Infrastruktur bleibt intakt. Weitere Informationen finden Sie im [AWS Proton Service Deprecation and Migration Guide](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

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.

# Terraform-IaC-Dateien
<a name="ag-infrastructure-tmp-files-terraform"></a>

Erfahren Sie, wie Sie Terraform-Infrastruktur-as-Code-Dateien (IaC) mit verwenden. AWS Proton[Terraform](https://www.terraform.io/) ist eine weit verbreitete Open-Source-IaC-Engine, die von entwickelt wurde. [HashiCorp](https://www.hashicorp.com/) Terraform-Module wurden in HashiCorp der HCL-Sprache entwickelt und unterstützen mehrere Anbieter von Backend-Infrastrukturen, darunter Amazon Web Services.

AWS Proton unterstützt die [selbstverwaltete](ag-works-prov-methods.md#ag-works-prov-methods-self) Bereitstellung für Terraform IaC.

[Ein vollständiges Beispiel für ein Provisioning-Repository, das auf Pull-Anfragen reagiert und die Infrastrukturbereitstellung implementiert, finden Sie in der Automatisierungsvorlage Terraform Actions für on. OpenSource GitHub AWS Proton](https://github.com/aws-samples/aws-proton-terraform-github-actions-sample) GitHub

**So funktioniert die selbstverwaltete Bereitstellung mit Terraform IaC-Vorlagenpaketdateien:**

1. Wenn Sie [eine Umgebung aus Terraform-Vorlagenpaketen erstellen](ag-create-env.md), AWS Proton kompiliert Ihre Dateien mit Konsolen- oder Eingabeparametern. `.tf` `spec file`

1. Es stellt eine Pull-Anfrage, um die kompilierten IaC-Dateien mit dem [Repository zusammenzuführen, bei dem Sie sich registriert](ag-create-repo.md) haben. AWS Proton

1. Wenn die Anfrage genehmigt AWS Proton wurde, wird auf den von Ihnen angegebenen Bereitstellungsstatus gewartet.

1. Wenn die Anfrage abgelehnt wird, wird die Erstellung der Umgebung abgebrochen.

1. Wenn bei der Pull-Anfrage ein Timeout auftritt, ist die Erstellung der Umgebung *nicht* abgeschlossen.

**AWS Proton mit Überlegungen zu Terraform IaC:**
+ AWS Proton verwaltet Ihre Terraform-Bereitstellung nicht.
+ Sie müssen [ein Provisioning-Repository bei registrieren](ag-create-repo.md). AWS Proton AWS Proton stellt Pull-Requests für dieses Repository.
+ Sie müssen eine Verbindung herstellen AWS Proton , um [eine CodeStar Verbindung](setting-up-for-service.md#setting-up-vcontrol) zu Ihrem Provisioning-Repository herzustellen.
+ Um Daten aus AWS Proton kompilierten IaC-Dateien bereitzustellen, müssen Sie auf AWS Proton Pull-Requests antworten. AWS Proton sendet Pull-Requests, nachdem die Umgebung und der Dienst Aktionen erstellt und aktualisiert haben. Weitere Informationen erhalten Sie unter [AWS Proton Umgebungen](ag-environments.md) und [AWS Proton Dienstleistungen](ag-services.md).
+ Um eine Pipeline aus AWS Proton kompilierten IaC-Dateien bereitzustellen, müssen Sie [ein CI/CD Pipeline-Repository erstellen](setting-up-for-service.md#setting-up-pr-repo).
+ Ihre auf Pull-Requests basierende Bereitstellungsautomatisierung muss Schritte zur Benachrichtigung über alle AWS Proton Statusänderungen der bereitgestellten AWS Proton Ressourcen enthalten. [Sie können die API verwenden. AWS Proton NotifyResourceDeploymentStatusChange ](https://docs.aws.amazon.com/proton/latest/APIReference/API_NotifyResourceDeploymentStatusChange.html)
+ Sie können keine Dienste, Pipelines und Komponenten, die aus CloudFormation IaC-Dateien erstellt wurden, in Umgebungen bereitstellen, die aus Terraform-IaC-Dateien erstellt wurden.
+ Sie können keine Dienste, Pipelines und Komponenten, die aus Terraform-IaC-Dateien erstellt wurden, in Umgebungen bereitstellen, die aus IaC-Dateien erstellt wurden. CloudFormation 

Bei der Vorbereitung Ihrer Terraform-IaC-Dateien für fügen Sie Ihren Eingabevariablen Namespaces hinzu AWS Proton, wie in den folgenden Beispielen gezeigt. Weitere Informationen finden Sie unter [Parameter](parameters.md).

## Beispiel 1: Terraform-IaC-Umgebungsdatei AWS Proton
<a name="ag-env-tform-example"></a>

```
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
  // This tells terraform to store the state file in s3 at the location
  // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate
  backend "s3" {
    bucket = "terraform-state-bucket"
    key    = "tf-os-sample/terraform.tfstate"
    region = "us-east-1"
  }
}

// Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
  default_tags {
    tags = var.proton_tags
  }
}

resource "aws_ssm_parameter" "my_ssm_parameter" {
  name  = "my_ssm_parameter"
  type  = "String"
  // Use the Proton environment.inputs. namespace
  value = var.environment.inputs.ssm_parameter_value
}
```

## Kompilierte Infrastruktur als Code
<a name="compiled-tform"></a>

Wenn Sie eine Umgebung oder einen Dienst erstellen, AWS Proton kompiliert Ihre Infrastruktur als Codedateien mit Konsole oder `spec file` Eingaben. Es erstellt `proton.resource-type.variables.tf` `proton.auto.tfvars.json` Dateien für Ihre Eingaben, die von Terraform verwendet werden können, wie in den folgenden Beispielen gezeigt. Diese Dateien befinden sich in einem angegebenen Repository in einem Ordner, der dem Namen der Umgebung oder der Dienstinstanz entspricht.

Das Beispiel zeigt, wie AWS Proton Tags in die Variablendefinition und Variablenwerte aufgenommen werden und wie Sie diese AWS Proton Tags an bereitgestellte Ressourcen weitergeben können. Weitere Informationen finden Sie unter [Weitergabe von Tags an bereitgestellte Ressourcen](resources.md#auto-tags-prop).

### Beispiel 2: kompilierte IAc-Dateien für eine Umgebung mit dem Namen „dev“.
<a name="ag-compiled-example"></a>

**dev/environment.tf:**

```
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
  // This tells terraform to store the state file in s3 at the location
  // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate
  backend "s3" {
    bucket = "terraform-state-bucket"
    key    = "tf-os-sample/terraform.tfstate"
    region = "us-east-1"
  }
}

// Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
  default_tags {
    tags = var.proton_tags
  }
}

resource "aws_ssm_parameter" "my_ssm_parameter" {
  name  = "my_ssm_parameter"
  type  = "String"
  // Use the Proton environment.inputs. namespace
  value = var.environment.inputs.ssm_parameter_value
}
```

**dev/proton.environment.variables.tf:**

```
variable "environment" {
  type = object({
    inputs = map(string)
    name = string
  })
}

variable "proton_tags" {
  type = map(string)
  default = null
}
```

**dev/proton.auto.tfvars.json:**

```
{
  "environment": {
    "name": "dev",
    "inputs": {
      "ssm_parameter_value": "MyNewParamValue"
    }
  }

  "proton_tags" : {
    "proton:account" : "123456789012",
    "proton:template" : "arn:aws:proton:us-east-1:123456789012:environment-template/fargate-env",
    "proton:environment" : "arn:aws:proton:us-east-1:123456789012:environment/dev"
  }
}
```

## Repository-Pfade
<a name="repo-dir"></a>

AWS Proton verwendet Konsolen- oder Spezifikationseingaben aus Aktionen zur Erstellung von Umgebungen oder Diensten, um das Repository und den Pfad zu finden, in dem die kompilierten IaC-Dateien gespeichert werden sollen. Die Eingabewerte werden an Eingabeparameter mit [Namespaces](parameters.md) übergeben.

AWS Proton unterstützt zwei Layouts für Repository-Pfade. In den folgenden Beispielen werden die Pfade anhand der Namespace-Ressourcenparameter aus zwei Umgebungen benannt. Jede Umgebung hat Dienstinstanzen von zwei Diensten, und die Dienstinstanzen eines der Dienste haben direkt definierte Komponenten.

<a name="limits-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/proton/latest/userguide/ag-infrastructure-tmp-files-terraform.html)

------
#### [ Layout 1 ]

Wenn AWS Proton das angegebene Repository mit einem `environments` Ordner gefunden wird, erstellt es einen Ordner, der die kompilierten IaC-Dateien enthält und mit dem `environment.name` benannt ist.

Wenn das AWS Proton angegebene Repository mit einem `environments` Ordner gefunden wird, der einen Ordnernamen enthält, der einem mit einer Dienstinstanz kompatiblen Umgebungsnamen entspricht, erstellt es einen Ordner, der die kompilierten Instanz-IaC-Dateien enthält und mit dem benannt ist. `service_instance.name`

```
/repo
    /environments
        /env-prod                             # environment folder
            main.tf
            proton.environment.variables.tf
            proton.auto.tfvars.json
          
            /service-one-instance-one-prod    # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /service-two-instance-two-prod    # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /component-prod                   # component folder
                main.tf
                proton.component.variables.tf
                proton.auto.tfvars.json
              
        /env-staged                           # environment folder
            main.tf
            proton.variables.tf
            proton.auto.tfvars.json         
          
            /service-one-instance-one-staged  # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /service-two-instance-two-staged  # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /component-staged                 # component folder
                main.tf
                proton.component.variables.tf
                proton.auto.tfvars.json
```

------
#### [ Layout 2 ]

Wenn das AWS Proton angegebene Repository ohne Ordner gefunden wird, erstellt es einen `environments` Ordner, in dem sich die kompilierten IaC-Umgebungsdateien `environment.name` befinden.

Wenn das AWS Proton angegebene Repository mit einem Ordnernamen gefunden wird, der einem mit einer Dienstinstanz kompatiblen Umgebungsnamen entspricht, erstellt es einen `service_instance.name` Ordner, in dem die kompilierten Instanz-IaC-Dateien gespeichert werden.

```
/repo
    /env-prod                             # environment folder
        main.tf
        proton.environment.variables.tf
        proton.auto.tfvars.json
      
        /service-one-instance-one-prod    # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /service-two-instance-two-prod    # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /component-prod                   # component folder
            main.tf
            proton.component.variables.tf
            proton.auto.tfvars.json
          
    /env-staged                           # environment folder
        main.tf
        proton.variables.tf
        proton.auto.tfvars.json         
      
        /service-one-instance-one-staged  # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /service-two-instance-two-staged  # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /component-staged                 # component folder
            main.tf
            proton.component.variables.tf
            proton.auto.tfvars.json
```

------