

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

# Memulai dengan AWS DevOps Agen menggunakan Terraform
<a name="getting-started-with-aws-devops-agent-getting-started-with-aws-devops-agent-using-terraform"></a>

## Gambaran umum
<a name="overview"></a>

Panduan ini menunjukkan cara menggunakan Terraform untuk membuat dan menyebarkan sumber daya AWS DevOps Agen. Konfigurasi Terraform mengotomatiskan pembuatan ruang agen, peran IAM, aplikasi operator, dan asosiasi akun. AWS 

Pendekatan Terraform mengotomatiskan langkah-langkah manual yang dijelaskan dalam panduan onboarding [ CLI ](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html) dengan mendefinisikan semua sumber daya yang diperlukan sebagai infrastruktur sebagai kode.

AWS DevOps Agen tersedia di 6 Wil AWS ayah berikut: AS Timur (Virginia Utara), AS Barat (Oregon), Asia Pasifik (Sydney), Asia Pasifik (Tokyo), Eropa (Frankfurt), dan Eropa (Irlandia). Untuk informasi selengkapnya tentang Wilayah yang didukung, lihat[Wilayah yang Didukung](about-aws-devops-agent-supported-regions.md).

## Prasyarat
<a name="prerequisites"></a>

Sebelum Anda mulai, pastikan Anda memiliki yang berikut:
+ Terraform >= 1.0 diinstal
+ AWS CLI diinstal dan dikonfigurasi dengan kredenSIAL yang sesuai
+ Satu AWS akun untuk akun pemantauan (primer)
+ (Opsional) AWS Akun kedua jika Anda ingin mengatur pemantauan lintas akun
+ (Untuk Bagian 4) `awscc` penyedia versi 1.98.0 atau yang lebih baru. Sumber `awscc_devopsagent_trigger` daya `awscc_devopsagent_asset` dan ditambahkan dalam versi itu. Untuk memeriksa versi dalam konfigurasi Anda, jalankan`terraform providers`.

## Apa yang mencakup panduan ini
<a name="what-this-guide-covers"></a>

Panduan ini dibagi menjadi empat bagian:
+ **Bagian 1 ** - Menyebarkan ruang agen dengan aplikasi operator dan asosi AWS asi di akun pemantauan Anda. Setelah menyelesaikan bagian ini, agen dapat memantau masalah di akun itu.
+ **Bagian 2 (Opsional) ** — Tambahkan as AWS osiasi sumber untuk akun layanan dan terapkan peran IAM lintas akun ditambah echo Lambda ke akun tersebut. Hal ini memungkinkan ruang agen untuk memantau sumber daya di seluruh akun.
+ **Bagian 3 (Opsional) ** - Daftarkan layanan pihak ketiga (Dynatrace, ServiceNow, Splunk, New Relic, GitLab, PagerDuty) dan kaitkan dengan ruang agen.
+ **Bagian 4 (Opsional) ** — Tambahkan skill, agen kustom, dan pemicu terjadwal ke ruang agen, sehingga agen memiliki pengetahuan khusus dan pemicu terjadwal menjalankan agen kustom tersebut secara otomatis.

## Sumber daya dibuat
<a name="resources-created"></a>

### Bagian 1: Akun pemantauan
<a name="part-1-monitoring-account"></a>
+ **IAM role ** (`DevOpsAgentRole-AgentSpace-*`) — Diasumsikan oleh layanan DevOps Agen untuk memantau akun. Termasuk `AIDevOpsAgentAccessPolicy` kebijakan terkelola dan kebijakan sebaris yang memungkinkan pembuatan peran terkait layanan Resource Explorer. Dibuat hanya ketika `existing_agentspace_role_arn` tidak disetel.
+ **IAM role ** (`DevOpsAgentRole-WebappAdmin-*`) — Peran aplikasi operator dengan kebijakan ter `AIDevOpsOperatorAppAccessPolicy` kelola untuk operasi agen. Dibuat hanya ketika `existing_operator_role_arn` tidak disetel.
+ **Ruang agen ** (nama yang dapat dikonfigurasi) — Ruang agen pusat, dibuat menggunakan `awscc_devopsagent_agent_space` sumber daya. Termasuk konfigurasi aplikasi operator.
+ **Asosiasi ** (AWS monitor) — Menautkan akun pemantauan ke ruang agen menggunakan `awscc_devopsagent_association` sumber daya.
+ **Asosiasi ** (AWS sumber) — (Opsional) Menautkan akun layanan ke ruang agen untuk pemantauan lintas akun.

