

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

# Mengelola Aset
<a name="about-aws-devops-agent-managing-assets"></a>

AWS DevOps Agen menyimpan konfigurasi dan bahan referensi untuk Ruang Agen sebagai **aset**, sumber daya yang dikelola pelanggan yang membentuk apa yang diketahui agen dan bagaimana perilakunya. Keterampilan, AGENTS.md file, dan lampiran adalah semua aset, dan Anda dapat membuat, membaca, memperbarui, dan menghapusnya secara terprogram melalui API Aset.

Topik ini menjelaskan model aset, izin IAM yang Anda butuhkan, metadata yang diharapkan setiap jenis aset, dan cara mengelola aset secara end-to-end dengan CLI dan AWS SDK for Python (Boto3). AWS Untuk gambaran konseptual keterampilan itu sendiri, lihat[DevOps Keterampilan Agen](about-aws-devops-agent-devops-agent-skills.md). Untuk pengetahuan yang dihasilkan agen yang tidak Anda ciptakan sendiri, lihat. [Keterampilan yang Dipelajari](about-aws-devops-agent-learned-skills.md)

## Kapan menggunakan Asset API
<a name="when-to-use-the-asset-api"></a>

Aplikasi Web Operator adalah cara tercepat untuk membuat satu keterampilan atau mengunggah AGENTS.md file secara interaktif. Asset API mengekspos operasi yang sama secara terprogram sehingga skrip dan otomatisasi dapat mengelola aset tanpa melalui Aplikasi Web. Alasan umum untuk memanggil Asset API secara langsung meliputi:
+ Menulis atau memperbarui aset dari skrip, terminal, atau buku catatan, bukan Aplikasi Web.
+ Bulk-loading seperangkat keterampilan atau AGENTS.md file pemula ke Ruang Agen baru.
+ Membaca konten aset untuk mencadangkannya atau membandingkan versi.

Setiap operasi di Asset API diekspos melalui AWS CLI sebagai `aws devops-agent <operation>` dan melalui AWS SDK sebagai klien. `devops-agent`

## Operasi API aset
<a name="asset-api-operations"></a>

Asset API mengekspos operasi berikut. Setiap baris mencantumkan tindakan IAM yang harus Anda berikan untuk memanggil operasi dan sumber daya yang diterapkan tindakan. Setiap tindakan berada di `aidevops:` namespace dan, kecuali`ListAssetTypes`, berlaku untuk sumber daya Agen Space dari formulir tersebut. `arn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId>` Untuk latar belakang yang lebih luas tentang `aidevops:` izin, lihat. [DevOps Izin Agen IAM](aws-devops-agent-security-devops-agent-iam-permissions.md)


| Operasi | Deskripsi | Tindakan IAM | Sumber daya | 
| --- | --- | --- | --- | 
| ListAssetTypes | Buat daftar jenis aset yang didukung oleh AWS DevOps Agen. | aidevops:ListAssetTypes | \* | 
| CreateAsset | Buat aset baru di Ruang Agen (keterampilan, lampiran AGENTS.md, agen kustom, profil pengujian, atau umpan balik). | aidevops:CreateAsset | Agen Ruang | 
| GetAsset | Ambil metadata aset dan informasi versi. | aidevops:GetAsset | Agen Ruang | 
| UpdateAsset | Perbarui metadata atau konten aset yang ada. | aidevops:UpdateAsset | Agen Ruang | 
| DeleteAsset | Hapus aset dan semua filenya dari Ruang Agen. | aidevops:DeleteAsset | Agen Ruang | 
| ListAssets | Buat daftar aset di Ruang Agen, dengan pemfilteran opsional berdasarkan jenis aset. | aidevops:ListAssets | Agen Ruang | 
| ListAssetVersions | Buat daftar versi historis dari suatu aset. | aidevops:ListAssetVersions | Agen Ruang | 
| GetAssetContent | Unduh konten lengkap aset sebagai bundel zip. | aidevops:GetAssetContent | Agen Ruang | 
| CreateAssetFile | Tambahkan file baru ke aset yang ada. | aidevops:CreateAssetFile | Agen Ruang | 
| GetAssetFile | Ambil satu file dari aset dengan jalurnya. | aidevops:GetAssetFile | Agen Ruang | 
| UpdateAssetFile | Ganti konten atau metadata file yang ada dalam aset. | aidevops:UpdateAssetFile | Agen Ruang | 
| DeleteAssetFile | Hapus satu file dari aset. | aidevops:DeleteAssetFile | Agen Ruang | 
| ListAssetFiles | Buat daftar file dalam aset. | aidevops:ListAssetFiles | Agen Ruang | 

