

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 actifs
<a name="about-aws-devops-agent-managing-assets"></a>

AWS DevOps L'agent stocke la configuration et le matériel de référence d'un espace agent sous forme d'**actifs**, les ressources gérées par le client qui façonnent ce que l'agent sait et comment il se comporte. 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.

Cette rubrique explique le modèle d'actif, les autorisations IAM dont vous avez besoin, les métadonnées attendues par chaque type d'actif et comment gérer les actifs de bout en bout avec la AWS CLI et le AWS SDK for Python (Boto3). Pour un aperçu conceptuel des compétences elles-mêmes, voir[DevOps Compétences des agents](about-aws-devops-agent-devops-agent-skills.md). Pour les connaissances générées par des agents que vous ne créez pas vous-même, consultez. [Compétences apprises](about-aws-devops-agent-learned-skills.md)

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

L'application Web Operator est le moyen le plus rapide de créer une seule compétence 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 pour appeler directement l'API Asset sont les suivantes :
+ Création ou mise à jour d'une ressource à partir d'un script, d'un terminal ou d'un bloc-notes au lieu de l'application Web.
+ Bulk-loading un ensemble de compétences ou de AGENTS.md fichiers de départ dans un nouvel espace d'agents.
+ Lire le contenu d'un actif pour le sauvegarder ou comparer des versions.

Chaque opération de l'API Asset est exposée via la AWS CLI en tant que `devops-agent` client `aws devops-agent <operation>` et via AWS les SDK.

## Opérations de l'API des actifs
<a name="asset-api-operations"></a>

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'espace de `aidevops:` noms et, à l'exception de`ListAssetTypes`, s'applique à une ressource Agent Space du formulaire`arn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId>`. Pour de plus amples informations sur `aidevops:` les autorisations, voir[DevOps Autorisations IAM de l'agent](aws-devops-agent-security-devops-agent-iam-permissions.md).


| 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 un nouvel actif dans un espace agent (compétence AGENTS.md, pièce jointe, agent personnalisé, profil de test ou feedback). | aidevops:CreateAsset | Espace des agents | 
| GetAsset | Récupérez les métadonnées et les informations de version d'un actif. | aidevops:GetAsset | Espace des agents | 
| UpdateAsset | Mettez à jour les métadonnées ou le contenu d'une ressource existante. | aidevops:UpdateAsset | Espace des agents | 
| DeleteAsset | Supprimez un actif et tous ses fichiers d'un espace agent. | aidevops:DeleteAsset | Espace des agents | 
| ListAssets | Répertoriez les actifs dans un espace agent, avec un filtrage optionnel par type d'actif. | aidevops:ListAssets | Espace des agents | 
| ListAssetVersions | Répertoriez les versions historiques d'une ressource. | aidevops:ListAssetVersions | Espace des agents | 
| GetAssetContent | Téléchargez le contenu complet d'une ressource sous forme de bundle zip. | aidevops:GetAssetContent | Espace des agents | 
| CreateAssetFile | Ajoutez un nouveau fichier à une ressource existante. | aidevops:CreateAssetFile | Espace des agents | 
| GetAssetFile | Récupérez un seul fichier d'une ressource par son chemin. | aidevops:GetAssetFile | Espace des agents | 
| UpdateAssetFile | Remplacez le contenu ou les métadonnées d'un fichier existant dans une ressource. | aidevops:UpdateAssetFile | Espace des agents | 
| DeleteAssetFile | Supprimez un seul fichier d'une ressource. | aidevops:DeleteAssetFile | Espace des agents | 
| ListAssetFiles | Répertoriez les fichiers d'une ressource. | aidevops:ListAssetFiles | Espace des agents | 

### Exemple de politiques IAM
<a name="example-iam-policies"></a>

La politique suivante accorde un accès complet à la gestion des actifs dans un seul espace d'agent :