### Bagian 2: Akun layanan (opsional)
<a name="part-2-service-account-optional"></a>
+ **IAM role ** (`DevOpsAgentRole-SecondaryAccount-TF`) — Cross-account peran dengan nama tetap. Dipercaya oleh ruang agen di akun pemantauan. Termasuk `AIDevOpsAgentAccessPolicy` kebijakan terkelola dan kebijakan sebaris yang memungkinkan pembuatan peran terkait layanan Resource Explorer.
+ **Lambda function ** (`echo-service-tf`) — Sebuah contoh layanan sederhana yang menggemakan kembali peristiwa input.

### Bagian 4: Aset dan pemicu (opsional)
<a name="part-4-assets-and-triggers-optional"></a>

Konfigurasi ini membuat sumber daya berikut:
+ **Skill ** (`rds-performance-investigation`) — Keterampilan yang dimuat agen bila relevan, dibuat menggunakan `awscc_devopsagent_asset` sumber daya dengan nilai `asset_type` of`skill`.
+ **Agen kustom ** (`rds-firefighter`) — Mencakup agen ke alur kerja tertentu dengan keterampilan terlampir, dibuat menggunakan `awscc_devopsagent_asset` sumber daya dengan `asset_type` of`custom_agent`.
+ **Trigger ** (`TIME_BASED`) — Menjalankan agen kustom pada jadwal, dibuat menggunakan `awscc_devopsagent_trigger` sumber daya.

## Pengaturan
<a name="setup"></a>

### Langkah 1: Mengkloning repositori sampel
<a name="step-1-clone-the-sample-repository"></a>

```
git clone https://github.com/aws-samples/sample-aws-devops-agent-terraform.git
cd sample-aws-devops-agent-terraform
```

### Langkah 2: Konfigurasikan variabel
<a name="step-2-configure-variables"></a>

Salin file variabel contoh dan sesuaikan untuk lingkungan Anda:

```
cp terraform.tfvars.example terraform.tfvars
```

Edit `terraform.tfvars` dengan nama dan deskripsi ruang agen Anda:

```
agent_space_name        = "MyCompanyAgentSpace"
agent_space_description = "DevOps Agent Space for monitoring production workloads"
```

## Bagian 1: Menyebarkan ruang agen
<a name="part-1-deploy-the-agent-space"></a>

Di bagian ini, Anda membuat ruang agen, peran IAM, aplikasi operator, dan as AWS osiasi di akun pemantauan Anda.

### Langkah 1: Terapkan dengan otomatisasi (disarankan)
<a name="step-1-deploy-with-automation-recommended"></a>

Gunakan skrip penerapan yang disediakan untuk pengaturan yang efisien:

```
./deploy.sh
```

Script ini secara otomatis:
+ Memeriksa prasyarat (Terraform, AWS CLI, kredenSIAL)
+ Membuat `terraform.tfvars` dari contoh jika diperlukan
+ Menginisialisasi, memvalidasi, merencanakan, dan menerapkan Terraform

Atau, jika Anda lebih suka kontrol manual:

```
terraform init
terraform plan
terraform apply
```

Ketik `yes` saat diminta untuk mengonfirmasi penerapan.

### Langkah 2: Rekam output
<a name="step-2-record-the-outputs"></a>

Setelah penerapan selesai, Terraform mencetak output. Catat nilai-nilai ini untuk digunakan nanti:

