

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Gestione degli asset
<a name="about-aws-devops-agent-managing-assets"></a>

AWS DevOps L'agente archivia la configurazione e il materiale di riferimento per un Agent Space come **risorse**, le risorse gestite dal cliente che determinano ciò che l'agente sa e come si comporta. Le competenze, AGENTS.md i file e gli allegati sono tutte risorse e puoi crearli, leggere, aggiornarli ed eliminarli a livello di codice tramite l'API Asset.

Questo argomento spiega il modello di asset, le autorizzazioni IAM necessarie, i metadati previsti da ogni tipo di asset e come gestire le risorse end-to-end con la AWS CLI e l'SDK for AWS Python (Boto3). Per una panoramica concettuale delle competenze stesse, vedi. [DevOps Competenze degli agenti](about-aws-devops-agent-devops-agent-skills.md) Per la conoscenza generata dagli agenti che non crei tu stesso, vedi. [Competenze apprese](about-aws-devops-agent-learned-skills.md)

## Quando utilizzare l'API Asset
<a name="when-to-use-the-asset-api"></a>

L'Operator Web App è il modo più veloce per creare una singola abilità o caricare un AGENTS.md file in modo interattivo. L'API Asset espone le stesse operazioni a livello di codice in modo che gli script e l'automazione possano gestire le risorse senza passare attraverso l'app Web. I motivi più comuni per chiamare direttamente l'API Asset includono:
+ Creazione o aggiornamento di una risorsa da uno script, un terminale o un notebook anziché dall'app Web.
+ Bulk-loading un set iniziale di competenze o AGENTS.md file in un nuovo Agent Space.
+ Leggere il contenuto di una risorsa per eseguirne il backup o confrontare le versioni.

Ogni operazione nell'API Asset viene esposta tramite la AWS CLI `aws devops-agent <operation>` e tramite gli AWS SDK come client. `devops-agent`

## Operazioni dell'API Asset
<a name="asset-api-operations"></a>

L'API Asset espone le seguenti operazioni. Ogni riga elenca l'azione IAM che devi concedere per chiamare l'operazione e la risorsa a cui si applica l'azione. Ogni azione risiede nel `aidevops:` namespace e, ad eccezione di`ListAssetTypes`, si applica a una risorsa Agent Space del modulo. `arn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId>` Per informazioni più approfondite sulle `aidevops:` autorizzazioni, vedere. [DevOps Autorizzazioni Agent IAM](aws-devops-agent-security-devops-agent-iam-permissions.md)


| Operation | Description | Azione IAM | Risorsa | 
| --- | --- | --- | --- | 
| ListAssetTypes | Elenca i tipi di risorse supportati da AWS DevOps Agent. | aidevops:ListAssetTypes | \* | 
| CreateAsset | Crea una nuova risorsa in un Agent Space (abilità AGENTS.md, allegato, agente personalizzato, profilo di test o feedback). | aidevops:CreateAsset | Agent Space | 
| GetAsset | Recupera i metadati e le informazioni sulla versione di una risorsa. | aidevops:GetAsset | Agent Space | 
| UpdateAsset | Aggiorna i metadati o il contenuto di una risorsa esistente. | aidevops:UpdateAsset | Agent Space | 
| DeleteAsset | Eliminate una risorsa e tutti i relativi file da un Agent Space. | aidevops:DeleteAsset | Agent Space | 
| ListAssets | Elenca le risorse in un Agent Space, con filtro opzionale per tipo di risorsa. | aidevops:ListAssets | Agent Space | 
| ListAssetVersions | Elenca le versioni storiche di una risorsa. | aidevops:ListAssetVersions | Agente Space | 
| GetAssetContent | Scarica il contenuto completo di una risorsa come pacchetto zip. | aidevops:GetAssetContent | Agent Space | 
| CreateAssetFile | Aggiungi un nuovo file a una risorsa esistente. | aidevops:CreateAssetFile | Agent Space | 
| GetAssetFile | Recupera un singolo file da una risorsa in base al suo percorso. | aidevops:GetAssetFile | Agent Space | 
| UpdateAssetFile | Sostituisci il contenuto o i metadati di un file esistente in una risorsa. | aidevops:UpdateAssetFile | Agent Space | 
| DeleteAssetFile | Rimuovi un singolo file da una risorsa. | aidevops:DeleteAssetFile | Agent Space | 
| ListAssetFiles | Elenca i file all'interno di una risorsa. | aidevops:ListAssetFiles | Agent Space | 

