

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwaltung von Vermögenswerten
<a name="about-aws-devops-agent-managing-assets"></a>

AWS DevOps Der Agent speichert die Konfiguration und das Referenzmaterial für einen Agent Space in Form von **Ressourcen, d.** h. den vom Kunden verwalteten Ressourcen, die bestimmen, was der Agent weiß und wie er sich verhält. Fähigkeiten, AGENTS.md Dateien und Anlagen sind allesamt Ressourcen, die Sie mithilfe der Asset-API programmgesteuert erstellen, lesen, aktualisieren und löschen können.

In diesem Thema werden das Asset-Modell, die benötigten IAM-Berechtigungen, die Metadaten, die jeder Asset-Typ erwartet, und die umfassende Verwaltung von Assets mit der AWS CLI und dem AWS SDK for Python (Boto3) erläutert. Einen konzeptionellen Überblick über die Fähigkeiten selbst finden Sie unter. [DevOps Fähigkeiten der Agenten](about-aws-devops-agent-devops-agent-skills.md) Informationen zu durch Agenten generiertem Wissen, das Sie nicht selbst erstellen, finden Sie unter. [Erlernte Fähigkeiten](about-aws-devops-agent-learned-skills.md)

## Wann sollte die Asset-API verwendet werden
<a name="when-to-use-the-asset-api"></a>

Die Operator Web App ist der schnellste Weg, um einen einzelnen Skill zu erstellen oder eine AGENTS.md Datei interaktiv hochzuladen. Die Asset-API macht dieselben Operationen programmgesteuert verfügbar, sodass Skripte und Automatisierung Ressourcen verwalten können, ohne die Web-App verwenden zu müssen. Zu den häufigsten Gründen, die Asset-API direkt aufzurufen, gehören:
+ Erstellen oder Aktualisieren eines Assets über ein Skript, ein Terminal oder ein Notizbuch statt über die Web-App.
+ Bulk-loading ein Startpaket von Fähigkeiten oder AGENTS.md Dateien in einem neuen Agent Space.
+ Den Inhalt eines Assets lesen, um es zu sichern oder Versionen zu vergleichen.

Jeder Vorgang in der Asset-API wird über die AWS CLI als `aws devops-agent <operation>` und über die AWS SDKs als `devops-agent` Client verfügbar gemacht.

## Asset-API-Operationen
<a name="asset-api-operations"></a>

Die Asset-API macht die folgenden Operationen verfügbar. In jeder Zeile sind die IAM-Aktion aufgeführt, die Sie gewähren müssen, um den Vorgang aufzurufen, sowie die Ressource, für die sich die Aktion bezieht. Jede Aktion befindet sich im `aidevops:` Namespace und gilt, mit Ausnahme von`ListAssetTypes`, für eine Agent Space-Ressource der Form. `arn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId>` Weitere Hintergrundinformationen zu `aidevops:` Berechtigungen finden Sie unter[DevOps IAM-Berechtigungen für Agenten](aws-devops-agent-security-devops-agent-iam-permissions.md).