```
Outputs:
agent_space_id              = "abc123"
agent_space_arn             = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/abc123"
agent_space_name            = "MyCompanyAgentSpace"
devops_agentspace_role_arn  = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-AgentSpace-a1b2c3d4"
devops_operator_role_arn    = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-WebappAdmin-a1b2c3d4"
primary_account_id          = "<MONITORING_ACCOUNT_ID>"
primary_account_association_id = "assoc-xyz"
```

Jika Anda berencana untuk menyelesaikan Bagian 2, simpan nil `agent_space_arn` ainya. Anda akan membutuhkannya untuk mengkonfigurasi sumber daya akun layanan.

### Langkah 3: Verifikasi penerapan
<a name="step-3-verify-the-deployment"></a>

Jalankan skrip verifikasi pasca-penerapan:

```
./post-deploy.sh
```

Atau gunakan AWS CLI untuk memverifikasi bahwa ruang agen berhasil dibuat:

```
aws devops-agent get-agent-space \
  --agent-space-id <AGENT_SPACE_ID> \
  --region <REGION>
```

Pada titik ini, ruang agen Anda digunakan dengan aplikasi operator diaktifkan dan akun pemantauan Anda terkait. Agen dapat memantau masalah di akun ini.

## Bagian 2 (Opsional): Tambahkan pemantauan lintas akun
<a name="part-2-optional-add-cross-account-monitoring"></a>

Di bagian ini, Anda memperluas pengaturan sehingga ruang agen dapat memantau sumber daya di AWS akun kedua (akun layanan). Ini melibatkan dua tindakan:

1. Menambahkan as AWS osiasi sumber yang menunjuk ke akun layanan.

1. Menyebarkan peran IAM lintas akun dan fungsi echo Lambda ke akun layanan.

**penting**  
**Anda harus menyelesaikan Bagian 1 sebelum melanjutkan. Sumber daya akun layanan memerlukan output penerapan `agent_space_arn` dari Bagian 1.

### Langkah 1: Konfigurasikan ID akun layanan
<a name="step-1-configure-the-service-account-id"></a>

Di`terraform.tfvars`, atur ID akun layanan Anda:

```
service_account_id = "<YOUR_SERVICE_ACCOUNT_ID>"
```

### Langkah 2: Atur ruang agen ARN
<a name="step-2-set-the-agent-space-arn"></a>

Salin `agent_space_arn` nilai dari output Bagian 1 (Langkah 2) dan atur di`terraform.tfvars`:

```
agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>"
```

Sumber daya akun layanan menggunakan nilai ini untuk menjangkau kebijakan kepercayaan pada peran akun sekunder. Sumber daya ini hanya dibuat ketika nilai ini ditetapkan.

### Langkah 3: Konfigurasikan penyedia `aws.service`
<a name="step-3-configure-the-awsservice-provider"></a>

Di`main.tf`, konfigurasikan alias `aws.service` penyedia dengan kredenSIAL untuk akun layanan. Anda dapat menggunakan profil bernama atau peran asumsi:

Menggunakan profil:

```
provider "aws" {
  alias   = "service"
  region  = var.aws_region
  profile = "your-service-account-profile"
}
```

Atau menggunakan asumsi peran:

```
provider "aws" {
  alias  = "service"
  region = var.aws_region
  assume_role {
    role_arn = "arn:aws:iam::<SERVICE_ACCOUNT_ID>:role/OrganizationAccountAccessRole"
  }
}
```

### Langkah 4: Terapkan
<a name="step-4-deploy"></a>

Terapkan konfigurasi yang diperbarui:

```
terraform apply
```

Ini membuat sumber daya berikut di akun layanan:
+ Peran IAM (`DevOpsAgentRole-SecondaryAccount-TF`) yang mempercayai ruang agen di akun pemantauan
+ Fungsi echo Lambda (`echo-service-tf`) sebagai contoh layanan

Ini juga membuat as AWS osiasi sumber di akun pemantauan yang menghubungkan akun layanan.

### Langkah 5: Verifikasi penerapan
<a name="step-5-verify-the-deployment"></a>

