

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, AWS akan mengakhiri dukungan untuk AWS Proton. Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses AWS Proton konsol atau AWS Proton sumber daya. Infrastruktur yang Anda gunakan akan tetap utuh. Untuk informasi selengkapnya, lihat Panduan [AWS Proton Pengakhiran Layanan dan Migrasi](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# File Terraform IAc
<a name="ag-infrastructure-tmp-files-terraform"></a>

Pelajari cara menggunakan infrastruktur Terraform sebagai file kode (IAc) dengan. AWS Proton[Terraform](https://www.terraform.io/) adalah mesin iAC open-source yang banyak digunakan yang dikembangkan oleh. [HashiCorp](https://www.hashicorp.com/) Modul Terraform dikembangkan dalam bahasa HashiCorp HCL, dan mendukung beberapa penyedia infrastruktur backend, termasuk Amazon Web Services.

AWS Proton mendukung [penyediaan yang dikelola sendiri untuk Terraform IAc](ag-works-prov-methods.md#ag-works-prov-methods-self).

[Untuk contoh lengkap repositori penyediaan yang merespons permintaan tarik dan mengimplementasikan penyediaan infrastruktur, lihat Templat otomatisasi Tindakan Terraform untuk on. OpenSource GitHub AWS Proton](https://github.com/aws-samples/aws-proton-terraform-github-actions-sample) GitHub

**Cara kerja penyediaan yang dikelola sendiri dengan file bundel template Terraform IAc:**

1. Saat Anda [membuat lingkungan](ag-create-env.md) dari bundel template Terraform, AWS Proton kompilasi `.tf` file Anda dengan parameter konsol atau input. `spec file`

1. Itu membuat permintaan tarik untuk menggabungkan file IAC yang dikompilasi ke [repositori yang telah Anda daftarkan](ag-create-repo.md). AWS Proton

1. Jika permintaan disetujui, AWS Proton tunggu status penyediaan yang Anda berikan.

1. Jika permintaan ditolak, pembuatan lingkungan dibatalkan.

1. 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](ag-create-repo.md). AWS Proton AWS Proton membuat permintaan tarik pada repositori ini.
+ Anda harus [membuat CodeStar koneksi](setting-up-for-service.md#setting-up-vcontrol) 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. Untuk informasi selengkapnya, lihat [AWS Proton lingkungan](ag-environments.md) dan [AWS Proton layanan](ag-services.md).
+ Untuk menyediakan pipeline dari file IAc yang AWS Proton dikompilasi, Anda harus [membuat repositori CI/CD pipeline](setting-up-for-service.md#setting-up-pr-repo).
+ 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](https://docs.aws.amazon.com/proton/latest/APIReference/API_NotifyResourceDeploymentStatusChange.html).
+ 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](parameters.md).

## Contoh 1: AWS Proton lingkungan file Terraform IAc
<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
}
```

## Infrastruktur yang dikompilasi sebagai kode
<a name="compiled-tform"></a>

Saat Anda membuat lingkungan atau layanan, AWS Proton kompilasi infrastruktur Anda sebagai file kode dengan konsol atau `spec file` input. Ini membuat `proton.resource-type.variables.tf` dan `proton.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 [Perbanyakan tag ke sumber daya yang disediakan](resources.md#auto-tags-prop).

### Contoh 2: file IAc yang dikompilasi untuk lingkungan bernama “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"
  }
}
```

## Jalur repositori
<a name="repo-dir"></a>

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 masukan diteruskan ke parameter masukan [namespaced.](parameters.md)

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.

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

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

Jika AWS Proton menemukan repositori yang ditentukan dengan `environments` folder, itu membuat folder yang menyertakan file IAC yang dikompilasi dan diberi nama dengan file. `environment.name`

Jika AWS Proton menemukan repositori yang ditentukan dengan `environments` folder yang berisi nama folder yang cocok dengan nama lingkungan yang kompatibel dengan instance layanan, itu membuat folder yang menyertakan file iAc instance yang dikompilasi dan diberi nama dengan file. `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 ]

Jika AWS Proton menemukan repositori yang ditentukan tanpa `environments` folder, itu membuat `environment.name` folder di mana ia menemukan file IAc lingkungan yang dikompilasi.

Jika AWS Proton menemukan repositori yang ditentukan dengan nama folder yang cocok dengan nama lingkungan yang kompatibel dengan instance layanan, itu akan membuat `service_instance.name` folder tempat ia menempatkan file iAc instance yang dikompilasi.

```
/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
```

------