### Contoh kebijakan IAM
<a name="example-iam-policies"></a>

Kebijakan berikut memberikan akses manajemen penuh ke aset dalam satu Ruang Agen:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:CreateAsset",
        "aidevops:GetAsset",
        "aidevops:UpdateAsset",
        "aidevops:DeleteAsset",
        "aidevops:ListAssets",
        "aidevops:ListAssetVersions",
        "aidevops:GetAssetContent",
        "aidevops:CreateAssetFile",
        "aidevops:GetAssetFile",
        "aidevops:UpdateAssetFile",
        "aidevops:DeleteAssetFile",
        "aidevops:ListAssetFiles"
      ],
      "Resource": "arn:aws:aidevops:us-east-1:111122223333:agentspace/8f6187a7-0388-4926-8217-3a0fe32f757c"
    },
    {
      "Effect": "Allow",
      "Action": "aidevops:ListAssetTypes",
      "Resource": "*"
    }
  ]
}
```

Kebijakan berikut memberikan akses hanya-baca ke aset dalam satu Ruang Agen:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:GetAsset",
        "aidevops:ListAssets",
        "aidevops:ListAssetVersions",
        "aidevops:GetAssetContent",
        "aidevops:GetAssetFile",
        "aidevops:ListAssetFiles"
      ],
      "Resource": "arn:aws:aidevops:us-east-1:111122223333:agentspace/8f6187a7-0388-4926-8217-3a0fe32f757c"
    },
    {
      "Effect": "Allow",
      "Action": "aidevops:ListAssetTypes",
      "Resource": "*"
    }
  ]
}
```

## Jenis aset
<a name="asset-types"></a>

Setiap aset memiliki `assetType` string yang mengidentifikasi jenis sumber daya apa itu. Enam jenis aset dapat dibuat melalui API Aset:`skill`,`agents_md`,`attachment`,`custom_agent`,`test_profile`, dan`feedback`. Bagian yang mengikuti menggambarkan setiap jenis. Anda juga dapat memanggil `ListAssetTypes` untuk mengambil pengidentifikasi tipe saat runtime.

Setiap aset membawa objek `metadata` JSON bentuk bebas yang menggambarkan sumber daya. Kunci di dalam `metadata` menggunakan snake\_case (misalnya,,`agent_types`). `skill_type` Kunci di luar`metadata`, di tingkat atas badan permintaan, menggunakan camelCase (misalnya`agentSpaceId`,,,`assetType`). `clientToken` `metadata`Kunci yang diperlukan dan opsional bergantung pada jenis aset, seperti yang dijelaskan di bagian berikut.

Saat Anda menelepon `UpdateAsset` atau`UpdateAssetFile`, layanan menerapkan semantik PATCH ke`metadata`: kunci yang Anda sertakan diganti, dan kunci yang Anda hilangkan mempertahankan nilai yang disimpan. Anda tidak dapat mengubah aset `assetType` setelah dibuat.

### keterampilan
<a name="skill"></a>

`skill`Aset mengemas instruksi dan bahan referensi yang dimuat agen bila relevan. Keterampilan sederhana adalah satu `SKILL.md` file; keterampilan yang kompleks adalah bundel zip yang berisi `SKILL.md` file plus opsional `references/` atau `assets/` direktori.

**`metadata`Properti yang dibutuhkan:**
+ **name** (string) — Pengidentifikasi unik untuk keterampilan. Huruf kecil, angka, dan tanda hubung saja, 1-64 karakter. Tidak boleh memulai atau mengakhiri dengan tanda hubung. Diperlukan hanya untuk keterampilan sederhana. Untuk unggahan zip, layanan membaca `name` dari `SKILL.md` frontmatter dan nilai apa pun yang diberikan di sini diabaikan.
+ **deskripsi** (string) — Penjelasan karakter 1-1024 tentang kapan agen harus menggunakan keterampilan. Diperlukan hanya untuk keterampilan sederhana. Untuk unggahan zip, layanan membaca `description` dari `SKILL.md` frontmatter dan nilai apa pun yang diberikan di sini diabaikan.
+ **agent\_types** (array string) - Satu atau beberapa jenis agen yang berlaku untuk keterampilan ini. Gunakan `["GENERIC"]` untuk membuat keterampilan tersedia untuk semua jenis agen. Nilai-nilai lain termasuk `CHAT``INCIDENT_TRIAGE`,`INCIDENT_RCA`,`INCIDENT_MITIGATION`,`PREVENTION`,`CHANGE_REVIEW`,`CHANGE_RELEASE`,`QUALITY_ASSURANCE_TESTING`,,`RELEASE_SHEPHERD`,`RELEASE_READINESS_REVIEW`, dan`RELEASE_TESTING`. `GENERIC`Nilai tidak dapat digabungkan dengan nilai lain.