Uji layanan gema untuk mengonfirmasi bahwa fungsi Lambda berhasil digunakan:

```
aws lambda invoke \
  --function-name echo-service-tf \
  --payload '{"test": "hello world"}' \
  --profile <your-service-account-profile> \
  --region <REGION> \
  response.json
cat response.json
```

## Bagian 3 (Opsional): Daftarkan integrasi pihak ketiga
<a name="part-3-optional-register-third-party-integrations"></a>

Di bagian ini, Anda mendaftarkan layanan eksternal (Dynatrace, ServiceNow, Splunk, New Relic, GitLab, PagerDuty) dengan ruang agen. Integrasi ini memungkinkan AWS DevOps Agen mengakses telemetri, data insiden, dan informasi kontrol sumber selama penyelidikan.

Berbeda dengan sampel AWS CDK — yang memerlukan IntegrationsStack fase terpisah dan kabel manual dari ID ruang agen — sumber daya ini mereferensikan ruang agen secara langsung dan dapat digunakan `terraform apply` sama dengan Bagian 1.

### Integrasi yang didukung
<a name="supported-integrations"></a>


| Layanan | Jenis Layanan | Autentikasi | 
| --- | --- | --- | 
| Dynatrace | dynatrace | Kredenensi klien OAuth | 
| ServiceNow | servicenow | Kredenensi klien OAuth | 
| Splunk | mcpserversplunk | Token pembawa | 
| New Relic | mcpservernewrelic | Kunci API | 
| GitLab | gitlab | Token akses | 
| PagerDuty | pagerduty | Kredenensi klien OAuth | 

**catatan**  
**Datadog tidak termasuk dalam konfigurasi Terraform. Menghubungkan Datadog memerlukan otorisasi OAuth pengguna interaktif (login dan persetujuan browser) seperti yang dijelaskan di[Menghubungkan DataDog](connecting-telemetry-sources-connecting-datadog.md), yang tidak dapat diotomatiskan oleh Terraform. Daftarkan Datadog secara manual melalui halaman Penyedia Kemampuan di konsol.

### Langkah 1: Konfigurasikan kredenSIAL integrasi
<a name="step-1-configure-integration-credentials"></a>

Tambahkan `integrations` blok ke`terraform.tfvars`, isi hanya layanan yang Anda inginkan. Contoh berikut menunjukkan integrasi Dynatrace:

```
integrations = {
  dynatrace = {
    account_urn   = "<DYNATRACE_ACCOUNT_URN>"
    client_id     = "<DYNATRACE_CLIENT_ID>"
    client_name   = "<DYNATRACE_CLIENT_NAME>"
    client_secret = "<DYNATRACE_CLIENT_SECRET>"
    env_id        = "<DYNATRACE_ENVIRONMENT_ID>"
    resources     = ["<DYNATRACE_RESOURCE_1>"]
  }
}
```

Untuk bentuk lengkap dari setiap integrasi, lihat `terraform.tfvars.example` di repositori sampel.

**ServiceNow persyaratan: ** Selalu atur `instance_id` secara eksplisit ke nama instance pendek (misalnya, `"ven04972"` — bukan lengkap`instance_url`). Jika `instance_id` dihilangkan, asosiasi akan kembali ke`instance_url`, yang ditolak oleh API DevOps Agen dengan a`400 GeneralServiceException: instanceId '<url>' does not match the registered ServiceNow instance`.

**Keamanan: ** `integrations` Variabel ditandai`sensitive`, sehingga nilainya disunting dari rencana dan terapkan output. Jangan mengikat kredensi nyata untuk`terraform.tfvars`. Untuk produksi, sumber rahasia dari AWS Secrets Manager atau AWS System Manager Parameter Store (misalnya, menggunakan `data` sumber) daripada plaintext.

### Langkah 2: Menyebarkan
<a name="step-2-deploy"></a>

Terapkan konfigurasi:

```
terraform apply
```

Ini membuat pendaftaran layanan dan asosiasi untuk setiap integrasi yang diaktifkan.

