Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
file Terraform iAC
Scopri come utilizzare l'infrastruttura Terraform come file di codice (IaC) con. AWS ProtonTerraform
AWS Proton supporta il provisioning autogestito per Terraform IAc.
Come funziona il provisioning autogestito con i file bundle di modelli Terraform IAc:
-
Quando crei un ambiente dai pacchetti di modelli Terraform, AWS Proton compila i tuoi file con la console o i parametri di input.
.tf
spec file
-
Effettua una richiesta pull per unire i file IAc compilati nel repository con cui ti sei registrato. AWS Proton
-
Se la richiesta viene approvata, AWS Proton attende lo stato di approvvigionamento fornito.
-
Se la richiesta viene rifiutata, la creazione dell'ambiente viene annullata.
-
Se la pull request scade, la creazione dell'ambiente non è completa.
AWS Proton con considerazioni su Terraform IAc:
-
AWS Proton non gestisce il provisioning di Terraform.
-
È necessario registrare un repository di provisioning con. AWS Proton AWS Proton effettua richieste pull su questo repository.
-
È necessario creare una CodeStar connessione per connettersi al AWS Proton repository di provisioning.
-
Per effettuare il provisioning da file IaC AWS Proton compilati, è necessario rispondere alle AWS Proton pull request. AWS Proton effettua richieste pull dopo azioni di creazione e aggiornamento dell'ambiente e del servizio. Per ulteriori informazioni, consultare AWS Proton ambienti e Servizi AWS Proton.
-
Per effettuare il provisioning di una pipeline da file IAc AWS Proton compilati, è necessario creare un repository di pipeline CI/CD.
-
L'automazione del provisioning basata su pull request deve includere passaggi per notificare eventuali AWS Proton modifiche allo stato delle risorse assegnate. AWS Proton Puoi usare l'API. AWS Proton NotifyResourceDeploymentStatusChange
-
Non è possibile distribuire servizi, pipeline e componenti creati da file CloudFormation IAc in ambienti creati da file Terraform IAc.
-
Non è possibile distribuire servizi, pipeline e componenti creati da file Terraform IAc in ambienti creati da file IAc. CloudFormation
Quando prepari i file Terraform IAc per AWS Proton, alleghi dei namespace alle variabili di input, come mostrato negli esempi seguenti. Per ulteriori informazioni, consulta Parametri.
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 }
Infrastruttura compilata come codice
Quando crei un ambiente o un servizio, AWS Proton compila l'infrastruttura come file di codice con console o spec file
input. Crea proton.auto.tfvars.json
file per proton.
i tuoi input che possono essere utilizzati da Terraform, come mostrato negli esempi seguenti. Questi file si trovano in un repository specificato in una cartella che corrisponde al nome dell'ambiente o dell'istanza del servizio.resource-type
.variables.tf
L'esempio mostra come AWS Proton includere i tag nella definizione e nei valori delle variabili e come è possibile propagare questi AWS Proton tag alle risorse assegnate. Per ulteriori informazioni, consulta Propagazione dei tag alle risorse assegnate.
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.ttf:
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"
}
}
Percorsi del repository
AWS Proton utilizza gli input della console o delle specifiche provenienti dall'ambiente o dal servizio, crea azioni per trovare il repository e il percorso in cui collocare i file IAc compilati. I valori di input vengono passati a parametri di input con namespace.
AWS Proton supporta due layout di percorso del repository. Negli esempi seguenti, i percorsi sono denominati in base ai parametri delle risorse con namespace di due ambienti. Ogni ambiente dispone di istanze di servizio di due servizi e le istanze di servizio di uno dei servizi hanno componenti definiti direttamente.
Tipo di risorsa | Parametro del nome | = | Nome risorsa |
---|---|---|---|
Ambiente | environment.name |
= | "env-prod" |
Ambiente | environment.name |
"env-staged" |
|
Servizio | service.name |
"service-one" |
|
Istanza del servizio | service_instance.name |
"instance-one-prod" |
|
Istanza del servizio | service_instance.name |
"instance-one-staged" |
|
Servizio | service.name |
"service-two" |
|
Istanza del servizio | service_instance.name |
"instance-two-prod" |
|
Componente | service_instance.components.default.name |
"component-prod" |
|
Istanza del servizio | service_instance.name |
"instance-two-staged" |
|
Componente | service_instance.components.default.name |
"component-staged" |