

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

# Terapkan AWS Control Tower Account Factory untuk Terraform (AFT)
<a name="aft-getting-started"></a>

 Bagian ini ditujukan untuk administrator lingkungan AWS Control Tower yang ingin menyiapkan Account Factory for Terraform (AFT) di lingkungan mereka yang ada. Ini menjelaskan cara menyiapkan Account Factory untuk lingkungan Terraform (AFT) dengan akun manajemen AFT khusus yang baru. 

**catatan**  
 Modul Terraform menyebarkan AFT. Modul ini tersedia di [repositori AFT](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/tree/main) aktif GitHub, dan seluruh repositori AFT dianggap sebagai modul.   
 Kami menyarankan Anda merujuk ke modul AFT GitHub alih-alih mengkloning repositori AFT. Dengan cara ini Anda dapat mengontrol dan menggunakan pembaruan modul saat tersedia. 

 Untuk detail tentang rilis terbaru fungsi AWS Control Tower Account Factory for Terraform (AFT), lihat [file Rilis](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/releases) untuk repositori ini GitHub .

 **Prasyarat penyebaran** 

Sebelum Anda mengkonfigurasi dan meluncurkan lingkungan AFT Anda, Anda harus memiliki sumber daya berikut yang tersedia: 
+  Wilayah rumah untuk zona landing zone AWS Control Tower Anda. Untuk informasi selengkapnya, lihat [Cara Wilayah AWS bekerja dengan AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/region-how.html). 
+  Sebuah landing zone AWS Control Tower. Untuk informasi selengkapnya, lihat [Merencanakan landing zone AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/planning-your-deployment.html) Anda. 
+  Akun manajemen AFT, yang dapat Anda sediakan di AWS Control Tower, atau sediakan dengan cara lain dan daftarkan ke AWS Control Tower. 
+  Versi dan distribusi Terraform. Untuk informasi lebih lanjut, lihat versi [Terraform dan AFT](https://docs.aws.amazon.com/controltower/latest/userguide/version-supported.html). 
+  Penyedia VCS untuk melacak dan mengelola perubahan kode dan file lainnya. Secara default, AFT menggunakan AWS CodeCommit. Untuk informasi lebih lanjut, lihat [Apa itu AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) dalam *AWS CodeCommit User Guide*.

  Jika Anda menerapkan AFT untuk pertama kalinya dan Anda tidak memiliki CodeCommit repositori yang ada, Anda harus memilih penyedia VCS eksternal, seperti atau. GitHub BitBucket Untuk informasi selengkapnya, lihat [Alternatif untuk kontrol versi kode sumber di AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-alternative-vcs.html). 
+  Lingkungan runtime tempat Anda dapat menjalankan modul Terraform yang menginstal AFT. 
+  Opsi fitur AFT. Untuk informasi selengkapnya, lihat [Mengaktifkan opsi fitur](https://docs.aws.amazon.com/controltower/latest/userguide/aft-feature-options.html). 

## Konfigurasikan dan luncurkan AWS Control Tower Account Factory untuk Terraform
<a name="aft-configure-and-launch"></a>

 Langkah-langkah berikut mengasumsikan bahwa Anda terbiasa dengan alur kerja Terraform. Anda juga dapat mempelajari lebih lanjut tentang penerapan AFT dengan mengikuti lab [Pengantar AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft) di situs web AWS Workshop Studio. 

 **Langkah 1: Luncurkan landing zone AWS Control Tower** 

 Selesaikan langkah-langkah dalam [Memulai AWS Control Tower](https://catalog.workshops.aws/control-tower/en-US/customization/aft). Di sinilah Anda membuat akun manajemen AWS Control Tower dan menyiapkan landing zone AWS Control Tower Anda. 

**catatan**  
 Pastikan untuk membuat peran untuk akun manajemen AWS Control Tower yang memiliki **AdministratorAccess**kredensil. Untuk informasi selengkapnya, lihat berikut ini:   
 [Identitas IAM (pengguna, grup pengguna, dan peran)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) *di AWS Identity and Access Management Panduan Pengguna* 
 [AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)dalam *Panduan Referensi Kebijakan AWS Terkelola* 

 **Langkah 2: Buat unit organisasi baru untuk AFT (sangat disarankan)** 

 Kami menyarankan Anda membuat OU terpisah di zona landing zone AWS Control Tower Anda. OU ini adalah tempat Anda menyediakan akun manajemen AFT. Buat akun manajemen OU dan AFT baru dari akun manajemen AWS Control Tower Anda. Untuk informasi selengkapnya, lihat [Membuat OU baru](https://docs.aws.amazon.com/controltower/latest/userguide/create-new-ou.html). 

 **Langkah 3: Menyediakan akun manajemen AFT** 

 AFT mengharuskan Anda menyediakan AWS akun yang didedikasikan untuk operasi manajemen AFT. Buat akun manajemen AFT saat Anda masuk ke akun manajemen AWS Control Tower yang terkait dengan landing zone AWS Control Tower Anda. Anda dapat menyediakan akun manajemen AFT dari konsol AWS Control Tower dengan memilih **Buat akun** di halaman **Organisasi**, atau dengan cara lain. Untuk informasi selengkapnya, lihat [Menyediakan akun dengan AWS Service Catalog Account Factory](https://docs.aws.amazon.com/controltower/latest/userguide/provision-as-end-user.html). 

**catatan**  
Jika Anda membuat OU terpisah untuk AFT, pastikan untuk memilih OU ini saat Anda membuat akun manajemen AFT. 

Diperlukan waktu hingga 30 menit untuk sepenuhnya menyediakan akun manajemen AFT. 

 **Langkah 4: Verifikasi bahwa lingkungan Terraform tersedia untuk penerapan** 

 Langkah ini mengasumsikan bahwa Anda memiliki pengalaman dengan Terraform dan memiliki prosedur untuk menjalankan Terraform. Untuk informasi selengkapnya, lihat [Command: init](https://developer.hashicorp.com/terraform/cli/commands/init) di situs web HashiCorp Developer. 

**catatan**  
 AFT mendukung Versi Terraform `1.6.0` atau yang lebih baru. 

 **Langkah 5: Konfigurasi opsional**
+ **Secara opsional mengatur konfigurasi virtual private cloud (VPC)**

  Modul AFT menyertakan `aft_enable_vpc` parameter, yang menentukan apakah AWS Control Tower menyediakan sumber daya akun dalam VPC di akun manajemen AFT pusat. Secara default, parameter diatur ke`true`. Jika Anda menyetel parameter ini`false`, AWS Control Tower menerapkan AFT *tanpa* menggunakan VPC dan sumber daya jaringan pribadi, seperti NAT Gateways atau titik akhir VPC. Menonaktifkan `aft_enable_vpc` dapat membantu mengurangi biaya operasi AFT *untuk beberapa pola penggunaan*. Menambahkan konfigurasi VPC apa pun akan mengesampingkan parameter yang disetel ke. `aft_enable_vpc` `false`
**catatan**  
Mengaktifkan kembali `aft_enable_vpc` parameter (mengalihkan nilai dari `false` ke`true`) mungkin mengharuskan Anda menjalankan `terraform apply` perintah dua kali berturut-turut.

  Alih-alih menyediakan VPC baru, Anda dapat mengonfigurasi AFT untuk menggunakan VPC yang ada di akun Anda. Untuk menggunakan VPC Anda sendiri, berikan parameter konfigurasi VPC berikut:
  + `aft_customer_vpc_id`- ID VPC Anda yang ada
  + `aft_customer_private_subnets`- Daftar subnet pribadi IDs di VPC Anda

  Contoh konfigurasi:

  ```
  module "aft" {
    source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
    
    # VPC configuration
    aft_customer_vpc_id = "vpc-0123456789abcdef0"
    aft_customer_private_subnets = ["subnet-0123456789abcdef0", "subnet-0123456789abcdef1"]
    
    # Other AFT parameters...
  }
  ```
**penting**  
Kami tidak menyarankan Anda menggunakan opsi VPC kustom jika Anda memiliki penerapan AFT yang sudah ada. Anda mungkin memiliki dependensi pada fungsi Lambda atau CodePipeline yang bergantung pada sumber daya dalam VPC yang ada.
+ **Konfigurasikan nama proyek Terraform secara opsional**

  Anda dapat menyesuaikan nama proyek Terraform yang digunakan oleh AFT dengan menyetel parameter. `terraform_project_name` Secara default, AFT menempatkan penerapan dalam proyek “default” di Terraform Cloud atau Terraform Enterprise.

  Contoh konfigurasi:

  ```
  module "aft" {
    source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
    
    # Project name configuration
    terraform_project_name = "my-organization-aft"
    
    # Other AFT parameters...
  }
  ```
**catatan**  
Parameter ini hanya berlaku untuk penerapan Terraform Enterprise atau Terraform Cloud.
+ **Secara opsional menerapkan tag khusus ke sumber daya AFT**

  Anda dapat menerapkan tag khusus ke semua sumber daya AFT dengan menggunakan `tags` parameter. Tag ini membantu organisasi sumber daya, alokasi biaya, dan kontrol akses.

  Contoh konfigurasi:

  ```
  module "aft" {
    source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
    
    # Custom tags configuration
    tags = {
      Environment = "Production"
      CostCenter = "IT-12345"
      Project = "AFT-Deployment"
      Owner = "platform-team@example.com"
    }
    
    # Other AFT parameters...
  }
  ```

  Tag ini diterapkan ke semua sumber daya yang dibuat oleh modul AFT. AFT secara otomatis menambahkan `managed_by = "AFT"` tag ke semua sumber daya, yang tidak dapat diganti dengan tag khusus.
**catatan**  
Tag khusus dapat ditambahkan kapan saja, tidak hanya selama penerapan awal.
+ **Secara opsional menerapkan kunci enkripsi yang AWS KMS dikelola pelanggan (CMK) ke grup CloudWatch log dan topik SNS**

  Untuk mengaktifkan enkripsi KMS CMK untuk grup log dan topik SNS, atur variabel dan. `cloudwatch_log_group_enable_cmk_encryption` `sns_topic_enable_cmk_encryption`

  Jika Anda memilih pengaturan ini, AFT menggunakan CMK yang ada, *alias/aft*, untuk mengenkripsi CloudWatch log dan topik SNS. CMK ini dibuat ketika AFT digunakan di akun manajemen AFT, dan dapat diterapkan ke grup log dan topik SNS. 
  + Jika variabel `cloudwatch_log_group_enable_cmk_encryption` disetel ke **true**, grup CloudWatch log untuk AFT dienkripsi menggunakan CMK. Jika variabel diatur ke **false**, yang merupakan nilai default, log dienkripsi menggunakan [enkripsi sisi server dengan CloudWatch log](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) default.
  +  Jika variabel `sns_topic_enable_cmk_encryption` disetel ke **true**, notifikasi yang dikirim ke topik SNS AFT (*aft-notifications* dan *aft-failure-notifications*) dienkripsi menggunakan CMK. Jika variabel disetel ke **false**, yang merupakan nilai default, pesan SNS dienkripsi dengan kunci yang dikelola AWS:. *alias/aws/sns* Untuk informasi selengkapnya, lihat [istilah kunci SSE](https://docs.aws.amazon.com//sns/latest/dg/sns-server-side-encryption.html#sse-key-terms).
+ **Secara opsional mengubah jenis CodeBuild komputasi Anda**

  Selama penerapan, untuk mengubah jenis komputasi yang digunakan AFT CodeBuild, setel variabel. `aft_codebuild_compute_type`

  Untuk informasi tentang jenis komputasi yang diterima, lihat [Tentang jenis lingkungan sesuai permintaan](https://docs.aws.amazon.com//codebuild/latest/userguide/build-env-ref-compute-types.html#environment.types). Jenis komputasi default adalah`BUILD_GENERAL1_MEDIUM`. 
+ **Konfigurasikan OpenID Connect (OIDC) secara opsional untuk Terraform**

  Pelanggan yang menggunakan Terraform Enterprise atau HCP Terraform (sebelumnya Terraform Cloud) dapat menggunakan token identitas Beban Kerja Terraform (atau kredensyal penyedia dinamis), yang dibangun di atas protokol OIDC, untuk menghubungkan dan mengautentikasi ruang kerja dengan aman dengan AFT.

  Anda dapat mengaktifkan integrasi OIDC untuk ruang kerja AFT dengan menyetel parameter ke. `terraform_oidc_integration` `true` Secara default, parameter ini diatur ke`false`. Saat mengaktifkan parameter ini, `terraform_oidc_hostname` parameter `terraform_oidc_aws_audience` and harus ditinjau dan dikonfigurasi jika default (`aws.workload.identity`dan`app.terraform.io`, masing-masing) tidak cocok dengan lingkungan Anda.

  Contoh konfigurasi:

  ```
  module "aft" {
    source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
    
    # Terraform distribution must be "tfc" or "tfe" for OIDC
    terraform_distribution = "tfc"
  
    # Terraform OIDC Configuration
    terraform_oidc_integration  = true
    terraform_oidc_aws_audience = "aws.workload.identity"  # default
    terraform_oidc_hostname     = "app.terraform.io"       # default; set to your TFE hostname if applicable
    
    # Other AFT parameters...
  }
  ```
**catatan**  
Parameter ini hanya berlaku untuk penerapan Terraform Enterprise atau HCP Terraform.
**catatan**  
Jika saat ini Anda memanfaatkan penyedia OIDC untuk Terraform di akun manajemen AFT, Anda harus menghapus penyedia tersebut sebelum ikut serta dalam integrasi ini. AFT akan membuat ulang penyedia itu untuk Anda saat penerapan.

**Langkah 6: Hubungi Account Factory untuk modul Terraform untuk menyebarkan AFT** 

 Panggil modul AFT dengan peran yang Anda buat untuk akun manajemen AWS Control Tower yang memiliki **AdministratorAccess**kredensyal. AWS Control Tower menyediakan modul Terraform melalui akun manajemen AWS Control Tower, yang menetapkan semua infrastruktur yang diperlukan untuk mengatur permintaan AWS Control Tower Account Factory. 

 Anda dapat melihat modul AFT di [repositori AFT](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/tree/main) pada. GitHub Seluruh GitHub repositori dianggap sebagai modul AFT. Lihat [file README](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/blob/main/README.md) untuk informasi tentang input yang diperlukan untuk menjalankan modul AFT dan menerapkan AFT. Atau, Anda dapat melihat modul AFT di [Terraform](https://registry.terraform.io/modules/aws-ia/control_tower_account_factory/aws/latest) Registry. 

 Jika Anda memiliki saluran pipa di lingkungan Anda yang dibuat untuk mengelola Terraform, Anda dapat mengintegrasikan modul AFT ke dalam alur kerja yang ada. Jika tidak, jalankan modul AFT dari lingkungan apa pun yang diautentikasi dengan kredensi yang diperlukan. 

 Timeout menyebabkan penerapan gagal. Sebaiknya gunakan kredensi AWS Security Token Service (STS) untuk memastikan Anda memiliki batas waktu yang cukup untuk penerapan penuh. Batas waktu minimum untuk AWS STS kredensional adalah 60 menit. *Untuk informasi selengkapnya, lihat [Kredensi keamanan sementara di IAM di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) Pengguna.AWS Identity and Access Management * 

**catatan**  
 Anda mungkin menunggu hingga 30 menit hingga AFT menyelesaikan penerapan melalui modul Terraform. 

 **Langkah 7: Kelola file status Terraform** 

 File status Terraform dibuat saat Anda menerapkan AFT. Artefak ini menggambarkan keadaan sumber daya yang dibuat Terraform. Jika Anda berencana untuk memperbarui versi AFT, pastikan untuk memilih file status Terraform, atau siapkan backend Terraform menggunakan Amazon S3 dan DynamoDB. Modul AFT tidak mengelola status Terraform backend. 

**catatan**  
 Anda bertanggung jawab untuk melindungi file status Terraform. Beberapa variabel input mungkin berisi nilai sensitif, seperti `ssh` kunci pribadi atau token Terraform. Bergantung pada metode penerapan Anda, nilai-nilai ini dapat dilihat sebagai teks biasa di file status Terraform. Untuk informasi selengkapnya, lihat [Data sensitif di Negara](https://www.terraform.io/docs/language/state/sensitive-data.html) di HashiCorp situs web. 