**`metadata`Properti opsional:**
+ **skill\_type** (string) - Default ke. `USER` API Aset hanya mengizinkan keterampilan yang dibuat pelanggan, jadi satu-satunya nilai yang diterima adalah. `USER` Layanan menolak permintaan yang disetel `skill_type` ke`LEARNED`, yang dicadangkan untuk keterampilan yang dihasilkan oleh agen itu sendiri.
+ **status** (string) — Status aktivasi keterampilan. Nilai yang diterima adalah `ACTIVE` dan `INACTIVE` (hanya huruf besar). Default ke `ACTIVE`. Keterampilan tidak aktif tetap berada di Ruang Agen tetapi tidak dimuat oleh agen selama penyelidikan atau obrolan. Gunakan `UpdateAsset` dengan `metadata.status` untuk menonaktifkan atau mengaktifkan kembali keterampilan tanpa menghapusnya. Keterampilan adalah satu-satunya jenis aset yang mendukung aktivasi; `status` bidang diabaikan pada setiap jenis aset lainnya. Lihat [Mengaktifkan dan menonaktifkan keterampilan](#activating-and-deactivating-skills) untuk contoh yang berhasil.
+ **enable\_tools** (array string) — Daftar pengidentifikasi alat yang dapat dipanggil agen saat memuat keterampilan ini.

**Contoh`metadata`:**

```
{
  "name": "rds-performance-investigation",
  "description": "Investigation procedures for RDS performance issues including connection exhaustion, slow queries, replication lag, and storage capacity. Use this skill when investigating database latency, connection errors, or read/write performance degradation.",
  "agent_types": ["GENERIC"]
}
```

**Batas:** Unggahan zip tidak boleh melebihi 6 MB. Ruang Agen dapat berisi hingga 200 keterampilan yang dibuat pengguna.

### agen\_md
<a name="agents-md"></a>

`agents_md`Aset adalah file penurunan harga yang berisi instruksi agen berdiri untuk jenis agen tertentu. Agen memuat pencocokan AGENTS.md di awal setiap tugas. Untuk informasi lebih lanjut tentang instruksi agen, lihat[Instruksi agen](about-aws-devops-agent-agent-instructions.md).

**`metadata`Properti yang dibutuhkan:**
+ **agent\_type** (string) - Jenis agen yang berlaku untuk AGENTS.md file. Nilai yang valid adalah `GENERIC``CHAT`,`INCIDENT_TRIAGE`,`INCIDENT_RCA`,`INCIDENT_MITIGATION`,,`PREVENTION`,`CHANGE_REVIEW`,`CHANGE_RELEASE`,`QUALITY_ASSURANCE_TESTING`,`RELEASE_SHEPHERD`,`RELEASE_READINESS_REVIEW`, dan`RELEASE_TESTING`.

**Contoh`metadata`:**

```
{
  "agent_type": "INCIDENT_TRIAGE"
}
```

**Batas:** Setiap Ruang Agen dapat berisi paling banyak satu AGENTS.md per`agent_type`. Konten file harus markdown (`text/markdown`) dan tidak boleh melebihi 25 KB.

### lampiran
<a name="attachment"></a>

`attachment`Aset menyimpan file biner atau teks yang dapat dirujuk agen selama penyelidikan, misalnya, diagram arsitektur, PDF runbook, atau file log sampel.

**`metadata`Properti yang dibutuhkan:**
+ **nama file** (string) - Nama file asli, termasuk nama dasar dan ekstensi apa pun (misalnya,`topology.png`).
+ **ekstensi** (string) - Ekstensi file tanpa titik utama (misalnya,`png`,`pdf`,`csv`).
+ **ukuran** (angka) — Ukuran file dalam byte.

**Contoh`metadata`:**

```
{
  "filename": "topology.png",
  "extension": "png",
  "size": 184320
}
```

**Batas:** Ukuran total semua lampiran di Ruang Agen tidak boleh melebihi 10 GB.

### custom\_agent
<a name="custom-agent"></a>

`custom_agent`Aset mendefinisikan konfigurasi agen khusus dengan seperangkat alat dan keterampilan yang dikuratori. Gunakan agen khusus untuk menjangkau agen ke alur kerja atau serangkaian kemampuan tertentu.

**`metadata`Properti yang dibutuhkan:**
+ **name** (string) - Pengidentifikasi unik untuk agen kustom. Huruf kecil, angka, dan tanda hubung saja, 1-64 karakter. Tidak boleh memulai atau mengakhiri dengan tanda hubung.

**`metadata`Properti opsional:**
+ **alat** (array string) - Alat pengidentifikasi agen kustom diizinkan untuk digunakan. Default ke daftar kosong saat dihilangkan.
+ **skill** (array string) — Keterampilan mengidentifikasi beban agen kustom. Default ke daftar kosong saat dihilangkan.

**Contoh`metadata`:**

```
{
  "name": "rds-firefighter",
  "tools": ["cloudwatch:GetMetricData", "rds:DescribeDBInstances"],
  "skills": ["rds-performance-investigation"]
}
```

### test\_profil
<a name="test-profile"></a>

`test_profile`Aset menyimpan konfigurasi yang dapat digunakan kembali untuk menjalankan pengujian rilis, termasuk jenis pengujian yang akan dilakukan dan titik akhir target.

**`metadata`Properti yang dibutuhkan:**
+ **test\_agent\_type** (string) - Jenis pengujian yang dilakukan profil ini. Nilai yang valid adalah `releaseUiTesting` dan `releaseApiTesting`.
+ **target\_url** (string) - URL target uji coba.

**`metadata`Properti opsional:**
+ **name** (string) - Pengidentifikasi yang dapat dibaca manusia untuk profil pengujian. Huruf kecil, angka, dan tanda hubung saja, 1—128 karakter. Tidak boleh memulai atau mengakhiri dengan tanda hubung.
+ **deskripsi** (string) — Deskripsi karakter 1-1024 tentang apa yang dicakup oleh profil tes.
+ **test\_personas** (array string) - Persona untuk berolahraga selama uji coba. Nilai yang valid adalah `guest` dan `authenticated`.
+ **api\_spec** (string) - Spesifikasi API untuk uji coba. Relevan untuk`releaseApiTesting`.
+ **credentials\_secret\_arn (string) - ARN** dari Secrets Manager rahasia AWS yang memegang kredensyal untuk uji coba.

**Contoh`metadata`:**

```
{
  "name": "checkout-api-tests",
  "description": "Release API tests for the checkout service.",
  "test_agent_type": "releaseApiTesting",
  "target_url": "https://api.example.com",
  "test_personas": ["guest", "authenticated"],
  "api_spec": "openapi: 3.0.0",
  "credentials_secret_arn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:checkout-creds"
}
```

### Umpan Balik
<a name="feedback"></a>

`feedback`Aset mencatat umpan balik yang diberikan pelanggan pada eksekusi agen tunggal. Gunakan aset umpan balik untuk menangkap putusan dan catatan bahwa jalur evaluasi hilir dapat digabungkan.

**`metadata`Properti yang dibutuhkan:**
+ **agent\_types** (array string) - Jenis agen yang menghasilkan eksekusi. Harus mengandung setidaknya satu nilai (misalnya,`INCIDENT_TRIAGE`).

**`metadata`Properti opsional:**
+ **execution\_id** (string) - Eksekusi umpan balik ini dikaitkan dengan. Aktifkan ini`CreateAsset`; itu tidak dapat diubah oleh`UpdateAsset`.

**Contoh`metadata`:**

```
{
  "execution_id": "b2c3d4e5-6789-01ab-cdef-example22222",
  "agent_types": ["INCIDENT_TRIAGE"]
}
```

## Konten aset: file atau zip
<a name="asset-content-file-or-zip"></a>

Setiap `CreateAsset` permintaan menyertakan `content` objek yang menyimpan byte yang disimpan aset. Bentuk `content` tergantung pada apakah Anda mengunggah satu file atau bundel zip:
+ **File teks tunggal** - `content.file.body.text` membawa hingga 1,5 MB UTF-8 teks. Gunakan ini untuk keterampilan dan AGENTS.md file sederhana.

```json { "content": { "file": { "path": "SKILL.md", "body": { "text": "# Skill\n\nInstructions go here." } } } } ```
+ **File biner tunggal** - `content.file.body.bytes` membawa hingga 6 MB konten biner yang dikodekan base64. Gunakan ini untuk lampiran seperti gambar atau PDF. Karena gumpalan bersarang di dalam `content` serikat pekerja, base64-menyandikan file sebelumnya dan mengirimkan permintaan dengan `--cli-input-json` (lihat [Membuat keterampilan dari file biner untuk contoh yang berfungsi](#create-a-skill-from-a-binary-file)).

```json { "content": { "file": { "path": "topology.png", "body": { "bytes": "<base64-encoded bytes>" } } } } ```
+ **Zip bundle** - `content.zip.zipFile` membawa arsip zip berenkode base64 hingga 6 MB. Gunakan ini untuk keterampilan yang menyertakan file tambahan `SKILL.md` plus dalam `assets/` direktori `references/` atau.

```json { "content": { "zip": { "zipFile": "<base64-encoded zip bytes>" } } } ```

Untuk menambah, mengganti, atau menghapus file individual di dalam aset yang ada tanpa mengunggah ulang seluruh bundel, gunakan `CreateAssetFile``UpdateAssetFile`, dan. `DeleteAssetFile`

## Mengelola keterampilan end-to-end
<a name="managing-a-skill-end-to-end"></a>

Panduan berikut ini menciptakan keterampilan tiga cara berbeda (dari satu file teks, dari file biner, dan dari bundel zip), dan kemudian menjalankan operasi baca, perbarui, dan hapus. Ganti `8f6187a7-0388-4926-8217-3a0fe32f757c` dengan ID Ruang Agen Anda.

### Buat keterampilan dari satu file teks
<a name="create-a-skill-from-a-single-text-file"></a>

Ini adalah jalur paling sederhana: satu `SKILL.md` file yang diunggah sebaris. Karena unggahan berisi persis satu file teks, Anda harus menyediakan `name` dan `description` masuk`metadata`.

**AWS CLI:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type skill \
  --metadata '{
    "name": "rds-performance-investigation",
    "description": "Investigation procedures for RDS performance issues. Use when investigating database latency, connection errors, or query timeouts.",
    "agent_types": ["GENERIC"]
  }' \
  --content '{
    "file": {
      "path": "SKILL.md",
      "body": {
        "text": "# RDS Performance Investigation\n\nUse this skill when customers report database latency, connection errors, query timeouts, or read/write performance degradation."
      }
    }
  }'
```

**Python (Boto3):**

```
import boto3

client = boto3.client("devops-agent")

response = client.create_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetType="skill",
    metadata={
        "name": "rds-performance-investigation",
        "description": (
            "Investigation procedures for RDS performance issues. "
            "Use when investigating database latency, connection errors, "
            "or query timeouts."
        ),
        "agent_types": ["GENERIC"],
    },
    content={
        "file": {
            "path": "SKILL.md",
            "body": {
                "text": (
                    "# RDS Performance Investigation\n\n"
                    "Use this skill when customers report database latency, "
                    "connection errors, query timeouts, or read/write "
                    "performance degradation."
                )
            },
        }
    },
)

asset_id = response["asset"]["assetId"]
```

### Buat keterampilan dari file biner
<a name="create-a-skill-from-a-binary-file"></a>

Gunakan unggahan biner ketika konten keterampilan bukan UTF-8 teks. Contoh di bawah ini mengunggah PDF yang telah dirender sebelumnya sebagai badan keterampilan. Karena badan permintaan berisi gumpalan berkode base64 yang bersarang di dalam `content` serikat pekerja, berikan permintaan dari file JSON dengan `--cli-input-json` dan base64 menyandikan gumpalan sebelumnya.

`-w 0`Bendera di bawah ini memberi tahu GNU `base64` untuk memancarkan gumpalan yang dikodekan pada satu baris; tanpanya bungkus baris 76 karakter default menyisipkan baris baru yang menghasilkan JSON yang tidak valid ketika gumpalan diinterpolasi ke heredoc. Di macOS, gunakan `base64 -i ops-runbook.pdf` (BSD `base64` tidak membungkus secara default).

**Bangun badan permintaan:**

```
base64 -w 0 ops-runbook.pdf > ops-runbook.b64
cat > create-skill.json <<EOF
{
  "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c",
  "assetType": "skill",
  "metadata": {
    "name": "ops-runbook",
    "description": "Operations runbook covering on-call escalation paths.",
    "agent_types": ["GENERIC"]
  },
  "content": {
    "file": {
      "path": "SKILL.pdf",
      "body": { "bytes": "$(cat ops-runbook.b64)" }
    }
  }
}
EOF
```

**AWS CLI:**

```
aws devops-agent create-asset --cli-input-json file://create-skill.json
```

**Python (Boto3):**

```
with open("ops-runbook.pdf", "rb") as f:
    body_bytes = f.read()

response = client.create_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetType="skill",
    metadata={
        "name": "ops-runbook",
        "description": "Operations runbook covering on-call escalation paths.",
        "agent_types": ["GENERIC"],
    },
    content={
        "file": {
            "path": "SKILL.pdf",
            "body": {"bytes": body_bytes},
        }
    },
)
```

### Buat keterampilan dari bundel zip
<a name="create-a-skill-from-a-zip-bundle"></a>

Gunakan unggahan zip ketika keterampilan menyertakan lebih dari satu file, misalnya, materi referensi `SKILL.md` plus dan aset. Untuk unggahan zip, layanan membaca `name` dan `description` dari `SKILL.md` frontmatter, jadi jangan sertakan di dalamnya. `metadata`

Tata letak zip terlihat seperti:

```
rds-performance-investigation.zip
├── SKILL.md
├── references/
│   └── rds-metrics-reference.md
└── assets/
    └── rds-investigation-flowchart.png
