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 Infrastructure as Code (IaC)-Dateien mit verwenden AWS Proton. Terraform
AWS Proton unterstützt die selbstverwaltete Bereitstellung für Terraform IaC .
Ein vollständiges Beispiel für ein Bereitstellungs-Repository, das auf Pull-Anfragen reagiert und die Infrastrukturbereitstellung implementiert, finden Sie unter Terraform- OpenSource GitHub Aktionen-Automatisierungsvorlage für AWS Proton
So funktioniert die selbstverwaltete Bereitstellung mit Terraform-IaC-Vorlagenpaketdateien:
-
Wenn Sie eine Umgebung aus Terraform-Vorlagenpaketen erstellen, AWS Proton kompiliert Ihre
.tf
Dateien mit Konsolen- oderspec file
Eingabeparametern. -
Er stellt eine Pull-Anforderung, um die kompilierten IaC-Dateien mit dem Repository zusammenzuführen, das Sie bei registriert haben AWS Proton.
-
Wenn die Anforderung genehmigt wurde, AWS Proton wartet auf den Bereitstellungsstatus, den Sie angeben.
-
Wenn die Anforderung abgelehnt wird, wird die Umgebungserstellung abgebrochen.
-
Wenn bei der Pull-Anforderung eine Zeitüberschreitung auftritt, ist die Umgebungserstellung nicht abgeschlossen.
AWS Proton mit Überlegungen zu Terraform IaC:
-
AWS Proton verwaltet Ihre Terraform-Bereitstellung nicht.
-
Sie müssen ein Bereitstellungs-Repository mit .makes-Pull-Anforderungen in diesem Repository registrieren. AWS Proton AWS Proton
-
Sie müssen eine CodeStar Verbindung erstellen, um eine Verbindung AWS Proton zu Ihrem Bereitstellungs-Repository herzustellen.
-
Um aus AWS Proton kompilierten IaC-Dateien bereitzustellen, müssen Sie auf AWS Proton Pull-Anforderungen antworten. AWS Proton makes-Pull-Anforderungen nach Erstellungs- und Aktualisierungsaktionen für Umgebung und Service. Weitere Informationen finden Sie unter AWS Proton Umgebungen und AWS Proton-Services.
-
Um eine Pipeline aus AWS Proton kompilierten IaC-Dateien bereitzustellen, müssen Sie ein CI/CD-Pipeline-Repository erstellen.
-
Ihre auf Pull-Anfragen basierende Bereitstellungsautomatisierung muss Schritte enthalten, um AWS Proton über Statusänderungen bereitgestellter AWS Proton Ressourcen zu benachrichtigen. Sie können die AWS Proton NotifyResourceDeploymentStatusChange API verwenden.
-
Sie können keine Services, Pipelines und Komponenten bereitstellen, die aus CloudFormation IaC-Dateien erstellt wurden, in Umgebungen, die aus Terraform-IaC-Dateien erstellt wurden.
-
Sie können keine Services, Pipelines und Komponenten bereitstellen, die aus Terraform-IaC-Dateien erstellt wurden, in Umgebungen, die aus CloudFormation IaC-Dateien erstellt wurden.
Wenn Sie Ihre Terraform-IaC-Dateien für vorbereiten AWS Proton, fügen Sie Ihren Eingabevariablen Namespaces hinzu, 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 Service erstellen, AWS Proton kompiliert Ihre Infrastruktur als Codedateien mit Konsole oder spec file
Eingaben. Es erstellt - proton.
und -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 Service-Instance entspricht.
Das Beispiel zeigt, wie Tags in die Variablendefinition und Variablenwerte AWS Proton einschließt 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 Umgebungs- oder Serviceerstellungsaktionen, um das Repository und den Pfad zu finden, in dem die kompilierten IaC-Dateien gespeichert werden sollen. Die Eingabewerte werden an die Namespace-Eingabeparameter übergeben.
AWS Proton unterstützt zwei Repository-Pfadlayouts. In den folgenden Beispielen werden die Pfade nach den Ressourcenparametern im Namespace aus zwei Umgebungen benannt. Jede Umgebung verfügt über Service-Instances von zwei Services, und die Service-Instances eines der Services verfügen über direkt definierte Komponenten.
Ressourcentyp | Name-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" |