View a markdown version of this page

Gestione delle risorse - AWS DevOps Agente

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 delle risorse

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

Per configurare ciò che AWS DevOps Agent conosce e come si comporta, gestisci le risorse nel tuo Agent Space. Questo argomento tratta il modello di asset, le autorizzazioni IAM e i metadati previsti da ciascun tipo di asset. Usa la AWS CLI, l' AWS SDK per Python (Boto3) o per gestire le risorse end-to-end. AWS CloudFormation Per una panoramica concettuale delle competenze stesse, consulta. DevOps Competenze degli agenti Per informazioni generate dagli agenti e che non siete voi stessi a creare, consultate. Competenze apprese

Quando usare l'Asset API

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 la Web App. I motivi più comuni per chiamare direttamente l'API Asset includono:

  • Creazione o aggiornamento di una risorsa da uno script, un terminale o un taccuino 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 è esposta tramite la AWS CLI aws devops-agent <operation> e tramite gli AWS SDK come client. devops-agent

Operazioni Asset API

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 l'azione si applica. Ogni azione risiede nel aidevops: namespace e, ad eccezione diListAssetTypes, si applica a una risorsa Agent Space del modulo. arn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId> Per informazioni più dettagliate sulle aidevops: autorizzazioni, consulta. DevOps Autorizzazioni IAM dell'agente

Operation Description Azione IAM Risorsa
ListAssetTypes Elenca i tipi di asset supportati da AWS DevOps Agent. aidevops:ListAssetTypes *
CreateAsset Crea una nuova risorsa in un Agent Space (abilità AGENTS.md, allegato, agente personalizzato, archivio di memoria, memoria, 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 Elimina 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 Agente 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 relativo percorso. aidevops:GetAssetFile Agente 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 Agente Space

Policy IAM di esempio

La seguente politica garantisce l'accesso gestionale completo alle risorse in un singolo 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 policy 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 asset

Ogni risorsa ha una assetType stringa che identifica il tipo di risorsa. Puoi creare otto tipi di asset tramite l'API Asset:skill,agents_md,attachment,custom_agent,memory_store, memorytest_profile, efeedback. Le sezioni che seguono descrivono ogni tipo. Puoi anche 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 all'interno metadata utilizzano snake_case (ad esempio,). agent_types skill_type Le chiavi esternemetadata, 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 si chiama UpdateAsset orUpdateAssetFile, il servizio applica la semantica PATCH ametadata: le chiavi incluse vengono sostituite e le chiavi omesse mantengono i valori memorizzati. Non è possibile modificare una risorsa assetType dopo che è stata creata.

competenza

Una skill risorsa contiene istruzioni e materiale di riferimento che l'agente carica quando necessario. Un'abilità semplice è un singolo SKILL.md file; un'abilità complessa è un pacchetto zip che contiene un SKILL.md file più le assets/ cartelle references/ o opzionali.

Proprietà richiestemetadata:

  • 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 competenze semplici. Per i caricamenti in formato zip, il servizio legge name dal SKILL.md front-matter e qualsiasi valore fornito qui viene ignorato.

  • description (string) — Una spiegazione di 1—1024 caratteri su quando l'agente deve usare l'abilità. Richiesto solo per competenze semplici. Per i caricamenti in formato zip, il servizio legge description dal SKILL.md front-matter e qualsiasi valore fornito qui viene ignorato.

  • agent_types (array of strings) — Uno o più tipi di agenti a cui si applica questa abilità. Usala ["GENERIC"] per rendere l'abilità disponibile per tutti i tipi di agenti. Gli altri valori includono CHAT INCIDENT_TRIAGEINCIDENT_RCA,INCIDENT_MITIGATION,PREVENTION,RELEASE_READINESS_REVIEW, eRELEASE_TESTING. Il GENERIC valore non può essere combinato con altri valori.

metadataProprietà 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_typeLEARNED, riservate alle competenze generate dall'agente stesso.

  • status (string) — Stato di attivazione dell'abilità. I valori accettati sono ACTIVE e INACTIVE (solo in lettere maiuscole). L’impostazione predefinita è ACTIVE. Le abilità inattive rimangono nell'Agent Space ma non vengono caricate dall'agente durante le indagini o le 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 asset. Vedi Attivazione e disattivazione delle competenze per un esempio funzionante.

  • enable_tools (array of strings): 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

Una agents_md risorsa è un file markdown contenente le istruzioni dell'agente permanente per un tipo di agente specifico. L'agente carica la corrispondenza AGENTS.md all'inizio di ogni operazione. Per ulteriori informazioni sulle istruzioni dell'agente, vedereIstruzioni per l'agente.

metadataProprietà richieste:

  • agent_type (string) — Il tipo di agente a cui si applica il AGENTS.md file. I valori validi sonoGENERIC,CHAT,INCIDENT_TRIAGE,INCIDENT_RCA, INCIDENT_MITIGATIONPREVENTION, RELEASE_READINESS_REVIEW e. RELEASE_TESTING

Esempiometadata:

{ "agent_type": "INCIDENT_TRIAGE" }

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

attachment

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 runbook PDF o un file di registro di esempio.

Proprietà richiestemetadata:

  • 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 esempiopng,pdf,csv).

  • size (numero) — La dimensione del file in byte.