| Operation | Description | IAM-Aktion | Ressource | 
| --- | --- | --- | --- | 
| ListAssetTypes | Listet die vom AWS DevOps Agenten unterstützten Asset-Typen auf. | aidevops:ListAssetTypes | \* | 
| CreateAsset | Erstellen Sie ein neues Asset in einem Agent-Bereich (Fähigkeit AGENTS.md, Anlage, benutzerdefinierter Agent, Testprofil oder Feedback). | aidevops:CreateAsset | Agentenbereich | 
| GetAsset | Rufen Sie die Metadaten und Versionsinformationen eines Assets ab. | aidevops:GetAsset | Agentenbereich | 
| UpdateAsset | Aktualisieren Sie die Metadaten oder den Inhalt eines vorhandenen Assets. | aidevops:UpdateAsset | Agentenbereich | 
| DeleteAsset | Löschen Sie ein Asset und alle zugehörigen Dateien aus einem Agent Space. | aidevops:DeleteAsset | Agentenbereich | 
| ListAssets | Listet Assets in einem Agent Space auf, mit optionaler Filterung nach Asset-Typ. | aidevops:ListAssets | Agentenbereich | 
| ListAssetVersions | Listet die historischen Versionen eines Assets auf. | aidevops:ListAssetVersions | Agentenbereich | 
| GetAssetContent | Laden Sie den vollständigen Inhalt eines Assets als Zip-Paket herunter. | aidevops:GetAssetContent | Agentenbereich | 
| CreateAssetFile | Fügt einem vorhandenen Asset eine neue Datei hinzu. | aidevops:CreateAssetFile | Agentenbereich | 
| GetAssetFile | Ruft eine einzelne Datei anhand ihres Pfads aus einem Asset ab. | aidevops:GetAssetFile | Agentenbereich | 
| UpdateAssetFile | Ersetzen Sie den Inhalt oder die Metadaten einer vorhandenen Datei in einem Asset. | aidevops:UpdateAssetFile | Agentenbereich | 
| DeleteAssetFile | Eine einzelne Datei aus einem Asset entfernen. | aidevops:DeleteAssetFile | Agentenbereich | 
| ListAssetFiles | Listet die Dateien in einem Asset auf. | aidevops:ListAssetFiles | Agentenbereich | 

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

Die folgende Richtlinie gewährt vollen Verwaltungszugriff auf Ressourcen in einem einzigen Agentenbereich:

```
{
  "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": "*"
    }
  ]
}
```

Die folgende Richtlinie gewährt nur Lesezugriff auf Ressourcen in einem einzigen Agentenbereich:

```
{
  "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": "*"
    }
  ]
}
```

## Asset-Typen
<a name="asset-types"></a>

Jedes Asset hat eine `assetType` Zeichenfolge, die angibt, um welche Art von Ressource es sich handelt. Sechs Asset-Typen können über die Asset-API erstellt werden: `skill``agents_md`,`attachment`,`custom_agent`,`test_profile`, und`feedback`. In den folgenden Abschnitten werden die einzelnen Typen beschrieben. Sie können die Typbezeichner auch aufrufen`ListAssetTypes`, um die Typbezeichner zur Laufzeit abzurufen.

Jedes Asset enthält ein `metadata` JSON-Objekt in freier Form, das die Ressource beschreibt. Die darin enthaltenen Schlüssel `metadata` verwenden snake\_case (z. B.,). `agent_types` `skill_type` Die Schlüssel außerhalb`metadata`, auf der obersten Ebene des Anforderungstextes, verwenden CamelCase (z. B., `agentSpaceId``assetType`,`clientToken`). Die erforderlichen und optionalen `metadata` Schlüssel hängen vom Asset-Typ ab, wie in den folgenden Abschnitten beschrieben.

Wenn Sie `UpdateAsset` oder aufrufen`UpdateAssetFile`, wendet der Dienst die PATCH-Semantik auf Folgendes an`metadata`: Schlüssel, die Sie angeben, werden ersetzt, und Schlüssel, die Sie auslassen, behalten ihre gespeicherten Werte. Sie können ein Asset nicht mehr ändern, `assetType` nachdem es erstellt wurde.

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

Ein `skill` Asset verpackt Anweisungen und Referenzmaterial, das der Agent bei Bedarf lädt. Ein einfacher Skill ist eine einzelne `SKILL.md` Datei; ein komplexer Skill ist ein Zip-Paket, das eine `SKILL.md` Datei sowie optionale `assets/` Verzeichnisse `references/` oder Verzeichnisse enthält.