```
{
  "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 ressources d'un seul espace d'agent :

```
{
  "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
<a name="asset-types"></a>

Chaque actif possède une `assetType` chaîne qui identifie le type de ressource dont il s'agit. Six types d'actifs peuvent être créés via l'API Asset : `skill``agents_md`,`attachment`,`custom_agent`,`test_profile`, et`feedback`. Les sections suivantes décrivent chaque type. Vous pouvez également appeler `ListAssetTypes` pour récupérer les identifiants 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 qu'il contient `metadata` utilisent snake\_case (par exemple,`agent_types`). `skill_type` Les clés situées à l'extérieur`metadata`, au niveau supérieur du corps de la requête, utilisent CamelCase (par exemple`agentSpaceId`,,`assetType`). `clientToken` Les `metadata` clés obligatoires et facultatives dépendent du type de ressource, comme décrit dans les sections suivantes.

Lorsque vous appelez `UpdateAsset` ou`UpdateAssetFile`, 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
<a name="skill"></a>

Un `skill` actif contient des instructions et du matériel de référence que l'agent charge le cas échéant. Une compétence simple consiste en un `SKILL.md` fichier unique ; une compétence complexe consiste en un ensemble de fichiers compressés contenant un `SKILL.md` fichier et `references/` des `assets/` répertoires optionnels.

**`metadata`Propriétés requises :**
+ **name** (chaîne) — Identifiant unique de la compétence. Lettres minuscules, chiffres et tirets uniquement, de 1 à 64 caractères. Ne doit pas commencer ou se terminer par un trait d'union. Nécessaire uniquement pour les compétences simples. Pour les téléchargements au format zip, le service lit `name` à partir de `SKILL.md` l'interface 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. Nécessaire uniquement pour les compétences simples. Pour les téléchargements au format zip, le service lit `description` à partir de `SKILL.md` l'interface 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. `["GENERIC"]`À utiliser pour rendre la compétence accessible à tous les types d'agents. Les autres valeurs incluent `CHAT``INCIDENT_TRIAGE`,`INCIDENT_RCA`,`INCIDENT_MITIGATION`,`PREVENTION`,`CHANGE_REVIEW`,`CHANGE_RELEASE`,`QUALITY_ASSURANCE_TESTING`,`RELEASE_SHEPHERD`,`RELEASE_READINESS_REVIEW`, et`RELEASE_TESTING`. La `GENERIC` valeur ne peut pas être combinée avec d'autres valeurs.

**`metadata`Propriétés facultatives :**
+ **skill\_type** (string) — La valeur par défaut est. `USER` L'API Asset n'autorise que les compétences créées par le client. La seule valeur acceptée est donc. `USER` Le service rejette les demandes définies sur `skill_type``LEARNED`, 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 `ACTIVE` et `INACTIVE` (majuscules uniquement). La valeur par défaut est `ACTIVE` . Les compétences inactives restent dans l'espace des agents mais ne sont pas chargées par l'agent pendant les enquêtes ou le chat. Utilisez `UpdateAsset` with `metadata.status` pour 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 ; le `status` champ est ignoré pour tous les autres types d'actifs. Voir [Activation et désactivation des compétences](#activating-and-deactivating-skills) pour un exemple concret.
+ **enable\_tools** (tableau de chaînes) — Liste des 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 agent peut contenir jusqu'à 200 compétences créées par l'utilisateur.

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

Un `agents_md` actif est un fichier Markdown contenant des instructions d'agent permanent 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 relatives aux agents, consultez[Instructions pour les agents](about-aws-devops-agent-agent-instructions.md).

**`metadata`Propriétés requises :**
+ **agent\_type** (string) — Le type d'agent auquel le AGENTS.md fichier s'applique. Les valeurs valides sont `GENERIC`, `CHAT`, `INCIDENT_TRIAGE`, `INCIDENT_RCA`, `INCIDENT_MITIGATION`, `PREVENTION`, `CHANGE_REVIEW`, `CHANGE_RELEASE`, `QUALITY_ASSURANCE_TESTING`, `RELEASE_SHEPHERD`, `RELEASE_READINESS_REVIEW` et `RELEASE_TESTING`.

**Exemple `metadata` :**

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

**Limites :** Chaque espace d'agent peut en contenir au maximum un AGENTS.md par`agent_type`. Le contenu du fichier doit être en markdown (`text/markdown`) et ne doit pas dépasser 25 Ko.

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

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 fichier PDF ou un exemple de fichier journal.

**`metadata`Propriétés requises :**
+ **filename** (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 point initial (par exemple`png`,`pdf`,`csv`).
+ **taille** (nombre) — 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é
<a name="custom-agent"></a>

Un `custom_agent` actif définit une configuration d'agent spécialisée avec un ensemble d'outils et de compétences sélectionnés. Utilisez un agent personnalisé pour étendre l'agent à un flux de travail ou à un ensemble de fonctionnalités spécifiques.

**`metadata`Propriétés requises :**
+ **name** (chaîne) — Identifiant unique pour l'agent personnalisé. Lettres minuscules, chiffres et tirets uniquement, de 1 à 64 caractères. Ne doit pas commencer ou se terminer par un trait d'union.

**`metadata`Propriétés facultatives :**
+ **tools** (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.
+ **skills** (ensemble de chaînes) — Les identifiants 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"]
}
```

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

Un `test_profile` actif stocke une configuration réutilisable pour une exécution de test de version, y compris le type de test à effectuer et le point de terminaison cible.

**`metadata`Propriétés requises :**
+ **test\_agent\_type** (string) — Type de test effectué par ce profil. Les valeurs valides sont `releaseUiTesting` et `releaseApiTesting`.
+ **target\_url** (string) — L'URL cible par le test.

**`metadata`Propriétés facultatives :**
+ **name** (chaîne) — 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 ou se terminer par un trait d'union.
+ **description** (chaîne) — Description de 1 à 1024 caractères de ce que couvre le profil de test.
+ **test\_personas** (tableau de chaînes) — Les personas à exercer pendant le test. Les valeurs valides sont `guest` et `authenticated`.
+ **api\_spec** (string) — Spécification d'API pour le test. Pertinent pour`releaseApiTesting`.
+ **credentials\_secret\_arn** (string) — L'ARN d'un secret de 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
<a name="feedback"></a>

Un `feedback` actif enregistre les commentaires fournis par le client sur l'exécution d'un seul agent. Utilisez les ressources de feedback pour recueillir des verdicts et des notes que les pipelines d'évaluation en aval peuvent agréger.

**`metadata`Proprié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`).

**`metadata`Propriétés facultatives :**
+ **execution\_id** (string) — L'exécution à laquelle ce feedback est associé. Activez cette option `CreateAsset` ; elle ne peut pas être modifiée par`UpdateAsset`.

**Exemple `metadata` :**

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

## Contenu de la ressource : fichier ou zip
<a name="asset-content-file-or-zip"></a>

Chaque `CreateAsset` demande inclut un `content` objet qui contient les octets stockés par la ressource. La forme de `content` varie selon que vous chargez un seul fichier ou un bundle zip :
+ **Fichier texte unique** : `content.file.body.text` contient 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.bytes` contient jusqu'à 6 Mo de contenu binaire codé en base64. Utilisez-le pour les pièces jointes telles que les images ou les PDF. Le blob étant imbriqué dans l'`content`union, codez le fichier en base64 à l'avance et soumettez la demande avec `--cli-input-json` (voir [Créer une compétence à partir d'un fichier binaire pour un exemple concret](#create-a-skill-from-a-binary-file)).

```json { "content": { "file": { "path": "topology.png", "body": { "bytes": "<base64-encoded bytes>" } } } } ```
+ **Bundle Zip** : `content.zip.zipFile` contient une archive zip codée en base64 d'une taille maximale de 6 Mo. Utilisez-le pour les compétences qui incluent un `SKILL.md` et des fichiers supplémentaires dans un `assets/` répertoire `references/` ou.

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

Pour ajouter, remplacer ou supprimer des fichiers individuels à l'intérieur d'une ressource existante sans avoir à télécharger à nouveau l'ensemble complet, utilisez `CreateAssetFile``UpdateAssetFile`, et. `DeleteAssetFile`

## Gérer une compétence de bout en bout
<a name="managing-a-skill-end-to-end"></a>

La procédure pas à pas qui suit crée une compétence de trois manières différentes (à partir d'un seul fichier texte, à partir d'un fichier binaire et à partir d'un bundle zip), puis exécute les opérations de lecture, de mise à jour et de suppression. `8f6187a7-0388-4926-8217-3a0fe32f757c`Remplacez-le par votre identifiant Agent Space.

### Création d'une compétence à partir d'un seul fichier texte
<a name="create-a-skill-from-a-single-text-file"></a>

C'est le chemin le plus simple : un seul `SKILL.md` fichier téléchargé en ligne. Comme le téléchargement ne contient qu'un seul fichier texte, vous devez le fournir `name` et `description` le saisir`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"]
```

### Création d'une compétence à partir d'un fichier binaire
<a name="create-a-skill-from-a-binary-file"></a>

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étences. Comme le corps de la demande contient un blob codé en base64 imbriqué dans l'`content`union, fournissez la demande à partir d'un fichier JSON `--cli-input-json` et encodez le blob en base64 à l'avance.

L'`-w 0`indicateur ci-dessous indique `base64` à GNU d'émettre le blob codé sur une seule ligne ; sans lui, l'enroulement de ligne de 76 caractères par défaut insère de nouvelles lignes qui produisent du 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 demande :**

```
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éation d'une compétence à partir d'un bundle zip
<a name="create-a-skill-from-a-zip-bundle"></a>

Utilisez un téléchargement zip lorsque la compétence inclut plusieurs fichiers, par exemple un document `SKILL.md` de référence et des ressources. Pour les téléchargements au format zip, le service lit `name` et `description` depuis `SKILL.md` l'interface, ne les incluez donc pas. `metadata`

La mise en page du zip ressemble à :

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

`SKILL.md`doit inclure le frontmatter afin que le service puisse en 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 demande :**

```
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
<a name="import-a-skill-from-a-repository"></a>

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 matière première et crée la compétence dans votre espace 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](connecting-to-cicd-pipelines-connecting-github.md).
+ 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 partie SKILL.md initiale de `name` et`description`, puis importe tous les fichiers. Ne les incluez pas `name` ou n'y `description` `metadata` insérez pas : elles sont automatiquement extraites de la matière première.

**Synchronisation d'une compétence importée :**

Pour extraire les dernières modifications du référentiel, appelez `UpdateAsset` `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 de la compétence par l'état actuel du répertoire du référentiel. Les champs modifiables (statut, types d'agents) sont conservés.