Esempiometadata:

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

Limiti: la dimensione totale di tutti gli allegati in uno spazio agente non può superare i 10 GB.

custom_agent

Un custom_agent asset definisce una configurazione di agente specializzato con un set accurato di strumenti e competenze. Utilizza un agente personalizzato per indirizzare l'agente a un flusso di lavoro o a un set di funzionalità specifico.

metadataProprietà obbligatorie:

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

metadataProprietà opzionali:

  • tools (array di stringhe): gli identificatori dello strumento che l'agente personalizzato può utilizzare. Il valore predefinito è un elenco vuoto se omesso.

  • skills (array di stringhe): gli identificatori di abilità caricati dall'agente personalizzato. Il valore predefinito è un elenco vuoto se omesso.

metadataEsempio:

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

memory_store

Una memory_store risorsa è un contenitore che raggruppa i file di memoria correlati. L'agente legge il nome e la descrizione del negozio per decidere se aprirlo ed elencare le memorie all'interno. Le memorie e gli archivi di memoria supportano la memoria dell'agente. Per ulteriori informazioni sulle memorie, vedereDevOps Agent Memories.

Crea ricordi in due passaggi. Innanzitutto, crea la memory_store. Quindi, creane ognuno al memory suo interno, come descritto in memoria.

metadataProprietà richieste:

  • name (string) — Un identificatore univoco per l'archivio di memoria. Solo lettere minuscole, numeri e trattini, da 1 a 128 caratteri. Non deve iniziare o terminare con un trattino.

  • description (stringa) — Una descrizione di 1—1024 caratteri di ciò che contiene il negozio. L'agente lo utilizza per decidere se aprire il negozio.

metadataProprietà opzionali:

  • agent_types (array of strings) — I tipi di agenti principali che possono vedere il negozio. ["GENERIC"]Da utilizzare per rendere il negozio visibile a tutti i tipi di agenti.

Esempiometadata:

{ "name": "incident-runbooks", "description": "Operational memories about past incidents and their resolutions.", "agent_types": ["GENERIC"] }

memory

Una memory risorsa è un singolo file di memoria che appartiene a un archivio di memoria. L'agente legge il nome e la descrizione della memoria per decidere se leggere il file completo. Crea memory_store prima il file principale, quindi imposta memory_store_id sulla memoria l'ID della risorsa del negozio.

metadataProprietà obbligatorie:

  • name (string) — Un identificatore per la memoria, scritto come un percorso / separato da segmenti di kebab minuscoli, da 1 a 255 caratteri (ad esempio,). databases/rds-failover

  • description (string) — Una descrizione di 1—1024 caratteri del contenuto della memoria.

  • memory_store_id (string) — L'ID della risorsa dell'archivio di memoria a cui appartiene questa memoria.

Proprietà metadata opzionali:

  • expires_at (number) — Una scadenza di conservazione, espressa in secondi epocali. Una volta impostato, il servizio elimina automaticamente la memoria dopo la scadenza (in genere entro 48 ore). Ometti questa proprietà per conservare la memoria finché non la elimini.

Esempiometadata:

{ "name": "databases/rds-failover", "description": "Steps that resolved the RDS failover incident in June.", "memory_store_id": "a1b2c3d4-5678-90ab-cdef-example11111" }

test_profile

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 è indirizzato 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 (stringa) — Una descrizione di 1—1024 caratteri di ciò che copre il profilo di test.

  • test_personas (array di stringhe) — Le persone 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 AWS Secrets Manager che contiene le credenziali segrete per l'esecuzione del test.

metadataEsempio:

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

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 agente che hanno prodotto l'esecuzione. Deve contenere almeno un valore (ad esempio,). INCIDENT_TRIAGE