**Erforderliche `metadata` Eigenschaften:**
+ **name** (string) — Eine eindeutige Kennung für den Skill. Nur Kleinbuchstaben, Zahlen und Bindestriche, 1—64 Zeichen. Darf nicht mit einem Bindestrich beginnen oder enden. Nur für einfache Fähigkeiten erforderlich. Bei ZIP-Uploads liest der Dienst `name` aus der `SKILL.md` Titelseite und jeder hier angegebene Wert wird ignoriert.
+ **description** (string) — Eine Erklärung mit 1—1024 Zeichen, wann der Agent den Skill einsetzen sollte. Nur für einfache Skills erforderlich. Bei ZIP-Uploads liest der Dienst `description` aus der `SKILL.md` Titelseite und jeder hier angegebene Wert wird ignoriert.
+ **agent\_types** (Zeichenkettenarray) — Ein oder mehrere Agententypen, für die dieser Skill gilt. Wird verwendet`["GENERIC"]`, um den Skill für alle Agententypen verfügbar zu machen. Andere Werte umfassen`CHAT`,`INCIDENT_TRIAGE`,`INCIDENT_RCA`,`INCIDENT_MITIGATION`,`PREVENTION`,`CHANGE_REVIEW`,`CHANGE_RELEASE`,`QUALITY_ASSURANCE_TESTING`,`RELEASE_SHEPHERD`,`RELEASE_READINESS_REVIEW`, und`RELEASE_TESTING`. Der `GENERIC` Wert kann nicht mit anderen Werten kombiniert werden.