### Langkah 3: Tinjau output
<a name="step-3-review-the-outputs"></a>

Setelah penerapan selesai, output integrasi memetakan setiap layanan yang diaktifkan ke ID terdaftar:

```
integration_service_ids = {
  "dynatrace" = "service-abc123"
}
integration_association_ids = {
  "dynatrace" = "assoc-xyz789"
}
```

**Catatan: ** Terraform tidak mengembalikan URL webhook dan rahasia sebagai output, karena rahasianya sensitif. Setelah `terraform apply` selesai, putar webhook di konsol untuk mendapatkan URL dan rahasia. Untuk petunjuk tentang mengelola kredentif webhook, lihat Mengelola kreden [ tif webhook. ](configuring-integrations-and-knowledge-invoking-devops-agent-through-webhook.md)

Untuk informasi selengkapnya tentang mengonfigurasi kredenSIAL untuk setiap layanan, lihat:
+ [Menghubungkan Dynatrace](connecting-telemetry-sources-connecting-dynatrace.md)
+ [Menghubungkan ServiceNow](connecting-to-ticketing-and-chat-connecting-servicenow.md)
+ [Menghubungkan Splunk](connecting-telemetry-sources-connecting-splunk.md)
+ [Menghubungkan Relik Baru](connecting-telemetry-sources-connecting-new-relic.md)
+ [Menghubungkan GitLab](connecting-to-cicd-pipelines-connecting-gitlab.md)
+ [Menghubungkan PagerDuty](connecting-to-ticketing-and-chat-connecting-pagerduty.md)

## Bagian 4 (Opsional): Tambahkan keterampilan, agen khusus, dan pemicu terjadwal
<a name="part-4-optional-add-a-skill-custom-agent-and-scheduled-trigger"></a>

Di bagian ini, Anda menambahkan tiga sumber daya ke ruang agen yang Anda buat di Bagian 1. Anda menambahkan ** keterampilan yang ** dimuat agen bila relevan dan agen ** khusus ** yang mencakup agen ke alur kerja tertentu. Anda juga menambahkan pemicu ** terjadwal ** yang menjalankan agen kustom secara otomatis. Sumber daya ini menggunakan `awscc_devopsagent_trigger` sumber daya `awscc_devopsagent_asset` dan.

Sumber daya ini mungkin dikenakan biaya tambahan ke AWS akun Anda. Untuk menghapusnya setelah selesai, ikuti bagian Pembersihan di akhir panduan ini.

Contoh ini menggunakan `skill` tipe `custom_agent` aset dan. Sumber `awscc_devopsagent_asset` daya yang sama menciptakan setiap jenis aset—seperti`memory_store`,`agents_md`, dan. `attachment` Untuk menggunakan tipe yang berbeda, ubah `asset_type` argumen dan berikan metadata yang dibutuhkan tipe tersebut. Untuk daftar lengkap jenis aset, metadata yang diperlukan, dan referensi properti, lihat[Mengelola aset](about-aws-devops-agent-managing-assets.md).

**penting**  
**Anda harus menyelesaikan Bagian 1 sebelum melanjutkan. Sumber daya ini memerlukan ID ruang agen dari penerapan Bagian 1.

### Langkah 1: Tambahkan konfigurasi
<a name="step-1-add-the-configuration"></a>

Buat file bernama `assets.tf` dengan isi berikut ini. Tindakan pemicu berbasis waktu mereferensikan agen kustom berdasarkan ID aset, dalam formulir`custom:<assetId>`. Konfigurasi menghubungkan ini secara otomatis dari `asset_id` atribut agen kustom. `skills`Daftar agen kustom juga menggunakan ID aset daripada nama, sehingga mereferensikan `asset_id` atribut skill. Ini juga memberi Terraform ketergantungan implisit, sehingga keterampilan dibuat sebelum agen yang melampirkannya.

Perhatikan bahwa `action` argum `metadata` en and adalah dokumen JSON yang diteruskan sebagai string, jadi contoh ini menggunakan`jsonencode`.