**Affichage de la source d'importation :**

`GetAsset`renvoie les informations source `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 SKILL.md.
+ Le répertoire doit contenir SKILL.md un frontal valide.
+ La taille totale du répertoire ne doit pas dépasser 6 Mo et 100 fichiers au maximum.
+ `content.sourceUrl`s'exclut mutuellement `content.file` et `content.zip` vous ne pouvez pas les combiner dans la même demande.
+ Une mise à jour contenant uniquement les métadonnées (sans`content`) préserve la source d'importation existante et n'est pas extraite à nouveau du référentiel.

### Obtenir, répertorier, mettre à jour et supprimer
<a name="get-list-update-and-delete"></a>

`GetAsset`À utiliser 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 toutes les ressources d'un espace 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>
```

`UpdateAsset`À utiliser pour modifier un ou plusieurs `metadata` champs sans télécharger à nouveau le 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"] }'
```

`ListAssetVersions`À utiliser pour inspecter l'historique des versions d'une ressource. 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>
```

`DeleteAsset`À utiliser 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
<a name="add-a-single-file-to-an-existing-skill"></a>

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, il n'est pas nécessaire de télécharger à nouveau le bundle complet. 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 sur place, utilisez-le `update-asset-file` avec les mêmes arguments. Pour le supprimer, utilisez`delete-asset-file`.