**Optionale `metadata` Eigenschaften:**
+ **skill\_type** (string) — Der Standardwert ist. `USER` Die Asset-API erlaubt nur vom Kunden erstellte Fähigkeiten, daher ist der einzig akzeptierte Wert. `USER` Der Service lehnt Anfragen ab, die `skill_type` auf gesetzt sind. Dieser Wert ist für Skills reserviert`LEARNED`, die vom Agenten selbst generiert wurden.
+ **status** (Zeichenfolge) — Aktivierungsstatus des Skills. Zulässige Werte sind `ACTIVE` und `INACTIVE` (nur in Großbuchstaben). Standardeinstellung: `ACTIVE`. Inaktive Skills verbleiben im Agentenbereich, werden aber nicht vom Agenten bei Ermittlungen oder im Chat geladen. Verwenden Sie `UpdateAsset` mit`metadata.status`, um einen Skill zu deaktivieren oder zu reaktivieren, ohne ihn zu löschen. Fähigkeiten sind der einzige Asset-Typ, der die Aktivierung unterstützt. Das `status` Feld wird bei allen anderen Asset-Typen ignoriert. Ein funktionierendes Beispiel finden [Sie unter Fähigkeiten aktivieren und deaktivieren](#activating-and-deactivating-skills).
+ **enable\_tools** (Zeichenkettenarray) — Eine Liste von Tool-IDs, die der Agent aufrufen kann, wenn er diesen Skill lädt.

**Beispiel: `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"]
}
```

**Einschränkungen:** ZIP-Uploads dürfen 6 MB nicht überschreiten. Ein Agent Space kann bis zu 200 vom Benutzer erstellte Skills enthalten.

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

Ein `agents_md` Asset ist eine Markdown-Datei, die ständige Agentenanweisungen für einen bestimmten Agententyp enthält. Der Agent lädt das Matching AGENTS.md zu Beginn jeder Aufgabe. Weitere Informationen zu Anweisungen für Agenten finden Sie unter[Anweisungen für Agenten](about-aws-devops-agent-agent-instructions.md).

**Erforderliche `metadata` Eigenschaften:**
+ **agent\_type** (string) — Der Agententyp, für den sich die AGENTS.md Datei bezieht. Gültige Werte sind: `GENERIC`, `CHAT`, `INCIDENT_TRIAGE`, `INCIDENT_RCA`, `INCIDENT_MITIGATION`, `PREVENTION`, `CHANGE_REVIEW`, `CHANGE_RELEASE`, `QUALITY_ASSURANCE_TESTING`, `RELEASE_SHEPHERD`, `RELEASE_READINESS_REVIEW` und `RELEASE_TESTING`.

**Beispiel: `metadata`**

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

**Grenzwerte:** Jeder Agentenbereich kann maximal einen AGENTS.md pro enthalten`agent_type`. Der Dateiinhalt muss Markdown (`text/markdown`) sein und darf 25 KB nicht überschreiten.

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

Ein `attachment` Asset speichert eine Binär- oder Textdatei, auf die der Agent bei Untersuchungen verweisen kann, z. B. ein Architekturdiagramm, ein Runbook-PDF oder eine Beispielprotokolldatei.

**Erforderliche `metadata` Eigenschaften:**
+ **filename** (string) — Der ursprüngliche Dateiname, einschließlich des Basisnamens und aller Erweiterungen (z. B.`topology.png`).
+ **extension** (string) — Die Dateierweiterung ohne den führenden Punkt (z. B.`png`,`pdf`,`csv`).
+ **size** (number) — Die Größe der Datei in Byte.

**Beispiel`metadata`:**

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

**Grenzwerte:** Die Gesamtgröße aller Anlagen in einem Agent Space darf 10 GB nicht überschreiten.

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

Ein `custom_agent` Asset definiert eine spezielle Agentenkonfiguration mit einem kuratierten Satz von Tools und Fähigkeiten. Verwenden Sie einen benutzerdefinierten Agenten, um den Agenten auf einen bestimmten Workflow oder eine Reihe von Funktionen zu beschränken.

**Erforderliche `metadata` Eigenschaften:**
+ **name** (string) — Ein eindeutiger Bezeichner für den benutzerdefinierten Agenten. Nur Kleinbuchstaben, Zahlen und Bindestriche, 1—64 Zeichen. Darf nicht mit einem Bindestrich beginnen oder enden.

**Optionale `metadata` Eigenschaften:**
+ **tools** (Zeichenkettenarray) — Die Tool-IDs, die der benutzerdefinierte Agent verwenden darf. Standardmäßig wird eine leere Liste angezeigt, wenn sie weggelassen wird.
+ **skills** (Array von Zeichenketten) — Die Skill-IDs, die der benutzerdefinierte Agent lädt. Wenn sie weggelassen wird, wird standardmäßig eine leere Liste angezeigt.

**Beispiel: `metadata`**

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

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

Ein `test_profile` Asset speichert eine wiederverwendbare Konfiguration für einen Release-Testlauf, einschließlich der Art der durchzuführenden Tests und des Zielendpunkts.

**Erforderliche Eigenschaften`metadata`:**
+ **test\_agent\_type** (string) — Die Art der Tests, die dieses Profil durchführt. Gültige Werte sind `releaseUiTesting` und `releaseApiTesting`.
+ **target\_url (string) — Die URL**, auf die der Testlauf abzielt.

**Optionale Eigenschaften: `metadata`**
+ **name** (string) — Eine für Menschen lesbare Kennung für das Testprofil. Nur Kleinbuchstaben, Zahlen und Bindestriche, 1—128 Zeichen. Darf nicht mit einem Bindestrich beginnen oder enden.
+ **Beschreibung** (Zeichenfolge) — Eine 1—1024 Zeichen umfassende Beschreibung dessen, was das Testprofil abdeckt.
+ **test\_personas** (Zeichenkettenarray) — Die Personas, die während des Testlaufs trainiert werden sollen. Gültige Werte sind `guest` und `authenticated`.
+ **api\_spec** (string) — Eine API-Spezifikation für den Testlauf. Relevant für. `releaseApiTesting`
+ **credentials als\_secret\_arn** (string) — Der ARN eines AWS Secrets Manager, das Anmeldeinformationen für den Testlauf enthält.

**Beispiel: `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"
}
```

### Feedback
<a name="feedback"></a>

Ein `feedback` Asset zeichnet vom Kunden bereitgestelltes Feedback zur Ausführung eines einzelnen Agenten auf. Verwenden Sie Feedback-Assets, um Urteile und Notizen zu erfassen, die dann in den nachfolgenden Evaluierungspipelines zusammengefasst werden können.

**Erforderliche Eigenschaften: `metadata`**
+ **agent\_types** (Zeichenkettenarray) — Die Agententypen, die die Ausführung ausgeführt haben. Muss mindestens einen Wert enthalten (z. B.`INCIDENT_TRIAGE`).

**Optionale `metadata` Eigenschaften:**
+ **execution\_id** (string) — Die Ausführung, mit der dieses Feedback verknüpft ist. Stellen Sie dies ein`CreateAsset`; es kann nicht geändert werden von. `UpdateAsset`

**Beispiel`metadata`:**

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

## Inhalt des Assets: Datei oder Zip
<a name="asset-content-file-or-zip"></a>

Jede `CreateAsset` Anfrage enthält ein `content` Objekt, das die Bytes enthält, die das Asset speichert. Die Form von `content` hängt davon ab, ob Sie eine einzelne Datei oder ein Zip-Paket hochladen:
+ **Einzelne Textdatei** — `content.file.body.text` enthält bis zu 1,5 MB UTF-8 Text. Verwenden Sie dies für einfache Fähigkeiten und AGENTS.md Dateien.

```json { "content": { "file": { "path": "SKILL.md", "body": { "text": "# Skill\n\nInstructions go here." } } } } ```
+ **Einzelne Binärdatei** — `content.file.body.bytes` enthält bis zu 6 MB an Base64-codierten Binärinhalten. Verwenden Sie dies für Anhänge wie Bilder oder PDF-Dateien. Da der Blob innerhalb der `content` Union verschachtelt ist, kodieren Sie die Datei im Voraus mit Base64 und reichen Sie die Anfrage mit ein `--cli-input-json` (ein funktionierendes Beispiel finden [Sie unter Erstellen eines Skills aus einer Binärdatei](#create-a-skill-from-a-binary-file)).

```json { "content": { "file": { "path": "topology.png", "body": { "bytes": "<base64-encoded bytes>" } } } } ```
+ **Zip-Paket** — `content.zip.zipFile` enthält ein Base64-kodiertes Zip-Archiv mit bis zu 6 MB. Verwenden Sie dies für Fähigkeiten, die ein `SKILL.md` Plus zusätzlicher Dateien in einem `references/` OR-Verzeichnis enthalten. `assets/`

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

Um einzelne Dateien in einem vorhandenen Asset hinzuzufügen, zu ersetzen oder zu löschen, ohne das gesamte Paket erneut hochzuladen, verwenden Sie `CreateAssetFile``UpdateAssetFile`, und. `DeleteAssetFile`

## Ganzheitliche Verwaltung eines Skills
<a name="managing-a-skill-end-to-end"></a>

In der folgenden exemplarischen Vorgehensweise wird ein Skill auf drei verschiedene Arten erstellt (aus einer einzelnen Textdatei, aus einer Binärdatei und aus einem Zip-Paket). Anschließend werden die Lese-, Aktualisierungs- und Löschvorgänge ausgeführt. Ersetzen Sie es `8f6187a7-0388-4926-8217-3a0fe32f757c` durch Ihre Agent Space-ID.

### Erstellen Sie einen Skill aus einer einzigen Textdatei
<a name="create-a-skill-from-a-single-text-file"></a>

Dies ist der einfachste Pfad: eine einzelne `SKILL.md` Datei, die inline hochgeladen wird. Da der Upload genau eine Textdatei enthält, müssen Sie diese angeben `name` und `description` eingeben`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 (Teil 3):**

```
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"]
```

### Erstellen Sie einen Skill aus einer Binärdatei
<a name="create-a-skill-from-a-binary-file"></a>

Verwenden Sie einen binären Upload, wenn der Skill-Inhalt kein UTF-8 Text ist. Im folgenden Beispiel wird eine vorab gerenderte PDF-Datei als Skilltext hochgeladen. Da der Anforderungstext einen innerhalb der `content` Union verschachtelten Base64-codierten Blob enthält, sollten Sie die Anfrage aus einer JSON-Datei mit angeben `--cli-input-json` und den Blob im Voraus mit Base64-kodieren.

Das unten stehende `-w 0` Flag weist GNU `base64` an, den codierten Blob in einer einzigen Zeile auszugeben. Andernfalls fügt der standardmäßige 76-stellige Zeilenumbruch Zeilenumbrüche ein, die ungültiges JSON erzeugen, wenn der Blob in das Heredoc interpoliert wird. Verwenden Sie unter macOS `base64 -i ops-runbook.pdf` (das BSD `base64` wird standardmäßig nicht umgebrochen).

**Erstellen Sie den Hauptteil der Anfrage:**

```
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 (Teil 3):**

```
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},
        }
    },
)
```

### Einen Skill aus einem Zip-Paket erstellen
<a name="create-a-skill-from-a-zip-bundle"></a>

Verwenden Sie einen ZIP-Upload, wenn der Skill mehr als eine Datei enthält, z. B. eine `SKILL.md` sowie Referenzmaterial und Ressourcen. Bei ZIP-Uploads liest der Service `name` und `description` aus der `SKILL.md` Titelseite. Fügen Sie sie also nicht in die Datei ein. `metadata`

Das Zip-Layout sieht wie folgt aus:

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

`SKILL.md`muss Frontmatter enthalten, damit der Service den Namen und die Beschreibung extrahieren kann:

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

**Erstellen Sie den Hauptteil der Anfrage:**

```
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 (Teil 3):**

```
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}},
)
```

### Importiert einen Skill aus einem Repository
<a name="import-a-skill-from-a-repository"></a>

Sie können einen Skill erstellen, indem Sie ihn direkt aus einem GitHub Repository-Verzeichnis importieren. AWS DevOps Der Agent ruft den Skill-Inhalt ab, extrahiert den Namen und die Beschreibung aus der SKILL.md Titelseite und erstellt den Skill in Ihrem Agent-Bereich. Auf diese Weise können Sie Skills in der Versionskontrolle verwalten und sie programmgesteuert importieren oder synchronisieren.

**Voraussetzungen:**
+ Ihrem Agent Space muss ein GitHub Konto zugeordnet sein. Siehe [Verbindung herstellen GitHub](connecting-to-cicd-pipelines-connecting-github.md).
+ Das Repository-Verzeichnis muss eine gültige SKILL.md Datei mit Frontmatter enthalten.

**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 (Teil 3):**

```
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"]
```

Der Dienst ruft den Verzeichnisinhalt ab, liest die SKILL.md Titelzeile für und `name` und importiert alle `description` Dateien. Nicht einschließen `name` oder `description` einbeziehen `metadata` — sie werden automatisch aus der Titeldatei extrahiert.

**Synchronisieren eines importierten Skills:**

Um die neuesten Änderungen aus dem Repository abzurufen, rufen Sie an `UpdateAsset` mit`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"
        }
    },
)
```

Bei der Synchronisierung wird der Skill-Inhalt vollständig durch den aktuellen Status des Repository-Verzeichnisses ersetzt. Bearbeitbare Felder (Status, Agententypen) werden beibehalten.

**Importquelle anzeigen:**

`GetAsset`gibt die Quellinformationen `metadata.source` für aus dem Repository importierte Fähigkeiten zurück:

```
{
  "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"
  }
}
```

**Einschränkungen**:
+ Es werden nur URLs akzeptiert GitHub . Sie können auf ein Verzeichnis verweisen, das SKILL.md (z. B.`https://github.com/org/repo/tree/main/skills/my-skill`) enthält, wodurch das gesamte Verzeichnis einschließlich der Referenzdateien importiert wird. Wenn SKILL.md sich das im Stammverzeichnis des Repositorys befindet, können Sie auch direkt auf die Datei verlinken (z. B.`https://github.com/org/repo/blob/main/SKILL.md`), wodurch nur die importiert wird SKILL.md.
+ Das Verzeichnis muss eine SKILL.md mit gültigem Titelbild enthalten.
+ Die Gesamtgröße des Verzeichnisses darf 6 MB und höchstens 100 Dateien nicht überschreiten.
+ `content.sourceUrl`schließt sich mit `content.file` und gegenseitig aus `content.zip` — Sie können sie nicht in derselben Anfrage kombinieren.
+ Bei einem reinen Metadaten-Update (ohne`content`) wird die bestehende Importquelle beibehalten und sie wird nicht erneut aus dem Repository abgerufen.