metadataProprietà opzionali:

  • execution_id (string) — L'esecuzione a cui è associato questo feedback. Impostalo suCreateAsset; non può essere modificato da. UpdateAsset

Esempiometadata:

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

Contenuto della risorsa: file o zip

Ogni CreateAsset richiesta include un content oggetto che contiene i byte memorizzati dall'asset. La forma di content dipende dal fatto che tu 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. Usalo per allegati come immagini o PDF. Poiché il blob è annidato all'interno dell'contentunione, base64 codifica il file in anticipo e invia la richiesta con --cli-input-json (vedi Creare una abilità da un file binario per un esempio funzionante).

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 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, usaCreateAssetFile, UpdateAssetFile e. DeleteAssetFile

Gestire una competenza dall'inizio alla fine

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

Questo è il percorso più semplice: un singolo SKILL.md file caricato in linea. Poiché il caricamento 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

Usa un caricamento binario quando il contenuto della skill non è UTF-8 testo. L'esempio seguente carica un PDF pre-renderizzato come descrizione della competenza. 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 base 64 in anticipo. --cli-input-json

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

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

Usa un caricamento in formato zip quando la skill include più di un file, ad esempio materiale di riferimento e risorse aggiuntive. SKILL.md Per i caricamenti in formato zip il servizio legge name e description da SKILL.md front-matter, quindi non includerli. metadata

Il layout dello zip è simile a:

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

SKILL.mddeve includere frontmatter 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

Puoi creare una skill importandola direttamente da una directory del GitHub repository. AWS DevOps L'agente recupera il contenuto delle abilità, estrae il nome e la descrizione dal SKILL.md front-matter e crea l'abilità nel tuo Agent Space. Ciò consente di gestire le competenze nel controllo delle versioni e di importarle o sincronizzarle a livello di programmazione.

Prerequisiti:

  • Il tuo Agent Space deve avere un GitHub account associato. Per informazioni, consulta Connessione GitHub.

  • 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 il SKILL.md frontespizio relativo a name e e description importa tutti i file. Non includere name o description inseriremetadata: 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 completamente il contenuto delle competenze con lo stato corrente della directory del repository. I campi modificabili (stato, tipi di agente) vengono conservati.

Visualizzazione della fonte di importazione:

GetAssetrestituisce 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 SKILL.md (ad esempio,https://github.com/org/repo/tree/main/skills/my-skill), che importa l'intera directory, inclusi i file di riferimento. Se SKILL.md è alla radice del repository, puoi anche collegarti direttamente al file (ad esempio,https://github.com/org/repo/blob/main/SKILL.md), che importa solo il SKILL.md file.

  • La directory deve contenere un SKILL.md frontespizio valido.

  • La dimensione totale della directory non deve superare i 6 MB e un massimo di 100 file.

  • content.sourceUrlsi esclude a vicenda con content.file econtent.zip: non è possibile combinarli nella stessa richiesta.

  • Un aggiornamento basato solo sui metadati (senzacontent) preserva l'origine di importazione esistente e non viene recuperato nuovamente dal repository.

Recupera, elenca, aggiorna ed elimina

Usa GetAsset per recuperare una singola risorsa per ID:

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

ListAssetsUsalo per sfogliare tutte le risorse 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>

UpdateAssetDa utilizzare per modificare uno o più metadata campi senza caricare nuovamente i contenuti. 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 andata a buon fine UpdateAsset 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>

Utilizzate DeleteAsset 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 una competenza esistente

Se hai già creato una skill da un pacchetto zip e desideri aggiungere un nuovo file di riferimento, non devi 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 sul posto, usalo update-asset-file con gli stessi argomenti. Per rimuoverlo, usadelete-asset-file.

Attivazione e disattivazione delle competenze

Le abilità comportano uno stato di attivazione in. metadata.status Le nuove abilità sono ACTIVE predefinite e vengono caricate dall'agente durante le indagini e la chat. Puoi disattivare un'abilità per disattivarla dalla rotazione senza eliminarla, ad esempio mentre indaghi sul motivo per cui sta producendo risultati imprevisti 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 conUpdateAsset. 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" }'

GetAssete includi ListAssets sempre le informazioni aggiornate sugli asset delle abilità, status in metadata 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 (lettere maiuscole). Qualsiasi altro valore ha esito negativo con a. 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.

Gestione delle risorse con AWS CloudFormation

Utilizza l'API Asset per modifiche interattive o basate su script. Per gestire le risorse in modo dichiarativo, modellale come AWS::DevOpsAgent::Asset risorse in. AWS CloudFormation Con questo approccio, puoi controllare le versioni delle tue risorse insieme alle altre infrastrutture, distribuirle tramite una pipeline e riprodurle su Agent Spaces. CloudFormation crea ogni risorsa come figlio di un Agent Space principale, quindi una risorsa definita in un modello viene mappata esattamente sulla stessa risorsa prodotta da una chiamata. CreateAsset

Gestisci ogni tipo di risorsa tramite la stessa AWS::DevOpsAgent::Asset risorsa. I tipi supportati sonoskill, agents_mdattachment,custom_agent,memory_store,memory,test_profile, efeedback. Solo il contenuto AssetTypeMetadata,, e differisce da un tipo all'altro. Gli esempi seguenti creano un'abilità e un agente personalizzato; gli altri tipi seguono la stessa forma, utilizzando i metadati descritti in Tipi di asset.

Il AWS::DevOpsAgent: :Risorsa di asset

Le proprietà delle risorse si associano direttamente ai campi di CreateAsset richiesta descritti in precedenza in questo argomento:

CloudFormation proprietà Tipo Mappato a Note
AgentSpaceId Stringa agentSpaceId Obbligatorio. Create-only—modificandolo si sostituisce l'asset.
AssetType Stringa assetType Obbligatorio. Create-only. L'identificatore del tipo di risorsa, ad esempio o. skill custom_agent Qualsiasi tipo in Tipi di asset è valido.
Metadata JSON metadata Lo stesso documento di metadati dell'API (per una skill:name, descriptionagent_types, e facoltativamentestatus). Aggiornato sul posto.
Files List content.file File in linea, ciascuno con Path ContentText o oContentBytes, più opzioni per file. Metadata Reciprocamente esclusivo con Zip.
Zip Stringa content.zip.zipFile Base64-encoded pacchetto zip. Reciprocamente esclusivo con Files.
AssetId Stringa asset.assetId Read-only. Recupera conFn::GetAtt.
Arn Stringa asset.arn Read-only. L'ARN della risorsa, annidato nell'Agent Space principale.
Version Numero intero asset.version Read-only. Incidenti su ogni aggiornamento andato a buon fine.
CreatedAt / UpdatedAt Stringa asset.createdAt / updatedAt Read-only timestamp.

Vale la pena sottolineare due comportamenti prima di scrivere un modello:

  • AgentSpaceIde AssetType sono di sola creazione. La modifica di uno dei due sostituisce la risorsa. CloudFormation crea una nuova risorsa con una nuova AssetId e Arn quindi elimina quella vecchia. Le modifiche ai contenuti e ai metadati aggiornano la risorsa esistente.

  • CloudFormation gestisce la risorsa nel suo insieme: i suoi metadati e il suo set completo di file. Per modificare un'abilità, modifica il modello e aggiorna lo stack. Le operazioni che agiscono su parti di una risorsa non fanno parte della risorsa e rimangono API-only. Ciò include le modifiche per file (CreateAssetFile,UpdateAssetFile,DeleteAssetFile) e la cronologia delle versioni (). ListAssetVersions Include anche il download dei contenuti (GetAssetContent) e l'importazione e la sincronizzazione del repository (il sourceUrl tipo di contenuto). Per questi, usa la AWS CLI o un SDK come mostrato in precedenza in questo argomento.

Crea un'abilità

Il modello seguente crea l'rds-performance-investigationabilità a file singolo utilizzata nella procedura dettagliata della AWS CLI. Prende l'Agent Space ID principale come parametro ed esporta l'ID e l'ARN della nuova risorsa.

AWSTemplateFormatVersion: '2010-09-09' Description: A DevOps Agent skill managed as an AWS::DevOpsAgent::Asset resource. Parameters: AgentSpaceId: Type: String Description: The ID of the Agent Space that owns the skill. Resources: RdsPerformanceSkill: Type: AWS::DevOpsAgent::Asset Properties: AgentSpaceId: !Ref AgentSpaceId AssetType: skill Metadata: name: rds-performance-investigation description: Investigation procedures for RDS performance issues. agent_types: - GENERIC Files: - Path: SKILL.md ContentText: | # RDS Performance Investigation Use this skill when customers report database latency, connection errors, query timeouts, or read/write performance degradation. Outputs: SkillAssetId: Value: !GetAtt RdsPerformanceSkill.AssetId SkillArn: Value: !GetAtt RdsPerformanceSkill.Arn

Distribuiscilo con la AWS CLI, passando il tuo ID Agent Space:

aws cloudformation deploy \ --template-file skill.yaml \ --stack-name DevOpsAgentSkillStack \ --parameter-overrides AgentSpaceId=8f6187a7-0388-4926-8217-3a0fe32f757c \ --region <REGION>

Un'abilità che invia più di un file, ad esempio a più un documento di riferimento, SKILL.md aggiunge più voci a: Files

Files: - Path: SKILL.md ContentText: | # RDS Performance Investigation Investigation entry point. - Path: references/rds-metrics-reference.md ContentText: | # RDS metrics reference Key CloudWatch metrics to check.

Per creare l'abilità disattivata o disattivarla in un secondo momento, accedi Metadata (vedi Attivazione e disattivazione delle abilità) e aggiorna lo stack: status

Metadata: name: rds-performance-investigation description: Investigation procedures for RDS performance issues. agent_types: - GENERIC status: INACTIVE

Crea un agente personalizzato

Un agente personalizzato è la stessa risorsa con un contenuto diversoAssetType. Metadata La seguente risorsa crea una custom_agent risorsa che seleziona una serie di strumenti e competenze. L'skillselenco fa riferimento alle competenze tramite i relativi name metadati, quindi puoi fare riferimento alle competenze che hai creato in precedenza.

RdsFirefighter: Type: AWS::DevOpsAgent::Asset Properties: AgentSpaceId: !Ref AgentSpaceId AssetType: custom_agent Metadata: name: rds-firefighter tools: - cloudwatch:GetMetricData - rds:DescribeDBInstances skills: - rds-performance-investigation Files: - Path: AGENT.md ContentText: | # RDS Firefighter Custom agent for RDS incidents.

Gli altri tipi di asset funzionano allo stesso modo: impostano AssetType e forniscono Metadata le chiavi richieste dal tipo (vedi Tipi di asset). Ad esempio, un set di agents_md risorse AssetType: agents_md con un Metadata contenitore agent_type: INCIDENT_TRIAGE e un AGENTS.md file.

Pianifica l'agente personalizzato con un trigger

Per eseguire automaticamente l'agente personalizzato, aggiungi una AWS::DevOpsAgent::Trigger risorsa. Un trigger è un elemento secondario dell'Agent Space. La sua azione fa riferimento all'agente personalizzato da eseguire in base all'ID dell'asset, nel modulocustom:<assetId>. Si usa Fn::GetAtt per passare l'agente personalizzatoAssetId, quindi CloudFormation collega le due risorse e ne ordina la creazione.

Il seguente trigger esegue l'agente rds-firefighter personalizzato una volta al giorno:

DailyRdsCheck: Type: AWS::DevOpsAgent::Trigger Properties: AgentSpaceId: !Ref AgentSpaceId Type: TIME_BASED Condition: Schedule: Expression: rate(1 day) Action: actionType: create:task task: agent: !Sub - custom:${AssetId} - AssetId: !GetAtt RdsFirefighter.AssetId Status: Active

Le Action proprietà AgentSpaceIdType,Condition, e sono di sola creazione. La modifica di una di esse sostituisce il trigger. La Status proprietà accetta Active o Inactive può essere aggiornata sul posto. Impostalo su per Inactive mettere in pausa il trigger senza eliminarlo. Per ulteriori informazioni sulla sintassi delle espressioni di pianificazione, vedere. Esecuzione di agenti personalizzati

AWS::DevOpsAgent::Assete AWS::DevOpsAgent::Trigger sono disponibili nelle AWS regioni in cui viene offerto AWS DevOps Agent. Per ulteriori informazioni sulle AWS regioni supportate, consultaRegioni supportate. Per distribuire l'Agent Space principale, i ruoli IAM e l'app operatore come infrastruttura come codice, consultaNozioni di base su AWS DevOps Agente che utilizza AWS CloudFormation.

Esempi per gli altri tipi di asset

La procedura dettagliata delle competenze sopra riportata 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 ciascun tipo.

Gli archivi di memoria e le memorie utilizzano la stessa CreateAsset operazione. Crea prima il negozio, poi la memoria. Per ulteriori informazioni sui loro metadati, vedi #memory_store memory_store e memory. #memory

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 un'abilità da un file binario):

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 asset supportati:

aws devops-agent list-asset-types