```

`SKILL.md`harus menyertakan frontmatter sehingga layanan dapat mengekstrak nama dan deskripsi:

```
---
name: rds-performance-investigation
description: Investigation procedures for RDS performance issues including
  connection exhaustion, slow queries, replication lag, and storage capacity.
  Use this skill when investigating database latency, connection errors, or
  read/write performance degradation.
---

# RDS Performance Investigation
...
```

**Bangun badan permintaan:**

```
base64 -w 0 rds-performance-investigation.zip > skill.zip.b64
cat > create-skill.json <<EOF
{
  "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c",
  "assetType": "skill",
  "metadata": { "agent_types": ["GENERIC"] },
  "content": {
    "zip": { "zipFile": "$(cat skill.zip.b64)" }
  }
}
EOF
```

**AWS CLI:**

```
aws devops-agent create-asset --cli-input-json file://create-skill.json
```

**Python (Boto3):**

```
with open("rds-performance-investigation.zip", "rb") as f:
    zip_bytes = f.read()

response = client.create_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetType="skill",
    metadata={"agent_types": ["GENERIC"]},
    content={"zip": {"zipFile": zip_bytes}},
)
```

### Impor keterampilan dari repositori
<a name="import-a-skill-from-a-repository"></a>

Anda dapat membuat keterampilan dengan mengimpornya langsung dari direktori GitHub repositori. AWS DevOps Agen mengambil konten keterampilan, mengekstrak nama dan deskripsi dari SKILL.md frontmatter, dan menciptakan keterampilan di Ruang Agen Anda. Ini memungkinkan Anda mengelola keterampilan dalam kontrol versi dan mengimpor atau menyinkronkannya secara terprogram.

**Prasyarat:**
+ Ruang Agen Anda harus memiliki GitHub akun yang terkait. Lihat [Menghubungkan GitHub](connecting-to-cicd-pipelines-connecting-github.md).
+ Direktori repositori harus berisi SKILL.md file yang valid dengan frontmatter.

**AWS CLI:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type skill \
  --metadata '{ "agent_types": ["GENERIC"] }' \
  --content '{"sourceUrl": {"url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"}}'
```