### Abrufen, Auflisten, Aktualisieren und Löschen
<a name="get-list-update-and-delete"></a>

Wird verwendet`GetAsset`, um ein einzelnes Asset anhand der ID abzurufen:

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

Wird verwendet`ListAssets`, um jedes Asset in einem Agent Space zu durchblättern:

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

Wird verwendet`UpdateAsset`, um ein oder mehrere `metadata` Felder zu ändern, ohne den Inhalt erneut hochzuladen. Schlüssel, die Sie auslassen, behalten ihre vorhandenen Werte bei:

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

Wird verwendet`ListAssetVersions`, um den Versionsverlauf eines Assets zu überprüfen. Bei jedem erfolgreichen `UpdateAsset` `UpdateAssetFile` OD-Aufruf wird die Versionsnummer des Assets weitergeleitet:

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

Verwenden Sie`DeleteAsset`, um das Asset und alle zugehörigen Dateien zu entfernen:

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

### Eine einzelne Datei zu einem vorhandenen Skill hinzufügen
<a name="add-a-single-file-to-an-existing-skill"></a>

Wenn Sie bereits einen Skill aus einem Zip-Paket erstellt haben und eine neue Referenzdatei hinzufügen möchten, müssen Sie nicht das gesamte Paket erneut hochladen. Verwenden Sie`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." }'
```