```
variable "agent_space_id" {
  type        = string
  description = "The agent space ID from the Part 1 output"
}

# A skill the agent loads when relevant
resource "awscc_devopsagent_asset" "example_skill" {
  agent_space_id = var.agent_space_id
  asset_type     = "skill"

  metadata = jsonencode({
    name        = "rds-performance-investigation"
    description = "Investigation procedures for RDS performance issues."
    agent_types = ["GENERIC"]
  })

  files = [{
    path         = "SKILL.md"
    content_text = <<-EOT
      # RDS Performance Investigation
      Use this skill when investigating database latency, connection
      errors, or query timeouts.
    EOT
  }]
}

# A custom agent with attached skills that a trigger can invoke
resource "awscc_devopsagent_asset" "example_custom_agent" {
  agent_space_id = var.agent_space_id
  asset_type     = "custom_agent"

  metadata = jsonencode({
    name   = "rds-firefighter"
    skills = [awscc_devopsagent_asset.example_skill.asset_id]
  })

  files = [{
    path         = "AGENT.md"
    content_text = <<-EOT
      # RDS Firefighter
      Custom agent for RDS incidents.
    EOT
  }]
}

# A time-based trigger that runs the custom agent on a schedule
resource "awscc_devopsagent_trigger" "daily" {
  agent_space_id = var.agent_space_id
  type           = "TIME_BASED"

  condition = {
    schedule = {
      expression = "rate(1 day)"
    }
  }

  action = jsonencode({
    actionType = "create:task"
    task = {
      agent = "custom:${awscc_devopsagent_asset.example_custom_agent.asset_id}"
    }
  })

  status = "Active"
}

output "skill_asset_id" {
  description = "The skill asset ID"
  value       = awscc_devopsagent_asset.example_skill.asset_id
}

output "custom_agent_asset_id" {
  description = "The custom agent asset ID"
  value       = awscc_devopsagent_asset.example_custom_agent.asset_id
}

output "trigger_id" {
  description = "The trigger ID"
  value       = awscc_devopsagent_trigger.daily.trigger_id
}
```

Jika Anda menambahkan ini ke repositori sampel, Anda dapat mereferensikan sumber daya ruang agen secara langsung alih-alih mendeklarasikan `agent_space_id` variabel.

### Langkah 2: Menyebarkan
<a name="step-2-deploy"></a>

Atur ID ruang agen`terraform.tfvars`, menggunakan `agent_space_id` nilai dari output Bagian 1:

```
agent_space_id = "<AGENT_SPACE_ID>"
```

Terapkan konfigurasi:

```
terraform apply
```

`asset_type`Argumen `agent_space_id` dan aset hanya dibuat, seperti,, `agent_space_id` `type``condition`, dan `action` argumen pemicu. Mengubah salah satu dari mereka menggantikan sumber daya. Anda dapat memperbarui pemicu `status` (`Active`atau`Inactive`) di tempat—mengaturnya `Inactive` untuk menjeda pemicu tanpa menghapusnya.

### Langkah 3: Verifikasi penerapan
<a name="step-3-verify-the-deployment"></a>

Untuk mengonfirmasi bahwa aset dan pemicu telah dibuat, jalankan perintah AWS CLI berikut:

```
aws devops-agent list-assets \
  --agent-space-id <AGENT_SPACE_ID> \
  --region <REGION>

aws devops-agent list-triggers \
  --agent-space-id <AGENT_SPACE_ID> \
  --region <REGION>
```

## Menggunakan peran IAM yang ada (Opsional)
<a name="using-existing-iam-roles-optional"></a>

Secara default, konfigurasi Terraform membuat peran IAM baru untuk ruang agen dan aplikasi operator. Jika Anda sudah memiliki peran IAM dengan kebijakan yang diperlukan, Anda dapat melewatkan pembuatan peran dan menyediakan ARN peran yang ada sebagai gantinya.

### Persyaratan
<a name="requirements"></a>

Peran yang ada harus memenuhi persyaratan berikut:

#### Peran ruang agen
<a name="agent-space-role"></a>
+ Kebijakan kepercayaan memungkinkan `aidevops.amazonaws.com` untuk mengambil peran dengan `sts:AssumeRole`
+ Memiliki kebijakan terkel `AIDevOpsAgentAccessPolicy` ola terlampir
+ (Opsional) Memiliki kebijakan sebaris yang memungkinkan pembuatan peran terkait layanan Resource Explorer

#### Peran aplikasi operator
<a name="operator-app-role"></a>
+ Kebijakan kepercayaan memungkinkan `aidevops.amazonaws.com` untuk mengambil peran dengan `sts:AssumeRole` dan `sts:TagSession`
+ Memiliki kebijakan terkel `AIDevOpsOperatorAppAccessPolicy` ola terlampir

### Konfigurasi
<a name="configuration"></a>

Di`terraform.tfvars`, atur satu atau kedua ARN peran:

```
existing_agentspace_role_arn = "arn:aws:iam::ACCOUNT_ID:role/YourAgentSpaceRole"
existing_operator_role_arn   = "arn:aws:iam::ACCOUNT_ID:role/YourOperatorRole"
```

Ketika nilai-nilai ini ditetapkan, sumber daya peran yang sesuai `iam.tf` dilewati. Pendekatan ini sepenuhnya kompatibel ke belakang — konfigurasi yang ada dengan nilai kosong (default) mempertahankan perilaku pembuatan peran saat ini.

## Pemecahan masalah
<a name="troubleshooting"></a>

**Penundaan propagasi IAM **
+ Konfigurasi mencakup 30 detik `time_sleep` antara pembuatan peran IAM dan pembuatan Ruang Agen. Layanan DevOps Agen memvalidasi kebijakan kepercayaan peran operator selama pembuatan Ruang Agen, dan ini dapat gagal jika IAM belum sepenuhnya disebarkan. Jika Anda masih melihat kesalahan kebijakan kepercayaan, tunggu sebentar dan jalankan `terraform apply` lagi — peran IAM sudah ada dan aplikasi akan berlanjut di tempat yang ditinggalkan.

**ServiceNow `instanceId does not match`kesalahan **
+ Tetapkan `instance_id` secara eksplisit di blok `service_now` integrasi ke nama instance pendek (misalnya,`"ven04972"`), bukan lengkap`instance_url`. Lihat catatan di Bagian 3 di atas.

**Asosiasi Dynatrace `status: invalid` **
+ Jika `terraform apply` berhasil tetapi laporan asosiasi yang dihasilkan `status = "invalid"` (terlihat menggunakan `aws devops-agent get-association` atau konsol), ini menunjukkan Dynatrace menolak kredenSIAL klien OAuth. Double-check `client_id`,`client_secret`, dan `account_urn` terhadap akun Dynatrace, bukan masalah konfigurasi Terraform.

**Kesalahan izin **
+ Pastikan AWS kredensi Anda memiliki izin IAM yang diperlukan untuk membuat peran dan kebijakan.
+ Periksa apakah kondisi kebijakan kepercayaan cocok dengan ID akun Anda.

**Cross-account penerapan gagal **
+ `aws.service`Penyedia harus dikonfigurasi dengan kredenSIAL untuk akun layanan. Gunakan profil bernama atau blok peran asumsi.
+ Verifikasi bahwa `agent_space_arn` nilainya cocok dengan ARN dari output Bagian 1.

**Jenis sumber daya terraform tidak ditemukan **
+ Pastikan Anda memiliki versi `awscc` penyedia `~> 1.0` atau yang lebih baru. Sumber `awscc_devopsagent_association` daya `awscc_devopsagent_agent_space` dan membutuhkan penyedia AWS Cloud Control.
+ Sumber `awscc_devopsagent_trigger` daya `awscc_devopsagent_asset` dan sumber daya yang digunakan di Bagian 4 memerlukan `awscc` penyedia versi 1.98.0 atau yang lebih baru. Jalan `terraform providers` kan untuk memeriksa versi Anda, dan jalankan `terraform init -upgrade` setelah menaikkan batasan versi.