### Activation et désactivation des compétences
<a name="activating-and-deactivating-skills"></a>

Les compétences comportent un état d'activation`metadata.status`. Les nouvelles compétences sont `ACTIVE` disponibles par défaut et sont chargées par l'agent lors des enquêtes et du chat. Vous pouvez désactiver une compétence pour la mettre hors rotation sans la supprimer, par exemple pendant que vous étudiez les raisons pour lesquelles elle produit des résultats inattendus et que vous la réactivez 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** avec`UpdateAsset`. Comme il s'`metadata`agit d'une mise à jour partielle, l'envoi ne `status` laisse que tous les autres champs intacts :

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

`GetAsset`et incluez `ListAssets` toujours le courant `status` dans `metadata` les actifs de compétence, afin que vous puissiez lire l'état d'activation en temps réel à tout moment.

Le champ `status` est sensible à la casse. Seuls `ACTIVE` et `INACTIVE` (majuscules) sont acceptés. Toute autre valeur échoue avec un`ValidationException`. L'activation s'applique uniquement aux compétences ; `metadata.status` la définition d'un autre type d'actif n'a aucun effet et le champ est supprimé de la réponse.

## Exemples pour les autres types d'actifs
<a name="examples-for-the-other-asset-types"></a>

La description 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.

**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 demande à partir d'un fichier JSON comme indiqué dans [Création d'une compétence à partir d'un fichier binaire](#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
```

**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 commentaires :**

```
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 de ressources pris en charge :**

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