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
Erfahren Sie, wie Sie Terraform-Infrastruktur-as-Code-Dateien (IaC) mit verwenden. AWS ProtonTerraform
AWS Proton unterstützt die selbstverwaltete Bereitstellung für Terraform IaC.
So funktioniert die selbstverwaltete Bereitstellung mit Terraform IaC-Vorlagenpaketdateien:
-
Wenn Sie eine Umgebung aus Terraform-Vorlagenpaketen erstellen, AWS Proton kompiliert Ihre Dateien mit Konsolen- oder Eingabeparametern.
.tf
spec file
-
Es stellt eine Pull-Anfrage, um die kompilierten IaC-Dateien mit dem Repository zusammenzuführen, bei dem Sie sich registriert haben. AWS Proton
-
Wenn die Anfrage genehmigt AWS Proton wurde, wird auf den von Ihnen angegebenen Bereitstellungsstatus gewartet.
-
Wenn die Anfrage abgelehnt wird, wird die Erstellung der Umgebung abgebrochen.
-
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. AWS Proton AWS Proton stellt Pull-Requests für dieses Repository.
-
Sie müssen eine Verbindung herstellen AWS Proton , um eine CodeStar Verbindung 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 und AWS Proton Dienstleistungen.
-
Um eine Pipeline aus AWS Proton kompilierten IaC-Dateien bereitzustellen, müssen Sie ein CI/CD-Pipeline-Repository erstellen.
-
Ihre auf Pull-Requests basierende Bereitstellungsautomatisierung muss Schritte zur Benachrichtigung über alle Statusänderungen AWS Proton der bereitgestellten AWS Proton Ressourcen enthalten. Sie können die API verwenden. AWS Proton NotifyResourceDeploymentStatusChange
-
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.
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
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.tfproton.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.
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
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 ü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.
Ressourcentyp | Benennen Sie den Parameter | = | Ressourcenname |
---|---|---|---|
Umgebung | environment.name |
= | "env-prod" |
Umgebung | environment.name |
"env-staged" |
|
Service | service.name |
"service-one" |
|
Service-Instance | service_instance.name |
"instance-one-prod" |
|
Service-Instance | service_instance.name |
"instance-one-staged" |
|
Service | service.name |
"service-two" |
|
Service-Instance | service_instance.name |
"instance-two-prod" |
|
Komponente | service_instance.components.default.name |
"component-prod" |
|
Service-Instance | service_instance.name |
"instance-two-staged" |
|
Komponente | service_instance.components.default.name |
"component-staged" |