Um die Datei an Ort und Stelle zu ersetzen, verwenden Sie es `update-asset-file` mit denselben Argumenten. Um sie zu entfernen, verwenden Sie`delete-asset-file`.

### Fähigkeiten aktivieren und deaktivieren
<a name="activating-and-deactivating-skills"></a>

Fähigkeiten haben einen Aktivierungsstatus. `metadata.status` Neue Fähigkeiten sind `ACTIVE` standardmäßig verfügbar und werden vom Agenten während der Ermittlungen und im Chat geladen. Sie können einen Skill deaktivieren, um ihn aus der Rotation zu nehmen, ohne ihn zu löschen, z. B. während Sie untersuchen, warum er zu unerwarteten Ergebnissen führt, und ihn später erneut aktivieren.

**Legen Sie den Anfangsstatus bei der Erstellung fest, indem Sie** Folgendes `metadata.status` in die `CreateAsset` Anfrage aufnehmen:

```
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" }
    }
  }'
```

**Deaktivieren Sie einen vorhandenen Skill** mit`UpdateAsset`. Da `metadata` es sich um ein teilweises Update handelt, bleiben beim `status` Senden nur alle anderen Felder intakt:

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

**Reaktivieren Sie** auf die gleiche Weise mit`"status": "ACTIVE"`:

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