**Python (Boto3):**

```
response = client.create_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetType="skill",
    metadata={"agent_types": ["GENERIC"]},
    content={
        "sourceUrl": {
            "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"
        }
    },
)

asset_id = response["asset"]["assetId"]
```

Layanan mengambil isi direktori, membaca SKILL.md frontmatter untuk `name` dan`description`, dan mengimpor semua file. Jangan sertakan `name` atau `description` di `metadata` —mereka diekstraksi dari frontmatter secara otomatis.

**Menyinkronkan keterampilan yang diimpor:**

Untuk menarik perubahan terbaru dari repositori, hubungi `UpdateAsset` dengan: `content.sourceUrl`

```
aws devops-agent update-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --content '{"sourceUrl": {"url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"}}'
```

```
response = client.update_asset(
    agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c",
    assetId="<assetId>",
    content={
        "sourceUrl": {
            "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"
        }
    },
)
```

Sinkronisasi menggantikan konten keterampilan sepenuhnya dengan status direktori repositori saat ini. Bidang yang dapat diedit (status, jenis agen) dipertahankan.

**Melihat sumber impor:**

`GetAsset`mengembalikan informasi sumber `metadata.source` untuk keterampilan yang diimpor repositori:

```
{
  "metadata": {
    "name": "rds-performance-investigation",
    "description": "Investigation procedures for RDS performance issues...",
    "source": {
      "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation",
      "lastSyncedAt": 1718467200
    },
    "agent_types": ["GENERIC"],
    "skill_type": "USER",
    "status": "ACTIVE"
  }
}
```

