Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
File Terraform IAc
Pelajari cara menggunakan infrastruktur Terraform sebagai file kode (IAc) dengan. AWS ProtonTerraform
AWS Proton mendukung penyediaan yang dikelola sendiri untuk Terraform IAc.
Cara kerja penyediaan yang dikelola sendiri dengan file bundel template Terraform IAc:
-
Saat Anda membuat lingkungan dari bundel template Terraform, AWS Proton kompilasi
.tf
file Anda dengan parameter konsol atau input.spec file
-
Itu membuat permintaan tarik untuk menggabungkan file IAC yang dikompilasi ke repositori yang telah Anda daftarkan. AWS Proton
-
Jika permintaan disetujui, AWS Proton tunggu status penyediaan yang Anda berikan.
-
Jika permintaan ditolak, pembuatan lingkungan dibatalkan.
-
Jika waktu permintaan tarik habis, pembuatan lingkungan tidak selesai.
AWS Proton dengan pertimbangan Terraform IAc:
-
AWS Proton tidak mengelola penyediaan Terraform Anda.
-
Anda harus mendaftarkan repositori penyediaan dengan. AWS Proton AWS Proton membuat permintaan tarik pada repositori ini.
-
Anda harus membuat CodeStar koneksi untuk terhubung AWS Proton dengan repositori penyediaan Anda.
-
Untuk menyediakan dari file IAc yang AWS Proton dikompilasi, Anda harus menanggapi permintaan AWS Proton tarik. AWS Proton membuat permintaan tarik setelah lingkungan dan layanan membuat dan memperbarui tindakan. Lihat informasi yang lebih lengkap di AWS Proton lingkungan dan Layanan AWS Proton.
-
Untuk menyediakan pipeline dari file IAc yang AWS Proton dikompilasi, Anda harus membuat repositori pipeline CI/CD.
-
Otomatisasi penyediaan berbasis permintaan tarik Anda harus menyertakan langkah-langkah untuk memberi tahu perubahan status AWS Proton sumber daya yang disediakan AWS Proton . Anda dapat menggunakan AWS Proton NotifyResourceDeploymentStatusChange API.
-
Anda tidak dapat menerapkan layanan, saluran pipa, dan komponen yang dibuat dari file CloudFormation IAc ke lingkungan yang dibuat dari file Terraform IAc.
-
Anda tidak dapat menerapkan layanan, saluran pipa, dan komponen yang dibuat dari file Terraform IAc ke lingkungan yang dibuat dari file IAc. CloudFormation
Saat menyiapkan file Terraform IAc Anda AWS Proton, Anda melampirkan ruang nama ke variabel input Anda, seperti yang ditunjukkan pada contoh berikut. Untuk informasi lebih lanjut, lihat 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 }
Infrastruktur yang dikompilasi sebagai kode
Saat Anda membuat lingkungan atau layanan, AWS Proton kompilasi infrastruktur Anda sebagai file kode dengan konsol atau spec file
input. Ini membuat proton.
dan resource-type
.variables.tfproton.auto.tfvars.json
file untuk input Anda yang dapat digunakan oleh Terraform, seperti yang ditunjukkan dalam contoh berikut. File-file ini terletak di repositori tertentu di folder yang cocok dengan nama instance lingkungan atau layanan.
Contoh ini menunjukkan bagaimana AWS Proton menyertakan tag dalam definisi variabel dan nilai variabel, dan bagaimana Anda dapat menyebarkan AWS Proton tag ini ke sumber daya yang disediakan. Untuk informasi selengkapnya, lihat Menandai propagasi ke sumber daya yang disediakan.
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"
}
}
Jalur repositori
AWS Proton menggunakan input konsol atau spesifikasi dari tindakan pembuatan lingkungan atau layanan untuk menemukan repositori dan jalur tempat untuk menemukan file IAc yang dikompilasi. Nilai input diteruskan ke parameter input namespaced.
AWS Proton mendukung dua tata letak jalur repositori. Dalam contoh berikut, jalur diberi nama oleh parameter sumber daya namespaced dari dua lingkungan. Setiap lingkungan memiliki contoh layanan dari dua layanan, dan contoh layanan dari salah satu layanan memiliki komponen yang didefinisikan secara langsung.
Jenis sumber daya | Parameter nama | = | Nama sumber daya |
---|---|---|---|
Environment | environment.name |
= | "env-prod" |
Environment | environment.name |
"env-staged" |
|
Layanan | service.name |
"service-one" |
|
Contoh layanan | service_instance.name |
"instance-one-prod" |
|
Contoh layanan | service_instance.name |
"instance-one-staged" |
|
Layanan | service.name |
"service-two" |
|
Contoh layanan | service_instance.name |
"instance-two-prod" |
|
Komponen | service_instance.components.default.name |
"component-prod" |
|
Contoh layanan | service_instance.name |
"instance-two-staged" |
|
Komponen | service_instance.components.default.name |
"component-staged" |