## Pembersihan
<a name="cleanup"></a>

Jika Anda menyelesaikan Bagian 4, hapus skill, agen khusus, dan pemicu terlebih dahulu. Berbeda dengan panduan AWS CDK, yang menempatkan sumber daya ini dalam tumpukan terpisah, `assets.tf` adalah bagian dari konfigurasi Terraform yang sama, jadi polos `terraform destroy` menghapus ruang agen bersamanya. Hapus `assets.tf` dan terapkan perubahan untuk menghapus hanya sumber daya Bagian 4:

```
rm assets.tf
terraform apply
```

Untuk menyimpan file, targetkan tiga sumber daya sebagai gantinya:

```
terraform destroy \
  -target=awscc_devopsagent_trigger.daily \
  -target=awscc_devopsagent_asset.example_custom_agent \
  -target=awscc_devopsagent_asset.example_skill
```

Menghapus hanya sumber daya ini membuat ruang agen tetap utuh. Lakukan ini jika Anda menerapkan Bagian 4 terhadap ruang agen yang Anda bagikan dengan orang lain atau yang tidak Anda buat di Bagian 1.

Untuk kemudian menghapus yang lainnya, hancurkan dalam urutan terbalik jika Anda menggunakan Bagian 2:

```
./cleanup.sh
```

Atau secara manual:

```
terraform destroy
```

**Peringatan: ** Ini menghapus ruang agen Anda dan semua data terkait secara permanen. Pastikan Anda telah membuat cadangan informasi penting sebelum melanjutkan.

## Pertimbangan keamanan
<a name="security-considerations"></a>
+ Konfigurasi Terraform membuat peran IAM dengan kebijakan kepercayaan yang hanya mengizinkan prinsipal `aidevops.amazonaws.com` layanan untuk mengasumsinya.
+ Kebijakan kepercayaan mencakup kondisi yang membatasi akses ke AWS akun spesifik Anda dan ruang agen ARN.
+ Semua kebijakan mengikuti prinsip hak istimewa paling sedikit. Tinjau dan sesuaikan kebijakan IAM berdasarkan persyaratan keamanan organisasi Anda.
+ Peran lintas akun (`DevOpsAgentRole-SecondaryAccount-TF`) menggunakan nama tetap dan dicakup ke ruang agen tertentu ARN.

## Langkah selanjutnya
<a name="next-steps"></a>

Setelah Anda menyebarkan A AWS DevOps gen Anda menggunakan Terraform:

1. Pelajari tentang berbagai kemampuan DevOps Agen di Panduan Pengguna [AWS DevOps Agen](https://docs.aws.amazon.com/devopsagent/latest/userguide/).

1. Pertimbangkan untuk mengintegrasikan penerapan Terraform ke dalam CI/CD pipeline Anda untuk manajemen infrastruktur otomatis.

## Sumber daya tambahan
<a name="additional-resources"></a>
+ [AWS DevOps Panduan Pengguna Agen ](https://docs.aws.amazon.com/devopsagent/latest/userguide/)
+ [Contoh repositori Terraform ](https://github.com/aws-samples/sample-aws-devops-agent-terraform)
+ [Panduan orientasi CLI ](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html)
+ [sumber daya awscc\_devopsag ](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/devopsagent_agent_space) ent\_agent\_space di Registry Terraform * *
+ [sumber daya awscc\_devopsag ](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/devopsagent_association) ent\_association di Registry Terraform * *
+ [sumber daya awscc\_devopsag ](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/devopsagent_private_connection) ent\_private\_connection di Registry Terraform * *
+ [sumber daya awscc\_devopsag ](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/devopsagent_asset) ent\_asset di Registry Terraform * *
+ [sumber daya awscc\_devopsag ](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/devopsagent_trigger) ent\_trigger di Registry Terraform * *
+ [Mengelola aset](about-aws-devops-agent-managing-assets.md)