**Kendala:**
+ Hanya GitHub URL yang diterima. Anda dapat menunjuk ke direktori yang berisi SKILL.md (misalnya,`https://github.com/org/repo/tree/main/skills/my-skill`), yang mengimpor seluruh direktori termasuk file referensi. Jika SKILL.md berada di root repositori, Anda juga dapat menautkan langsung ke file (misalnya,`https://github.com/org/repo/blob/main/SKILL.md`), yang hanya mengimpor file. SKILL.md
+ Direktori harus berisi SKILL.md dengan frontmatter yang valid.
+ Total ukuran direktori tidak boleh melebihi 6 MB dan paling banyak 100 file.
+ `content.sourceUrl`saling eksklusif dengan `content.file` dan `content.zip` —Anda tidak dapat menggabungkannya dalam permintaan yang sama.
+ Pembaruan khusus metadata (tanpa`content`) mempertahankan sumber impor yang ada dan tidak mengambil ulang dari repositori.

### Dapatkan, daftar, perbarui, dan hapus
<a name="get-list-update-and-delete"></a>

Gunakan `GetAsset` untuk mengambil satu aset berdasarkan ID:

```
aws devops-agent get-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId>
```

Gunakan `ListAssets` untuk halaman melalui setiap aset di Ruang Agen:

```
aws devops-agent list-assets \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --max-results 50

aws devops-agent list-assets \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --max-results 50 \
  --next-token <token>
```

Gunakan `UpdateAsset` untuk mengubah satu atau beberapa `metadata` bidang tanpa mengunggah ulang konten. Kunci yang Anda hilangkan mempertahankan nilai yang ada:

```
aws devops-agent update-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --metadata '{ "agent_types": ["INCIDENT_TRIAGE", "INCIDENT_RCA"] }'
```

Gunakan `ListAssetVersions` untuk memeriksa riwayat versi aset. Setiap yang berhasil `UpdateAsset` atau `UpdateAssetFile` panggilan memajukan nomor versi aset:

```
aws devops-agent list-asset-versions \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId>
```

Gunakan `DeleteAsset` untuk menghapus aset dan semua file-nya:

```
aws devops-agent delete-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId>
```

### Tambahkan satu file ke keterampilan yang ada
<a name="add-a-single-file-to-an-existing-skill"></a>

Jika Anda sudah membuat keterampilan dari bundel zip dan ingin menambahkan satu file referensi baru, Anda tidak perlu mengunggah ulang seluruh bundel. Gunakan`CreateAssetFile`:

```
aws devops-agent create-asset-file \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --path references/troubleshooting.md \
  --content '{ "text": "# Troubleshooting\n\nAdditional notes." }'
```

Untuk mengganti file di tempat, gunakan `update-asset-file` dengan argumen yang sama. Untuk menghapusnya, gunakan`delete-asset-file`.

### Mengaktifkan dan menonaktifkan keterampilan
<a name="activating-and-deactivating-skills"></a>

Keterampilan membawa status aktivasi di`metadata.status`. Keterampilan baru secara `ACTIVE` default dan dimuat oleh agen selama investigasi dan obrolan. Anda dapat menonaktifkan keterampilan untuk mengeluarkannya dari rotasi tanpa menghapusnya, misalnya saat Anda menyelidiki mengapa itu menghasilkan hasil yang tidak terduga, dan mengaktifkannya kembali nanti.

