Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Gestion des ressources
AWS DevOps L'agent stocke la configuration et le matériel de référence d'un espace d'agent sous forme d'actifs, les ressources gérées par le client qui façonnent les connaissances de l'agent et son comportement. Les compétences, AGENTS.md les fichiers et les pièces jointes sont tous des actifs, et vous pouvez les créer, les lire, les mettre à jour et les supprimer par programmation via l'API Asset.
Pour configurer les connaissances de AWS DevOps l'agent et son comportement, gérez les actifs dans votre espace d'agent. Cette rubrique couvre le modèle d'actif, les autorisations IAM et les métadonnées attendues par chaque type de ressource. Utilisez l' AWS interface de ligne de commande, le AWS SDK pour Python (Boto3) ou pour gérer les actifs de bout AWS CloudFormation en bout. Pour un aperçu conceptuel des compétences elles-mêmes, voirDevOps Compétences des agents. Pour les connaissances générées par des agents que vous ne créez pas vous-même, voir. Compétences apprises
Quand utiliser l'API Asset
L'application Web Operator est le moyen le plus rapide de créer une compétence unique ou de télécharger un AGENTS.md fichier de manière interactive. L'API Asset expose les mêmes opérations par programmation afin que les scripts et l'automatisation puissent gérer les actifs sans passer par l'application Web. Les raisons les plus courantes d'appeler directement l'API Asset sont les suivantes :
Création ou mise à jour d'un actif à partir d'un script, d'un terminal ou d'un bloc-notes au lieu de la Web App.
Bulk-loading un ensemble de compétences de départ ou AGENTS.md des fichiers dans un nouvel espace d'agent.
Lire le contenu d'une ressource pour la sauvegarder ou comparer les versions.
Chaque opération de l'API Asset est exposée via la AWS CLI en tant que client aws devops-agent <operation> et via les AWS SDK en tant que devops-agent client.
Opérations de l'API Asset
L'API Asset expose les opérations suivantes. Chaque ligne répertorie l'action IAM que vous devez autoriser pour appeler l'opération et la ressource à laquelle l'action s'applique. Chaque action se trouve dans l'aidevops:espace de noms et, à l'exception de ListAssetTypes celle-ci, s'applique à une ressource de l'espace agent du formulairearn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId>. Pour plus d'informations sur aidevops: les autorisations, consultezDevOps Autorisations IAM des agents.
| Opération | Description | Action IAM | Ressource |
|---|---|---|---|
ListAssetTypes |
Répertoriez les types d'actifs pris en charge par AWS DevOps l'agent. | aidevops:ListAssetTypes |
* |
CreateAsset |
Créez une nouvelle ressource dans un espace d'agent (compétence AGENTS.md, pièce jointe, agent personnalisé, mémoire, profil de test ou feedback). | aidevops:CreateAsset |
Espace pour les agents |
GetAsset |
Récupérez les métadonnées et les informations de version d'un actif. | aidevops:GetAsset |
Espace pour les agents |
UpdateAsset |
Mettez à jour les métadonnées ou le contenu d'un actif existant. | aidevops:UpdateAsset |
Espace pour les agents |
DeleteAsset |
Supprimez un actif et tous ses fichiers d'un espace d'agent. | aidevops:DeleteAsset |
Espace pour les agents |
ListAssets |
Répertoriez les actifs dans un espace d'agent, avec un filtrage facultatif par type d'actif. | aidevops:ListAssets |
Espace pour les agents |
ListAssetVersions |
Répertoriez les versions historiques d'un actif. | aidevops:ListAssetVersions |
Espace pour les agents |
GetAssetContent |
Téléchargez le contenu complet d'une ressource sous forme de fichier zip. | aidevops:GetAssetContent |
Espace pour les agents |
CreateAssetFile |
Ajoutez un nouveau fichier à un actif existant. | aidevops:CreateAssetFile |
Espace pour les agents |
GetAssetFile |
Récupérez un seul fichier d'une ressource par son chemin. | aidevops:GetAssetFile |
Espace pour les agents |
UpdateAssetFile |
Remplacez le contenu ou les métadonnées d'un fichier existant dans une ressource. | aidevops:UpdateAssetFile |
Espace pour les agents |
DeleteAssetFile |
Supprimez un seul fichier d'un actif. | aidevops:DeleteAssetFile |
Espace pour les agents |
ListAssetFiles |
Répertoriez les fichiers d'un actif. | aidevops:ListAssetFiles |
Espace pour les agents |
Exemple de politiques IAM
La politique suivante accorde un accès de gestion complet aux actifs dans un espace d'agent unique :
{ "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 politique suivante accorde un accès en lecture seule aux actifs d'un espace d'agent unique :
{ "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": "*" } ] }
Types d'actifs
Chaque ressource possède une assetType chaîne qui identifie de quel type de ressource il s'agit. Vous pouvez créer huit types de ressources via l'API Asset : skill agents_md attachmentcustom_agent,memory_store,memory,test_profile, etfeedback. Les sections qui suivent décrivent chaque type. Vous pouvez également appeler ListAssetTypes pour récupérer les identificateurs de type lors de l'exécution.
Chaque ressource contient un objet metadata JSON de forme libre qui décrit la ressource. Les clés à l'intérieur metadata utilisent snake_case (par exemple,,agent_types). skill_type Les touches extérieuresmetadata, au niveau supérieur du corps de la requête, utilisent CamelCase (par exemple,, agentSpaceIdassetType,clientToken). Les metadata clés obligatoires et facultatives dépendent du type de ressource, comme décrit dans les sections qui suivent.
Lorsque vous appelez UpdateAsset ouUpdateAssetFile, le service applique la sémantique PATCH à metadata : les clés que vous incluez sont remplacées, et les clés que vous omettez conservent leurs valeurs stockées. Vous ne pouvez pas modifier un actif une assetType fois qu'il a été créé.
skill
Un skill actif regroupe des instructions et des documents de référence que l'agent charge le cas échéant. Une compétence simple est un SKILL.md fichier unique ; une compétence complexe est un ensemble zip contenant un SKILL.md fichier et des assets/ répertoires references/ facultatifs.
metadataPropriétés requises :
name (string) — Identifiant unique de la compétence. Lettres minuscules, chiffres et tirets uniquement, de 1 à 64 caractères. Ne doit pas commencer ni se terminer par un tiret. Requis pour les compétences simples uniquement. Pour les téléchargements au format zip, le service lit
nameà partir de laSKILL.mdpage d'accueil et toute valeur fournie ici est ignorée.description (chaîne) — Une explication de 1 à 1024 caractères indiquant à quel moment l'agent doit utiliser la compétence. Requis pour les compétences simples uniquement. Pour les téléchargements au format zip, le service lit
descriptionà partir de laSKILL.mdpage d'accueil et toute valeur fournie ici est ignorée.agent_types (tableau de chaînes) — Un ou plusieurs types d'agents auxquels cette compétence s'applique. Utilisez-la
["GENERIC"]pour mettre la compétence à la disposition de tous les types d'agents. Les autres valeurs incluentCHATINCIDENT_TRIAGEINCIDENT_RCA,INCIDENT_MITIGATION,PREVENTIONRELEASE_READINESS_REVIEW, etRELEASE_TESTING. LaGENERICvaleur ne peut pas être combinée avec d'autres valeurs.
metadataPropriétés facultatives :
skill_type (string) — La valeur par défaut est.
USERL'API Asset n'autorise que les compétences créées par les clients. La seule valeur acceptée est donc.USERLe service rejette les demandes définies surskill_typeLEARNED, ce qui est réservé aux compétences générées par l'agent lui-même.status (string) — État d'activation de la compétence. Les valeurs acceptées sont
ACTIVEetINACTIVE(majuscules uniquement). La valeur par défaut estACTIVE. Les compétences inactives restent dans l'espace agent mais ne sont pas chargées par l'agent pendant les enquêtes ou le chat. UtilisezUpdateAssetwithmetadata.statuspour désactiver ou réactiver une compétence sans la supprimer. Les compétences sont le seul type d'actif qui prend en charge l'activation ; lestatuschamp est ignoré pour tous les autres types d'actifs. Consultez la section Activation et désactivation des compétences pour un exemple concret.enable_tools (tableau de chaînes) — Liste d'identifiants d'outils que l'agent peut appeler lorsqu'il charge cette compétence.
Exemple 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"] }
Limites : les téléchargements au format zip ne doivent pas dépasser 6 Mo. Un espace d'agent peut contenir jusqu'à 200 compétences créées par les utilisateurs.
agents_md
Un agents_md actif est un fichier de démarquage contenant des instructions permanentes pour un type d'agent spécifique. L'agent charge la correspondance AGENTS.md au début de chaque tâche. Pour plus d'informations sur les instructions destinées aux agents, consultezInstructions pour les agents.
metadataPropriétés requises :
agent_type (string) — Type d'agent auquel le AGENTS.md fichier s'applique. Les valeurs valides sont
GENERICCHATINCIDENT_TRIAGE,INCIDENT_RCA,INCIDENT_MITIGATIONPREVENTION,RELEASE_READINESS_REVIEW, etRELEASE_TESTING.
Exemple metadata :
{ "agent_type": "INCIDENT_TRIAGE" }
Limites : Chaque espace d'agent peut contenir au plus un AGENTS.md paragent_type. Le contenu du fichier doit être markdown (text/markdown) et ne doit pas dépasser 25 Ko.
attachment
Un attachment actif stocke un fichier binaire ou texte auquel l'agent peut faire référence lors des investigations, par exemple un schéma d'architecture, un runbook PDF ou un exemple de fichier journal.
metadataPropriétés requises :
nom de fichier (chaîne) — Le nom du fichier d'origine, y compris le nom de base et toute extension (par exemple,
topology.png).extension (chaîne) — L'extension du fichier sans le premier point (par exemple
png,pdf,csv).size (number) — Taille du fichier en octets.
Exemple metadata :
{ "filename": "topology.png", "extension": "png", "size": 184320 }
Limites : La taille totale de toutes les pièces jointes d'un espace agent ne peut pas dépasser 10 Go.
agent_personnalisé
Un custom_agent actif définit une configuration d'agent spécialisée dotée d'un ensemble d'outils et de compétences sélectionnés. Utilisez un agent personnalisé pour limiter l'agent à un flux de travail ou à un ensemble de fonctionnalités spécifique.
metadataPropriétés requises :
name (string) — Identifiant unique pour l'agent personnalisé. Lettres minuscules, chiffres et tirets uniquement, de 1 à 64 caractères. Ne doit pas commencer ni se terminer par un tiret.
metadataPropriétés facultatives :
outils (tableau de chaînes) : identificateurs d'outils que l'agent personnalisé est autorisé à utiliser. La valeur par défaut est une liste vide en cas d'omission.
compétences (tableau de chaînes) : identificateurs de compétence chargés par l'agent personnalisé. La valeur par défaut est une liste vide en cas d'omission.
Exemple metadata :
{ "name": "rds-firefighter", "tools": ["cloudwatch:GetMetricData", "rds:DescribeDBInstances"], "skills": ["rds-performance-investigation"] }
magasin_mémoire
Un memory_store actif est un conteneur qui regroupe les fichiers mémoire associés. L'agent lit le nom et la description du magasin pour décider s'il convient de l'ouvrir et dresse la liste des souvenirs qu'il contient. Les mémoires et les mémoires prennent en charge la mémoire des agents. Pour plus d'informations sur les souvenirs, voirDevOps Souvenirs d'agents.
Créez des souvenirs en deux étapes. Commencez par créer la memory_store. Ensuite, créez chacun memory à l'intérieur, comme décrit dans la mémoire.
metadataPropriétés requises :
name (string) — Identifiant unique pour le magasin de mémoire. Lettres minuscules, chiffres et tirets uniquement, de 1 à 128 caractères. Ne doit pas commencer ni se terminer par un tiret.
description (chaîne) — Description de 1 à 1024 caractères de ce que contient la boutique. L'agent l'utilise pour décider d'ouvrir ou non le magasin.
metadataPropriétés facultatives :
agent_types (tableau de chaînes) — Les types d'agents principaux qui peuvent voir le magasin. Permet
["GENERIC"]de rendre la boutique visible pour tous les types d'agents.
Exemple metadata :
{ "name": "incident-runbooks", "description": "Operational memories about past incidents and their resolutions.", "agent_types": ["GENERIC"] }
memory
Un memory actif est un fichier mémoire individuel qui appartient à une banque de mémoire. L'agent lit le nom et la description de la mémoire pour décider de lire ou non le fichier complet. Créez d'memory_storeabord le parent, puis définissez dans memory_store_id la mémoire l'ID de ressource du magasin.
metadataPropriétés requises :
name (string) — Identifiant de la mémoire, écrit sous la forme d'un chemin
/séparé par des segments de kebab minuscules, de 1 à 255 caractères (par exemple,).databases/rds-failoverdescription (chaîne) — Description de 1 à 1024 caractères du contenu de la mémoire.
memory_store_id (string) — L'ID d'actif du magasin de mémoire auquel appartient cette mémoire.
metadataPropriétés facultatives :
expires_at (number) — Date limite de conservation, en secondes d'époque. Lorsqu'il est défini, le service supprime automatiquement la mémoire une fois la date limite passée (généralement dans les 48 heures). Omettez cette propriété pour conserver la mémoire jusqu'à ce que vous la supprimiez.
Exemple metadata :
{ "name": "databases/rds-failover", "description": "Steps that resolved the RDS failover incident in June.", "memory_store_id": "a1b2c3d4-5678-90ab-cdef-example11111" }
profil_test
Un test_profile actif stocke une configuration réutilisable pour une exécution de tests de version, y compris le type de test à effectuer et le point de terminaison cible.
metadataPropriétés requises :
test_agent_type (string) — Type de test effectué par ce profil. Les valeurs valides sont
releaseUiTestingetreleaseApiTesting.target_url (string) — URL cible par le test.
metadataPropriétés facultatives :
name (string) — Identifiant lisible par l'homme pour le profil de test. Lettres minuscules, chiffres et tirets uniquement, de 1 à 128 caractères. Ne doit pas commencer ni se terminer par un tiret.
description (chaîne) — Description de 1 à 1024 caractères de ce que couvre le profil de test.
test_personas (tableau de chaînes) — Les personnages à exercer pendant le test. Les valeurs valides sont
guestetauthenticated.api_spec (string) — Spécification d'API pour l'exécution du test. Pertinent pour
releaseApiTesting.credentials_secret_arn (string) — L'ARN d'un secret AWS Secrets Manager contenant les informations d'identification pour le test.
Exemple 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" }
commentaire
Un feedback actif enregistre les commentaires fournis par le client sur l'exécution d'un seul agent. Utilisez les ressources de feedback pour saisir les verdicts et les notes que les pipelines d'évaluation en aval peuvent agréger.
metadataPropriétés requises :
agent_types (tableau de chaînes) — Les types d'agents qui ont produit l'exécution. Doit contenir au moins une valeur (par exemple,
INCIDENT_TRIAGE).
metadataPropriétés facultatives :
execution_id (string) — Exécution à laquelle ce feedback est associé. Activez cette option
CreateAsset; elle ne peut pas être modifiée parUpdateAsset.
Exemple metadata :
{ "execution_id": "b2c3d4e5-6789-01ab-cdef-example22222", "agent_types": ["INCIDENT_TRIAGE"] }
Contenu de la ressource : fichier ou zip
Chaque CreateAsset demande inclut un content objet contenant les octets stockés par l'actif. La forme de content varie selon que vous chargez un seul fichier ou un ensemble de fichiers compressés :
Fichier texte unique :
content.file.body.textcontient jusqu'à 1,5 Mo de UTF-8 texte. Utilisez-le pour des compétences et des AGENTS.md fichiers simples.
json { "content": { "file": { "path": "SKILL.md", "body": { "text": "# Skill\n\nInstructions go here." } } } }
Fichier binaire unique :
content.file.body.bytescontient jusqu'à 6 Mo de contenu binaire codé en base64. Utilisez-le pour les pièces jointes telles que les images ou les PDF. Comme le blob est imbriqué dans l'contentunion, encodez le fichier en base64 à l'avance et envoyez la demande avec--cli-input-json(voir Créer une compétence à partir d'un fichier binaire pour un exemple concret).
json { "content": { "file": { "path": "topology.png", "body": { "bytes": "<base64-encoded bytes>" } } } }
Bundle Zip :
content.zip.zipFilecontient une archive zip codée en base64 d'une taille maximale de 6 Mo. Utilisez-le pour les compétences qui incluentSKILL.mddes fichiers supplémentaires dans unassets/répertoirereferences/ou.
json { "content": { "zip": { "zipFile": "<base64-encoded zip bytes>" } } }
Pour ajouter, remplacer ou supprimer des fichiers individuels dans une ressource existante sans avoir à télécharger à nouveau l'ensemble complet, utilisez CreateAssetFileUpdateAssetFile, et. DeleteAssetFile
Gérer une compétence de bout en bout
La procédure pas à pas qui suit crée une compétence de trois manières différentes (à partir d'un seul fichier texte, d'un fichier binaire et d'un bundle zip), puis exerce les opérations de lecture, de mise à jour et de suppression. 8f6187a7-0388-4926-8217-3a0fe32f757cRemplacez-le par votre identifiant Agent Space.
Création d'une compétence à partir d'un seul fichier texte
C'est le chemin le plus simple : un seul SKILL.md fichier téléchargé en ligne. Étant donné que le téléchargement contient exactement un fichier texte, vous devez le fournir name et description le saisirmetadata.
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"]
Création d'une compétence à partir d'un fichier binaire
Utilisez un téléchargement binaire lorsque le contenu de la compétence n'est pas UTF-8 du texte. L'exemple ci-dessous télécharge un PDF pré-rendu en tant que corps de compétence. Étant donné que le corps de la demande contient un blob codé en base64 imbriqué dans l'contentunion, fournissez la demande à partir d'un fichier JSON avec --cli-input-json et encodez le blob à l'avance en base64.
L'-w 0indicateur ci-dessous indique base64 à GNU d'émettre le blob codé sur une seule ligne ; sans cela, le wrap de ligne par défaut à 76 caractères insère des nouvelles lignes qui produisent un JSON non valide lorsque le blob est interpolé dans le heredoc. Sur macOS, utilisez base64 -i ops-runbook.pdf (le BSD n'est base64 pas encapsulé par défaut).
Créez le corps de la requête :
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}, } }, )
Créez une compétence à partir d'un pack zip
Utilisez un téléchargement zip lorsque la compétence comprend plus d'un fichier, par exemple, du matériel de référence et des ressources. SKILL.md Pour les téléchargements au format zip, le service lit name et description à partir de la SKILL.md page de couverture. Ne les incluez donc pas. metadata
La disposition du zip ressemble à ceci :
rds-performance-investigation.zip ├── SKILL.md ├── references/ │ └── rds-metrics-reference.md └── assets/ └── rds-investigation-flowchart.png
SKILL.mddoit inclure le frontmatter pour que le service puisse extraire le nom et la description :
--- 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 ...
Créez le corps de la requête :
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}}, )
Importer une compétence depuis un référentiel
Vous pouvez créer une compétence en l'important directement depuis un répertoire de GitHub dépôt. AWS DevOps L'agent récupère le contenu de la compétence, extrait le nom et la description de la SKILL.md page d'accueil et crée la compétence dans votre espace d'agent. Cela vous permet de gérer les compétences en matière de contrôle de version et de les importer ou de les synchroniser par programmation.
Prérequis :
Un GitHub compte doit être associé à votre espace agent. Consultez Connecter GitHub.
Le répertoire du référentiel doit contenir un SKILL.md fichier valide avec 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"]
Le service récupère le contenu du répertoire, lit la SKILL.md première page de name et description importe tous les fichiers. Ne les incluez pas name ou ne description les incluez metadata pas. Elles sont automatiquement extraites de la page de présentation.
Synchronisation d'une compétence importée :
Pour extraire les dernières modifications du référentiel, appelez UpdateAsset with 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 synchronisation remplace entièrement le contenu des compétences par l'état actuel du répertoire du référentiel. Les champs modifiables (statut, types d'agents) sont préservés.
Affichage de la source d'importation :
GetAssetrenvoie les informations source dans metadata.source pour les compétences importées dans le référentiel :
{ "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" } }
Contraintes :
Seules GitHub les URL sont acceptées. Vous pouvez pointer vers un répertoire contenant un SKILL.md (par exemple
https://github.com/org/repo/tree/main/skills/my-skill), qui importe l'intégralité du répertoire, y compris les fichiers de référence. Si le SKILL.md se trouve à la racine du référentiel, vous pouvez également créer un lien direct vers le fichier (par exemple,https://github.com/org/repo/blob/main/SKILL.md), qui importe uniquement le fichier SKILL.md.Le répertoire doit contenir SKILL.md un en-tête valide.
La taille totale du répertoire ne doit pas dépasser 6 Mo et pas plus de 100 fichiers.
content.sourceUrlest incompatible aveccontent.fileetcontent.zip: vous ne pouvez pas les combiner dans la même demande.Une mise à jour contenant uniquement des métadonnées (sans
content) préserve la source d'importation existante et n'est pas récupérée à nouveau depuis le référentiel.
Obtenir, répertorier, mettre à jour et supprimer
Utilisez GetAsset pour récupérer un seul actif par identifiant :
aws devops-agent get-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId>
ListAssetsÀ utiliser pour parcourir chaque ressource d'un espace d'agent :
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>
Permet UpdateAsset de modifier un ou plusieurs metadata champs sans avoir à télécharger à nouveau du contenu. Les clés que vous omettez conservent leurs valeurs existantes :
aws devops-agent update-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId> \ --metadata '{ "agent_types": ["INCIDENT_TRIAGE", "INCIDENT_RCA"] }'
Permet ListAssetVersions d'inspecter l'historique des versions d'un actif. Chaque UpdateAssetFile appel UpdateAsset ou appel réussi fait avancer le numéro de version de la ressource :
aws devops-agent list-asset-versions \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId>
Utilisez DeleteAsset pour supprimer la ressource et tous ses fichiers :
aws devops-agent delete-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId>
Ajouter un seul fichier à une compétence existante
Si vous avez déjà créé une compétence à partir d'un bundle zip et que vous souhaitez ajouter un nouveau fichier de référence, vous n'avez pas besoin de télécharger à nouveau l'ensemble du bundle. Utilisation 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." }'
Pour remplacer le fichier en place, utilisez update-asset-file les mêmes arguments. Pour le supprimer, utilisezdelete-asset-file.
Activation et désactivation de compétences
Les compétences ont un état d'activation dansmetadata.status. Les nouvelles compétences sont ACTIVE créées par défaut et sont chargées par l'agent lors des enquêtes et des discussions. Vous pouvez désactiver une compétence pour la mettre hors rotation sans la supprimer, par exemple pendant que vous recherchez les raisons pour lesquelles elle produit des résultats inattendus, et la réactiver ultérieurement.
Définissez l'état initial lors de la création en incluant metadata.status dans la CreateAsset demande :
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" } } }'
Désactivez une compétence existante avecUpdateAsset. Comme il s'metadataagit d'une mise à jour partielle, l'envoi ne status laisse intacts que tous les autres champs :
aws devops-agent update-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId> \ --metadata '{ "status": "INACTIVE" }'
Réactivez de la même manière, avec "status": "ACTIVE" :
aws devops-agent update-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId> \ --metadata '{ "status": "ACTIVE" }'
GetAssetet incluez ListAssets toujours les actifs status metadata de compétences actuels, afin que vous puissiez consulter l'état d'activation en temps réel à tout moment.
Le champ status est sensible à la casse. Seuls ACTIVE les caractères et INACTIVE (majuscules) sont acceptés. Toute autre valeur échoue avec unValidationException. L'activation s'applique uniquement aux compétences ; metadata.status le réglage sur tout autre type d'actif n'a aucun effet et le champ est supprimé de la réponse.
Gestion des actifs avec AWS CloudFormation
Utilisez l'API Asset pour effectuer des modifications interactives ou pilotées par des scripts. Pour gérer les actifs de manière déclarative, modélisez-les en tant que AWS::DevOpsAgent::Asset ressources dans AWS CloudFormation. Grâce à cette approche, vous pouvez contrôler les versions de vos actifs en même temps que vos autres infrastructures, les déployer via un pipeline et les reproduire dans les espaces d'agent. CloudFormation crée chaque actif en tant qu'enfant d'un espace d'agent parent, de sorte qu'un actif que vous définissez dans un modèle correspond exactement à la même ressource produite par un CreateAsset appel.
Vous gérez tous les types d'actifs via la même AWS::DevOpsAgent::Asset ressource. Les types pris en charge sont skill agents_md attachmentcustom_agent,memory_store,memory,test_profile, etfeedback. Seuls le contenu AssetTypeMetadata,, et diffère d'un type à l'autre. Les exemples suivants créent une compétence et un agent personnalisé ; les autres types suivent la même forme, en utilisant les métadonnées décrites dans Types d'actifs.
Le AWS: DevOpsAgent : :Ressource d'actifs
Les propriétés de la ressource correspondent directement aux champs de CreateAsset demande décrits plus haut dans cette rubrique :
| CloudFormation propriété | Type | Est mappé à | Remarques |
|---|---|---|---|
AgentSpaceId |
Chaîne | agentSpaceId |
Obligatoire Create-only—sa modification remplace l'actif. |
AssetType |
Chaîne | assetType |
Obligatoire Create-only. L'identifiant du type d'actif, par exemple ou. skill custom_agent Tous les types de types d'actifs sont valides. |
Metadata |
JSON | metadata |
Le même document de métadonnées que l'API (pour une compétence : namedescription,agent_types, et éventuellementstatus). Mis à jour sur place. |
Files |
List | content.file |
Fichiers en ligne, chacun avec un Path ContentText ou plusieursContentBytes, plus un fichier par fichier en option. Metadata Mutuellement exclusif avec Zip. |
Zip |
Chaîne | content.zip.zipFile |
Base64-encoded paquet zippé. Mutuellement exclusif avec Files. |
AssetId |
Chaîne | asset.assetId |
Read-only. Récupérez avecFn::GetAtt. |
Arn |
Chaîne | asset.arn |
Read-only. L'ARN de l'actif, imbriqué sous l'espace d'agent parent. |
Version |
Entier | asset.version |
Read-only. Des bosses à chaque mise à jour réussie. |
CreatedAt / UpdatedAt |
Chaîne | asset.createdAt / updatedAt |
Read-only horodatages. |
Deux comportements méritent d'être signalés avant de rédiger un modèle :
AgentSpaceIdetAssetTypesont créés uniquement. La modification de l'un ou l'autre remplace l'actif. CloudFormation crée une nouvelle ressource avec une nouvelleArn,AssetIdpuis supprime l'ancienne. Les modifications apportées au contenu et aux métadonnées mettent à jour l'actif existant en place.CloudFormation gère la ressource dans son ensemble : ses métadonnées et son ensemble de fichiers complet. Pour modifier une compétence, modifiez le modèle et mettez à jour la pile. Les opérations qui agissent sur certaines parties d'un actif ne font pas partie de la ressource et demeurent API-only. Cela inclut les modifications par fichier (
CreateAssetFileUpdateAssetFile,DeleteAssetFile) et l'historique des versions (ListAssetVersions). Il inclut également le téléchargement de contenu (GetAssetContent) ainsi que l'importation et la synchronisation du référentiel (le type desourceUrlcontenu). Pour ceux-ci, utilisez l' AWS interface de ligne de commande ou un SDK, comme indiqué plus haut dans cette rubrique.
Créez une compétence
Le modèle suivant crée la rds-performance-investigation compétence à fichier unique utilisée dans la procédure pas à pas de l' AWS interface de ligne de commande. Il prend l'ID de l'espace d'agent parent comme paramètre et exporte l'ID et l'ARN de la nouvelle ressource.
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
Déployez-le à l'aide de la AWS CLI, en transmettant votre ID d'espace d'agent :
aws cloudformation deploy \ --template-file skill.yaml \ --stack-name DevOpsAgentSkillStack \ --parameter-overrides AgentSpaceId=8f6187a7-0388-4926-8217-3a0fe32f757c \ --region <REGION>
Une compétence qui envoie plus d'un fichier, par exemple un document de référence et un SKILL.md document de référence, ajoute des entrées supplémentaires à : 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.
Pour désactiver la compétence, ou pour la désactiver ultérieurement, installez-la Metadata (voir Activation et désactivation des compétences) et mettez à jour la pile : status
Metadata: name: rds-performance-investigation description: Investigation procedures for RDS performance issues. agent_types: - GENERIC status: INACTIVE
Création d'un agent personnalisé
Un agent personnalisé est la même ressource avec un contenu différentAssetType. Metadata La ressource suivante crée un custom_agent actif qui regroupe un ensemble d'outils et de compétences. La skills liste fait référence aux compétences par leurs name métadonnées, afin que vous puissiez faire référence à la compétence que vous avez créée précédemment.
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.
Les autres types d'actifs fonctionnent de la même manière : définissez AssetType et fournissez les Metadata clés que le type nécessite (voir Types #asset-types d'actifs). Par exemple, un agents_md ensemble de ressources AssetType: agents_md Metadata contenant agent_type: INCIDENT_TRIAGE et un AGENTS.md fichier.
Planifiez l'agent personnalisé à l'aide d'un déclencheur
Pour exécuter automatiquement l'agent personnalisé, ajoutez une AWS::DevOpsAgent::Trigger ressource. Un déclencheur est un enfant de l'espace agent. Son action fait référence à l'agent personnalisé à exécuter par ID d'actif, dans le formulairecustom:<assetId>. Fn::GetAttUtilisez-le pour transmettre l'agent personnalisé AssetId afin de CloudFormation relier les deux ressources ensemble et d'ordonner leur création.
Le déclencheur suivant exécute l'agent rds-firefighter personnalisé une fois par jour :
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
Les Action propriétésAgentSpaceId, TypeCondition, et sont réservées à la création. La modification de l'un d'entre eux remplace le déclencheur. L'Statusétablissement accepte Active ou Inactive peut être mis à jour sur place. Réglez-le Inactive pour suspendre le déclencheur sans le supprimer. Pour plus d'informations sur la syntaxe des expressions de planification, consultezExécution d'agents personnalisés.
AWS::DevOpsAgent::Assetet AWS::DevOpsAgent::Trigger sont disponibles dans les AWS régions où AWS DevOps l'agent est proposé. Pour plus d'informations sur les AWS régions prises en charge, consultezRégions prises en charge. Pour déployer l'espace d'agent parent, les rôles IAM et l'application opérateur sous forme d'infrastructure sous forme de code, consultezDémarrage avec AWS DevOps Agent utilisant AWS CloudFormation.
Exemples pour les autres types d'actifs
La présentation des compétences ci-dessus s'applique à tous les autres types d'actifs. La seule différence réside dans le metadata bloc et, pour les pièces jointes, dans le choix du contenu binaire. Les CreateAsset appels minimaux ci-dessous illustrent chaque type.
Les mémoires et les mémoires utilisent la même CreateAsset opération. Créez d'abord le magasin, puis la mémoire. Pour plus d'informations sur leurs métadonnées, consultez memory_store et memory. #memory
Créez 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." } } }'
Créez une pièce jointe (contenu binaire ; créez la requête à partir d'un fichier JSON comme indiqué dans Créer une compétence à partir d'un fichier binaire) :
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
Créez un agent personnalisé :
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." } } }'
Créez un profil de 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" } } }'
Créez une ressource de 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\"}" } } }'
Liste des types d'actifs pris en charge :
aws devops-agent list-asset-types