### Policy IAM di esempio
<a name="example-iam-policies"></a>

La seguente politica garantisce l'accesso completo alla gestione delle risorse in un unico Agent Space:

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

La seguente politica garantisce l'accesso in sola lettura alle risorse in un singolo Agent Space:

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

## Tipi di risorse
<a name="asset-types"></a>

Ogni risorsa ha una `assetType` stringa che identifica il tipo di risorsa. Tramite l'API Asset è possibile creare sei tipi di risorse: `skill``agents_md`,`attachment`,`custom_agent`,`test_profile`, e`feedback`. Le sezioni che seguono descrivono ogni tipo. È inoltre possibile chiamare `ListAssetTypes` per recuperare gli identificatori di tipo in fase di esecuzione.

Ogni risorsa contiene un oggetto `metadata` JSON in formato libero che descrive la risorsa. Le chiavi interne `metadata` utilizzano snake\_case (ad esempio,). `agent_types` `skill_type` Le chiavi esterne`metadata`, al livello superiore del corpo della richiesta, utilizzano CamelCase (ad esempio`agentSpaceId`,,`assetType`). `clientToken` Le `metadata` chiavi obbligatorie e opzionali dipendono dal tipo di risorsa, come descritto nelle sezioni seguenti.

Quando chiami `UpdateAsset` or`UpdateAssetFile`, il servizio applica la semantica PATCH a`metadata`: le chiavi che includi vengono sostituite e le chiavi omesse mantengono i valori memorizzati. Non è possibile modificare una risorsa `assetType` dopo che è stata creata.

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

Una `skill` risorsa contiene istruzioni e materiale di riferimento che l'agente carica quando necessario. Una skill semplice è un singolo `SKILL.md` file; una skill complessa è un pacchetto zip che contiene un `SKILL.md` file più alcune `assets/` directory `references/` opzionali.

**Proprietà richieste`metadata`:**
+ **name** (string) — Un identificatore univoco per l'abilità. Solo lettere minuscole, numeri e trattini, da 1 a 64 caratteri. Non deve iniziare o terminare con un trattino. Richiesto solo per abilità semplici. Per i caricamenti in formato zip, il servizio legge `name` dal `SKILL.md` frontespizio e qualsiasi valore fornito qui viene ignorato.
+ **descrizione** (stringa) — Una spiegazione di 1—1024 caratteri su quando l'agente deve usare l'abilità. Richiesto solo per abilità semplici. Per i caricamenti in formato zip, il servizio legge `description` dal `SKILL.md` frontespizio e qualsiasi valore fornito qui viene ignorato.
+ **agent\_types** (array di stringhe) — Uno o più tipi di agenti a cui si applica questa abilità. Usa `["GENERIC"]` per rendere l'abilità disponibile a tutti i tipi di agenti. Altri valori includono `CHAT``INCIDENT_TRIAGE`,`INCIDENT_RCA`,`INCIDENT_MITIGATION`,`PREVENTION`,`CHANGE_REVIEW`,`CHANGE_RELEASE`, `QUALITY_ASSURANCE_TESTING``RELEASE_SHEPHERD`,`RELEASE_READINESS_REVIEW`, e`RELEASE_TESTING`. Il `GENERIC` valore non può essere combinato con altri valori.