**Tetapkan status awal saat membuat** dengan memasukkan `metadata.status` dalam `CreateAsset` permintaan:

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type skill \
  --metadata '{
    "name": "rds-performance-investigation",
    "description": "Investigation procedures for RDS performance issues.",
    "agent_types": ["GENERIC"],
    "status": "INACTIVE"
  }' \
  --content '{
    "file": {
      "path": "SKILL.md",
      "body": { "text": "# RDS Performance Investigation" }
    }
  }'
```

**Nonaktifkan keterampilan yang ada** dengan`UpdateAsset`. Karena `metadata` diterapkan sebagai pembaruan sebagian, pengiriman hanya `status` membuat setiap bidang lainnya tetap utuh:

```
aws devops-agent update-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --metadata '{ "status": "INACTIVE" }'
```

**Aktifkan kembali** dengan cara yang sama, dengan`"status": "ACTIVE"`:

```
aws devops-agent update-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-id <assetId> \
  --metadata '{ "status": "ACTIVE" }'
```

`GetAsset`dan `ListAssets` selalu sertakan aset keterampilan saat ini`status`, sehingga Anda dapat membaca status aktivasi langsung kapan saja. `metadata`

`status`Bidang ini peka huruf besar/kecil. Hanya `ACTIVE` dan `INACTIVE` (huruf besar) yang diterima. Nilai lainnya gagal dengan a`ValidationException`. Aktivasi hanya berlaku untuk keterampilan; pengaturan `metadata.status` pada jenis aset lain tidak berpengaruh dan bidang dijatuhkan dari respons.

## Contoh untuk jenis aset lainnya
<a name="examples-for-the-other-asset-types"></a>

Panduan keterampilan di atas berlaku untuk setiap jenis aset lainnya. Satu-satunya perbedaan adalah `metadata` blok dan, untuk lampiran, pilihan konten biner. `CreateAsset`Panggilan minimal di bawah ini menggambarkan setiap jenis.

**Buat AGENTS.md:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type agents_md \
  --metadata '{ "agent_type": "INCIDENT_TRIAGE" }' \
  --content '{
    "file": {
      "path": "AGENTS.md",
      "body": { "text": "# Triage Instructions\n\nFollow these steps for new incidents." }
    }
  }'
```

**Buat lampiran** (konten biner; buat permintaan dari file JSON seperti yang ditunjukkan pada [Buat keterampilan dari file biner](#create-a-skill-from-a-binary-file)):

```
base64 -w 0 topology.png > topology.png.b64
cat > create-attachment.json <<EOF
{
  "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c",
  "assetType": "attachment",
  "metadata": {
    "filename": "topology.png",
    "extension": "png",
    "size": 184320
  },
  "content": {
    "file": {
      "path": "topology.png",
      "body": { "bytes": "$(cat topology.png.b64)" }
    }
  }
}
EOF
aws devops-agent create-asset --cli-input-json file://create-attachment.json
```

**Buat agen kustom:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type custom_agent \
  --metadata '{
    "name": "rds-firefighter",
    "tools": ["cloudwatch:GetMetricData", "rds:DescribeDBInstances"],
    "skills": ["rds-performance-investigation"]
  }' \
  --content '{
    "file": {
      "path": "AGENT.md",
      "body": { "text": "# RDS Firefighter\n\nCustom agent for RDS incidents." }
    }
  }'
```

**Buat profil pengujian:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type test_profile \
  --metadata '{
    "name": "checkout-api-tests",
    "test_agent_type": "releaseApiTesting",
    "target_url": "https://api.example.com",
    "test_personas": ["guest", "authenticated"]
  }' \
  --content '{
    "file": {
      "path": "PROFILE.md",
      "body": { "text": "# Checkout API test profile" }
    }
  }'
```

**Buat aset umpan balik:**

```
aws devops-agent create-asset \
  --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \
  --asset-type feedback \
  --metadata '{
    "execution_id": "b2c3d4e5-6789-01ab-cdef-example22222",
    "agent_types": ["INCIDENT_TRIAGE"]
  }' \
  --content '{
    "file": {
      "path": "FEEDBACK.md",
      "body": { "text": "{\"verdict\":\"correct\"}" }
    }
  }'
```

**Daftar jenis aset yang didukung:**

```
aws devops-agent list-asset-types
```