`GetAsset`und `ListAssets` füge immer die aktuellen `status` Skill-Assets hinzu, sodass du den Status der Live-Aktivierung jederzeit ablesen kannst. `metadata`

Das Feld `status` unterscheidet Groß- und Kleinschreibung. Nur `ACTIVE` und `INACTIVE` (Großbuchstaben) werden akzeptiert. Jeder andere Wert schlägt mit einem `ValidationException` fehl. Die Aktivierung gilt nur für Fertigkeiten; die Einstellung `metadata.status` für einen anderen Asset-Typ hat keine Auswirkung und das Feld wird aus der Antwort entfernt.

## Beispiele für die anderen Asset-Typen
<a name="examples-for-the-other-asset-types"></a>

Die obige Anleitung zu den Fähigkeiten gilt für jeden anderen Asset-Typ. Der einzige Unterschied besteht im `metadata` Block und bei Anhängen in der Wahl des binären Inhalts. Die folgenden minimalen `CreateAsset` Aufrufe veranschaulichen die einzelnen Typen.

**Erstellen Sie ein 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." }
    }
  }'
```

**Erstellen Sie einen Anhang** (binärer Inhalt; erstellen Sie die Anfrage aus einer JSON-Datei, wie unter Einen [Skill aus einer Binärdatei erstellen beschrieben](#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
```

**Erstellen Sie einen benutzerdefinierten Agenten:**

```
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." }
    }
  }'
```

**Erstellen Sie ein Testprofil:**

```
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" }
    }
  }'
```

**Erstellen Sie ein Feedback-Asset:**

```
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\"}" }
    }
  }'
```

**Liste der unterstützten Asset-Typen:**

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