**`metadata`Proprietà opzionali:**
+ **skill\_type** (string) — Il valore predefinito è. `USER` L'API Asset consente solo competenze create dal cliente, quindi l'unico valore accettato è. `USER` Il servizio rifiuta le richieste impostate su `skill_type``LEARNED`, che sono riservate alle competenze generate dall'agente stesso.
+ **status** (stringa) — Stato di attivazione dell'abilità. I valori accettati sono `ACTIVE` e `INACTIVE` (solo in maiuscolo). L’impostazione predefinita è `ACTIVE`. Le abilità inattive rimangono nell'Agent Space ma non vengono caricate dall'agente durante le indagini o la chat. Usa `UpdateAsset` with `metadata.status` per disattivare o riattivare un'abilità senza eliminarla. Le abilità sono l'unico tipo di risorsa che supporta l'attivazione; il `status` campo viene ignorato su tutti gli altri tipi di risorsa. Vedi [Attivazione e disattivazione delle abilità](#activating-and-deactivating-skills) per un esempio pratico.
+ **enable\_tools** (array di stringhe) — Un elenco di identificatori di strumenti che l'agente può chiamare quando carica questa abilità.

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

**Limiti: i** caricamenti in formato zip non devono superare i 6 MB. Un Agent Space può contenere fino a 200 competenze create dall'utente.

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

Una `agents_md` risorsa è un file di markdown contenente le istruzioni dell'agente permanente per un tipo di agente specifico. L'agente carica la corrispondenza AGENTS.md all'inizio di ogni attività. Per ulteriori informazioni sulle istruzioni dell'agente, vedere[Istruzioni per l'agente](about-aws-devops-agent-agent-instructions.md).

**`metadata`Proprietà richieste:**
+ **agent\_type** (string) — Il tipo di agente a cui si riferisce il AGENTS.md file. I valori validi sono `GENERIC`, `CHAT`, `INCIDENT_TRIAGE`, `INCIDENT_RCA`, `INCIDENT_MITIGATION`, `PREVENTION`, `CHANGE_REVIEW`, `CHANGE_RELEASE`, `QUALITY_ASSURANCE_TESTING`, `RELEASE_SHEPHERD`, `RELEASE_READINESS_REVIEW` e `RELEASE_TESTING`.

**`metadata`Esempio:**

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

**Limiti:** ogni Agent Space può contenerne al massimo uno AGENTS.md per`agent_type`. Il contenuto del file deve essere markdown (`text/markdown`) e non deve superare i 25 KB.

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

Una `attachment` risorsa memorizza un file binario o di testo a cui l'agente può fare riferimento durante le indagini, ad esempio un diagramma di architettura, un PDF di runbook o un file di registro di esempio.

**Proprietà richieste: `metadata`**
+ **filename** (string) — Il nome del file originale, incluso il nome di base e qualsiasi estensione (ad esempio,`topology.png`).
+ **extension** (string) — L'estensione del file senza il punto iniziale (ad esempio, `png``pdf`,`csv`).
+ **size** (number) — La dimensione del file in byte.

**Esempio`metadata`:**

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

**Limiti:** la dimensione totale di tutti gli allegati in un Agent Space non può superare i 10 GB.

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

Una `custom_agent` risorsa definisce una configurazione di agente specializzata con un set curato di strumenti e competenze. Utilizzate un agente personalizzato per adattare l'agente a uno specifico flusso di lavoro o a un set di funzionalità.

**`metadata`Proprietà richieste:**
+ **name** (string) — Un identificatore univoco per l'agente personalizzato. Solo lettere minuscole, numeri e trattini, da 1 a 64 caratteri. Non deve iniziare o terminare con un trattino.

**`metadata`Proprietà opzionali:**
+ **strumenti** (matrice di stringhe) — Gli identificatori dello strumento che l'agente personalizzato può utilizzare. Il valore predefinito è un elenco vuoto quando viene omesso.
+ **skills** (array di stringhe) — Gli identificatori di abilità caricati dall'agente personalizzato. Il valore predefinito è un elenco vuoto quando viene omesso.

**`metadata`Esempio:**

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

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

Una `test_profile` risorsa memorizza una configurazione riutilizzabile per un'esecuzione di test di rilascio, incluso il tipo di test da eseguire e l'endpoint di destinazione.

**Proprietà richieste: `metadata`**
+ **test\_agent\_type** (string) — Il tipo di test eseguito da questo profilo. I valori validi sono `releaseUiTesting` e `releaseApiTesting`.
+ **target\_url (string) — L'URL** a cui si rivolge l'esecuzione del test.

**Proprietà opzionali: `metadata`**
+ **name** (string) — Un identificatore leggibile dall'uomo per il profilo di test. Solo lettere minuscole, numeri e trattini, da 1 a 128 caratteri. Non deve iniziare o terminare con un trattino.
+ **description** (string) — Una descrizione di 1—1024 caratteri di ciò che copre il profilo di test.
+ **test\_personas** (array di stringhe) — I personaggi da allenare durante l'esecuzione del test. I valori validi sono `guest` e `authenticated`.
+ **api\_spec** (string) — Una specifica API per l'esecuzione del test. Rilevante per. `releaseApiTesting`
+ **credentials\_secret\_arn (string) — L'ARN** di un segreto di Secrets AWS Manager che contiene le credenziali per l'esecuzione del test.

**`metadata`Esempio:**

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

Una `feedback` risorsa registra il feedback fornito dal cliente sull'esecuzione di un singolo agente. Utilizza le risorse di feedback per acquisire verdetti e note che le pipeline di valutazione a valle possono aggregare.

**Proprietà richieste: `metadata`**
+ **agent\_types** (array di stringhe) — I tipi di agenti che hanno prodotto l'esecuzione. Deve contenere almeno un valore (ad esempio,). `INCIDENT_TRIAGE`

**`metadata`Proprietà opzionali:**
+ **execution\_id** (string) — L'esecuzione a cui è associato questo feedback. Attivalo`CreateAsset`; non può essere modificato da. `UpdateAsset`

**Esempio`metadata`:**

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

## Contenuto della risorsa: file o zip
<a name="asset-content-file-or-zip"></a>

Ogni `CreateAsset` richiesta include un `content` oggetto che contiene i byte archiviati dalla risorsa. La forma di `content` dipende dal fatto che si stia caricando un singolo file o un pacchetto zip:
+ **File di testo singolo**: `content.file.body.text` contiene fino a 1,5 MB di UTF-8 testo. Usalo per competenze e AGENTS.md file semplici.

```json { "content": { "file": { "path": "SKILL.md", "body": { "text": "# Skill\n\nInstructions go here." } } } } ```
+ **File binario singolo**: `content.file.body.bytes` contiene fino a 6 MB di contenuto binario con codifica Base64. Utilizzalo per allegati come immagini o PDF. Poiché il blob è annidato all'interno dell'`content`unione, base64 codifica il file in anticipo e invia la richiesta con `--cli-input-json` (vedi [Create a skill from a binary file per un esempio funzionante](#create-a-skill-from-a-binary-file)).

```json { "content": { "file": { "path": "topology.png", "body": { "bytes": "<base64-encoded bytes>" } } } } ```
+ **Pacchetto zip: `content.zip.zipFile` contiene un archivio** zip con codifica base64 fino a 6 MB. Usalo per le competenze che includono `SKILL.md` più file aggiuntivi in una directory or. `references/` `assets/`

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

Per aggiungere, sostituire o eliminare singoli file all'interno di una risorsa esistente senza caricare nuovamente l'intero pacchetto`CreateAssetFile`, `UpdateAssetFile` usa e. `DeleteAssetFile`

## Gestire un'abilità dall'inizio alla fine
<a name="managing-a-skill-end-to-end"></a>

La procedura dettagliata che segue crea un'abilità in tre modi diversi (da un singolo file di testo, da un file binario e da un pacchetto zip), quindi esercita le operazioni di lettura, aggiornamento ed eliminazione. Sostituiscilo `8f6187a7-0388-4926-8217-3a0fe32f757c` con il tuo Agent Space ID.

### Crea un'abilità da un singolo file di testo
<a name="create-a-skill-from-a-single-text-file"></a>

Questo è il percorso più semplice: un singolo `SKILL.md` file caricato in linea. Poiché il file caricato contiene esattamente un file di testo, è necessario fornire `name` e `description` inserire. `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"]
```

### Crea un'abilità da un file binario
<a name="create-a-skill-from-a-binary-file"></a>

Usa un caricamento binario quando il contenuto dell'abilità non è UTF-8 testo. L'esempio seguente carica un PDF pre-renderizzato come corpo dell'abilità. Poiché il corpo della richiesta contiene un blob con codifica base64 annidato all'interno `content` dell'unione, fornisci la richiesta da un file JSON e codifica il blob in base64 in anticipo. `--cli-input-json`

Il `-w 0` flag seguente dice `base64` a GNU di emettere il blob codificato su una singola riga; senza di esso il line wrap predefinito di 76 caratteri inserisce nuove righe che producono JSON non valido quando il blob viene interpolato nell'heredoc. Su macOS, usa `base64 -i ops-runbook.pdf` (il BSD `base64` non esegue il wapping per impostazione predefinita).

**Crea il corpo della richiesta:**

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

### Crea un'abilità da un pacchetto zip
<a name="create-a-skill-from-a-zip-bundle"></a>

Utilizza un caricamento in formato zip quando l'abilità include più di un file, ad esempio `SKILL.md` più materiale e risorse di riferimento. Per i caricamenti in formato zip, il servizio legge `name` e legge `description` dal `SKILL.md` frontespizio, quindi non includerli. `metadata`

Il layout zip ha il seguente aspetto:

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

`SKILL.md`deve includere il frontespizio in modo che il servizio possa estrarre il nome e la descrizione:

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

**Crea il corpo della richiesta:**

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

### Importa un'abilità da un repository
<a name="import-a-skill-from-a-repository"></a>

Puoi creare un'abilità importandola direttamente da una directory del GitHub repository. AWS DevOps L'agente recupera il contenuto dell'abilità, estrae il nome e la descrizione dalla pagina principale e crea SKILL.md l'abilità nel tuo Agent Space. Ciò consente di gestire le competenze relative al controllo delle versioni e di importarle o sincronizzarle a livello di codice.

**Prerequisiti:**
+ Il tuo Agent Space deve avere un GitHub account associato. Per informazioni, consulta [Connessione GitHub](connecting-to-cicd-pipelines-connecting-github.md).
+ La directory del repository deve contenere un SKILL.md file valido con 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"]
```

Il servizio recupera il contenuto della directory, legge la SKILL.md parte introduttiva di e e importa tutti i file. `name` `description` Non includerli `name` o `description` `metadata` inserirli: vengono estratti automaticamente dal frontespizio.

**Sincronizzazione di un'abilità importata:**

Per recuperare le ultime modifiche dal repository, chiama `UpdateAsset` con: `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"
        }
    },
)
```

La sincronizzazione sostituisce interamente il contenuto delle abilità con lo stato corrente della directory del repository. I campi modificabili (stato, tipi di agente) vengono mantenuti.

**Visualizzazione della fonte di importazione:**

`GetAsset`restituisce le informazioni di origine `metadata.source` per le competenze importate dal repository:

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

**Vincoli**:
+ Sono accettati solo gli GitHub URL. È possibile puntare a una directory contenente un SKILL.md (ad esempio,`https://github.com/org/repo/tree/main/skills/my-skill`), che importa l'intera directory, compresi i file di riferimento. Se SKILL.md si trova alla radice del repository, è anche possibile collegarsi direttamente al file (ad esempio,`https://github.com/org/repo/blob/main/SKILL.md`), che importa solo il SKILL.md.
+ La directory deve contenere un SKILL.md frontmatter valido.
+ La dimensione totale della directory non deve superare i 6 MB e contenere al massimo 100 file.
+ `content.sourceUrl`si esclude a vicenda con `content.file` e`content.zip`: non è possibile combinarli nella stessa richiesta.
+ Un aggiornamento dei soli metadati (senza`content`) preserva la fonte di importazione esistente e non viene recuperata nuovamente dal repository.

### Ottieni, elenca, aggiorna ed elimina
<a name="get-list-update-and-delete"></a>

`GetAsset`Utilizzatelo per recuperare una singola risorsa per ID:

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

Utilizzalo `ListAssets` per sfogliare ogni risorsa in un Agent Space:

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

`UpdateAsset`Utilizzalo per modificare uno o più `metadata` campi senza caricare nuovamente il contenuto. Le chiavi omesse mantengono i valori esistenti:

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

Utilizzate `ListAssetVersions` per controllare la cronologia delle versioni di una risorsa. Ogni `UpdateAssetFile` chiamata `UpdateAsset` o chiamata riuscita fa avanzare il numero di versione della risorsa:

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

`DeleteAsset`Utilizzatelo per rimuovere la risorsa e tutti i relativi file:

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

### Aggiungi un singolo file a un'abilità esistente
<a name="add-a-single-file-to-an-existing-skill"></a>

Se hai già creato un'abilità da un pacchetto zip e desideri aggiungere un nuovo file di riferimento, non è necessario caricare nuovamente l'intero pacchetto. Usa: `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." }'
```

Per sostituire il file esistente, utilizzare `update-asset-file` con gli stessi argomenti. Per rimuoverlo, usa`delete-asset-file`.

### Attivazione e disattivazione delle abilità
<a name="activating-and-deactivating-skills"></a>

Le abilità comportano uno stato di attivazione. `metadata.status` Le nuove abilità sono `ACTIVE` di default e vengono caricate dall'agente durante le indagini e la chat. Puoi disattivare un'abilità per interromperla dalla rotazione senza eliminarla, ad esempio mentre indaghi sul motivo per cui sta producendo risultati inaspettati, e riattivarla in un secondo momento.

**Imposta lo stato iniziale di creazione** includendo `metadata.status` nella richiesta: `CreateAsset`

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

**Disattiva un'abilità esistente** con`UpdateAsset`. Poiché `metadata` viene applicato come aggiornamento parziale, l'invio `status` lascia intatti solo tutti gli altri campi:

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

**Riattiva** allo stesso modo, con: `"status": "ACTIVE"`

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

`GetAsset`e includi `ListAssets` sempre le risorse correnti `status` nelle risorse `metadata` relative alle abilità, in modo da poter leggere lo stato di attivazione in tempo reale in qualsiasi momento.

Il `status` campo fa distinzione tra maiuscole e minuscole. Sono `ACTIVE` accettate solo le `INACTIVE` lettere e (maiuscole). Qualsiasi altro valore fallisce con un. `ValidationException` L'attivazione si applica solo alle abilità; l'impostazione `metadata.status` su qualsiasi altro tipo di risorsa non ha effetto e il campo viene eliminato dalla risposta.

## Esempi per gli altri tipi di risorse
<a name="examples-for-the-other-asset-types"></a>

La procedura dettagliata di competenza riportata sopra si applica a tutti gli altri tipi di asset. L'unica differenza è il `metadata` blocco e, per gli allegati, la scelta del contenuto binario. Le `CreateAsset` chiamate minime riportate di seguito illustrano ogni tipo.

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

**Crea un allegato** (contenuto binario; crea la richiesta da un file JSON come mostrato in [Creare una competenza da un file binario](#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
```

**Crea un agente personalizzato:**

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

**Crea un profilo di test:**

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

**Crea una risorsa di feedback:**

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

**Elenca i tipi di risorse supportati:**

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