

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# アセットの管理
<a name="about-aws-devops-agent-managing-assets"></a>

AWS DevOps Agent は、エージェントスペースの設定とリファレンスマテリアルを**アセット**として保存します。これは、エージェントが知っている内容と動作を形作るカスタマー管理のリソースです。スキル、AGENTS.md ファイル、添付ファイルはすべてアセットであり、Asset API を使用してプログラムで作成、読み取り、更新、削除できます。

このトピックでは、アセットモデル、必要な IAM アクセス許可、各アセットタイプが期待するメタデータ、および AWS CLI と AWS SDK for Python (Boto3) を使用してアセットをend-to-endで管理する方法について説明します。スキル自体の概念的な概要については、「」を参照してください[DevOps エージェントスキル](about-aws-devops-agent-devops-agent-skills.md)。自分で作成しないエージェント生成のナレッジについては、「」を参照してください[学習したスキル](about-aws-devops-agent-learned-skills.md)。

## アセット API を使用するタイミング
<a name="when-to-use-the-asset-api"></a>

Operator Web App は、単一のスキルを作成したり、AGENTS.md ファイルをインタラクティブにアップロードしたりする最も速い方法です。アセット API は、スクリプトとオートメーションがウェブアプリを経由せずにアセットを管理できるように、同じオペレーションをプログラムで公開します。アセット API を直接呼び出す一般的な理由は次のとおりです。
+ ウェブアプリの代わりにスクリプト、ターミナル、ノートブックからアセットを作成または更新する。
+ スキルまたは AGENTS.md ファイルのスターターセットを新しいエージェントスペースに一括ロードします。
+ アセットの内容を読み取り、バージョンをバックアップまたは比較します。

アセット API のすべてのオペレーションは、CLI AWS を介して として公開`aws devops-agent <operation>`され、 AWS SDKsを介して`devops-agent`クライアントとして公開されます。

## アセット API オペレーション
<a name="asset-api-operations"></a>

アセット API は次のオペレーションを公開します。各行には、 オペレーションを呼び出すために付与する必要がある IAM アクションと、アクションが適用されるリソースが一覧表示されます。すべてのアクションは`aidevops:`名前空間に存在し、 を除き`ListAssetTypes`、 形式のエージェントスペースリソースに適用されます`arn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId>`。アクセス`aidevops:`許可のより広範な背景については、「」を参照してください[DevOps エージェント IAM アクセス許可](aws-devops-agent-security-devops-agent-iam-permissions.md)。


| 運用 | 説明 | IAM アクション | [リソース]  | 
| --- | --- | --- | --- | 
| ListAssetTypes |  AWS DevOps Agent でサポートされているアセットタイプを一覧表示します。 | aidevops:ListAssetTypes | \* | 
| CreateAsset | エージェントスペース (スキル、AGENTS.md、アタッチメント、カスタムエージェント、テストプロファイル、フィードバック) に新しいアセットを作成します。 | aidevops:CreateAsset | エージェントスペース | 
| GetAsset | アセットのメタデータとバージョン情報を取得します。 | aidevops:GetAsset | エージェントスペース | 
| UpdateAsset | 既存のアセットのメタデータまたはコンテンツを更新します。 | aidevops:UpdateAsset | エージェントスペース | 
| DeleteAsset | エージェントスペースからアセットとそのすべてのファイルを削除します。 | aidevops:DeleteAsset | エージェントスペース | 
| ListAssets | エージェントスペースのアセットを一覧表示し、オプションでアセットタイプでフィルタリングします。 | aidevops:ListAssets | エージェントスペース | 
| ListAssetVersions | アセットの履歴バージョンを一覧表示します。 | aidevops:ListAssetVersions | エージェントスペース | 
| GetAssetContent | アセットの完全なコンテンツを zip バンドルとしてダウンロードします。 | aidevops:GetAssetContent | エージェントスペース | 
| CreateAssetFile | 既存のアセットに新しいファイルを追加します。 | aidevops:CreateAssetFile | エージェントスペース | 
| GetAssetFile | パスでアセットから 1 つのファイルを取得します。 | aidevops:GetAssetFile | エージェントスペース | 
| UpdateAssetFile | アセット内の既存のファイルのコンテンツまたはメタデータを置き換えます。 | aidevops:UpdateAssetFile | エージェントスペース | 
| DeleteAssetFile | アセットから 1 つのファイルを削除します。 | aidevops:DeleteAssetFile | エージェントスペース | 
| ListAssetFiles | アセット内のファイルを一覧表示します。 | aidevops:ListAssetFiles | エージェントスペース | 

### IAM ポリシーの例
<a name="example-iam-policies"></a>

次のポリシーは、単一のエージェントスペース内のアセットへのフル管理アクセスを許可します。

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

次のポリシーは、単一のエージェントスペース内のアセットへの読み取り専用アクセスを許可します。

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

## アセットタイプ
<a name="asset-types"></a>

すべてのアセットには、リソースの種類を識別する`assetType`文字列があります。アセット API では、、`skill`、`agents_md`、`attachment`、`custom_agent`、 `test_profile`の 6 つのアセットタイプを作成できます`feedback`。以降のセクションでは、各タイプについて説明します。を呼び出し`ListAssetTypes`て、実行時にタイプ識別子を取得することもできます。

各アセットには、リソースを記述する自由形式の `metadata` JSON オブジェクトがあります。内のキーは snake\_case `metadata`を使用します (例: `agent_types`、`skill_type`)。リクエスト本文の最上位にある 外部のキーは`metadata`、 camelCase を使用します (例: `agentSpaceId`、`assetType`、`clientToken`)。必須キーとオプション`metadata`キーは、以下のセクションで説明するように、アセットタイプによって異なります。

`UpdateAsset` または を呼び出すと`UpdateAssetFile`、サービスは PATCH セマンティクスを に適用します`metadata`。含めたキーは置き換えられ、省略したキーは保存された値を保持します。アセットの作成`assetType`後にアセットを変更することはできません。

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

`skill` アセットは、必要に応じてエージェントがロードする指示書と参考資料をパッケージ化します。シンプルなスキルは 1 つの`SKILL.md`ファイルです。複雑なスキルは、`SKILL.md`ファイルとオプションの `references/`または `assets/` ディレクトリを含む zip バンドルです。

**必要な`metadata`プロパティ:**
+ **name** (文字列) – スキルの一意の識別子。小文字、数字、ハイフンのみ、1～64 文字。先頭または末尾にハイフンを使用しないでください。シンプルなスキルにのみ必要です。zip アップロードの場合、`SKILL.md`フロントマター`name`からのサービスの読み取りは無視され、ここで指定された値は無視されます。
+ **description** (文字列) – エージェントがいつスキルを使用するかを示す 1～1024 文字の説明。シンプルなスキルにのみ必要です。zip アップロードの場合、`SKILL.md`フロントマター`description`からのサービスの読み取りは無視され、ここで指定された値は無視されます。
+ **agent\_types** (文字列の配列) – このスキルが適用される 1 つ以上のエージェントタイプ。を使用して`["GENERIC"]`、スキルがすべてのエージェントタイプで使用できるようにします。その他の値には、`CHAT`、`INCIDENT_TRIAGE`、`INCIDENT_RCA`、、`INCIDENT_MITIGATION`、`PREVENTION`、`CHANGE_REVIEW`、`CHANGE_RELEASE`、`RELEASE_READINESS_REVIEW`、、`QUALITY_ASSURANCE_TESTING``RELEASE_SHEPHERD`、 などがあります`RELEASE_TESTING`。`GENERIC` 値を他の値と組み合わせることはできません。

**オプションの`metadata`プロパティ:**
+ **skill\_type** (文字列) – デフォルトは です`USER`。アセット API では、お客様が作成したスキルのみが許可されるため、許可される値は のみです`USER`。このサービスは、 を `skill_type`に設定するリクエストを拒否します。これは`LEARNED`、エージェント自体によって生成されたスキル用に予約されています。
+ **status** (文字列) – スキルのアクティベーション状態。使用できる値は `ACTIVE`および `INACTIVE` (大文字のみ) です。デフォルトは `ACTIVE` です。非アクティブなスキルはエージェントスペースに残りますが、調査またはチャット中にエージェントによってロードされません。`UpdateAsset` で を使用して`metadata.status`、スキルを削除せずに非アクティブ化または再アクティブ化します。スキルはアクティベーションをサポートする唯一のアセットタイプです。`status`フィールドは他のすべてのアセットタイプで無視されます。実例については、[「スキルのアクティブ化と非アクティブ化](#activating-and-deactivating-skills)」を参照してください。
+ **enable\_tools** (文字列の配列) – このスキルをロードするときにエージェントが呼び出すことができるツール識別子のリスト。

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

**制限:** Zip アップロードは 6 MB を超えることはできません。エージェントスペースには、ユーザーが作成したスキルを最大 200 個含めることができます。

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

`agents_md` アセットは、特定のエージェントタイプのスタンディングエージェント指示を含むマークダウンファイルです。エージェントは、すべてのタスクの開始時に一致する AGENTS.md をロードします。エージェントの手順の詳細については、「」を参照してください[エージェントの指示](about-aws-devops-agent-agent-instructions.md)。

**必要な`metadata`プロパティ:**
+ **agent\_type** (文字列) – AGENTS.md ファイルが適用されるエージェントタイプ。有効な値は、`GENERIC`、`CHAT`、`INCIDENT_TRIAGE`、`INCIDENT_RCA`、`INCIDENT_MITIGATION`、`PREVENTION`、`CHANGE_REVIEW`、`CHANGE_RELEASE`、`QUALITY_ASSURANCE_TESTING`、`RELEASE_SHEPHERD`、`RELEASE_READINESS_REVIEW`、`RELEASE_TESTING` です。

**例`metadata`:**

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

**制限:** 各エージェントスペースには、 ごとに最大 1 つの AGENTS.md を含めることができます`agent_type`。ファイルの内容はマークダウン (`text/markdown`) でなければならず、25 KB を超えることはできません。

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

`attachment` アセットには、エージェントが調査中に参照できるバイナリファイルまたはテキストファイルが保存されます。たとえば、アーキテクチャ図、ランブック PDF、サンプルログファイルなどです。

**必要な`metadata`プロパティ:**
+ **filename** (文字列) – ベース名と任意の拡張子 (例: ) を含む元のファイル名`topology.png`。
+ **extension** (文字列) – 先頭のドットのないファイル拡張子 (、`png``pdf`、 など`csv`)。
+ **size** (数値) – バイト単位のファイルのサイズ。

**例`metadata`:**

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

**制限:** エージェントスペース内のすべてのアタッチメントの合計サイズは 10 GB を超えることはできません。

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

`custom_agent` アセットは、厳選された一連のツールとスキルを使用して、特殊なエージェント設定を定義します。カスタムエージェントを使用して、エージェントを特定のワークフローまたは一連の機能にスコープします。

**必要な`metadata`プロパティ:**
+ **name** (文字列) – カスタムエージェントの一意の識別子。小文字、数字、ハイフンのみ、1～64 文字。先頭または末尾にハイフンを使用しないでください。

**オプションの`metadata`プロパティ:**
+ **ツール** (文字列の配列) – カスタムエージェントが使用できるツール識別子。省略すると、デフォルトで空のリストになります。
+ **スキル** (文字列の配列) – カスタムエージェントがロードするスキル識別子。省略すると、デフォルトで空のリストになります。

**例`metadata`:**

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

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

`test_profile` アセットは、実行するテストの種類やターゲットエンドポイントなど、リリーステストの実行の再利用可能な設定を保存します。

**必要な`metadata`プロパティ:**
+ **test\_agent\_type** (文字列) – このプロファイルが実行するテストのタイプ。有効な値は、`releaseUiTesting` および `releaseApiTesting` です。
+ **target\_url** (文字列) – テスト実行がターゲットとする URL。

**オプションの`metadata`プロパティ:**
+ **name** (文字列) – テストプロファイルの読み取り可能な識別子。小文字、数字、ハイフンのみ、1～128 文字。先頭または末尾にハイフンを使用しないでください。
+ **description** (文字列) – テストプロファイルがカバーする内容の 1～1024 文字の説明。
+ **test\_personas** (文字列の配列) – テスト実行中に実行するペルソナ。有効な値は、`guest` および `authenticated` です。
+ **api\_spec** (文字列) – テストランの API 仕様。に関連します`releaseApiTesting`。
+ **credentials\_secret\_arn** (文字列) – テストランの認証情報を保持する AWS Secrets Manager シークレットの ARN。

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

### フィードバック
<a name="feedback"></a>

`feedback` アセットは、単一のエージェント実行に関するお客様から提供されたフィードバックを記録します。フィードバックアセットを使用して、ダウンストリーム評価パイプラインが集約できる判定とメモをキャプチャします。

**必要な`metadata`プロパティ:**
+ **agent\_types** (文字列の配列) – 実行を生成したエージェントタイプ。少なくとも 1 つの値を含める必要があります (例: `INCIDENT_TRIAGE`)。

**オプションの`metadata`プロパティ:**
+ **execution\_id** (文字列) – このフィードバックが関連付けられている実行。これを に設定します`CreateAsset`。 で変更することはできません`UpdateAsset`。

**例`metadata`:**

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

## アセットコンテンツ: file または zip
<a name="asset-content-file-or-zip"></a>

すべての`CreateAsset`リクエストには、アセットが保存するバイトを保持する`content`オブジェクトが含まれます。の形状は、1 つのファイルをアップロードするか zip バンドルをアップロードするか`content`によって異なります。
+ **単一テキストファイル** – 最大 1.5 MB の UTF-8 テキストを`content.file.body.text`格納します。これは、シンプルなスキルと AGENTS.md ファイルに使用します。

```json { "content": { "file": { "path": "SKILL.md", "body": { "text": "# Skill\n\nInstructions go here." } } } } ```
+ **単一バイナリファイル** – 最大 6 MB の base64 でエンコードされたバイナリコンテンツ`content.file.body.bytes`を保持します。これは、イメージや PDFsなどの添付ファイルに使用します。BLOB は`content`ユニオン内にネストされるため、事前に base64 でファイルをエンコードし、 でリクエストを送信します `--cli-input-json` (作業例については、[「バイナリファイルからスキルを作成する](#create-a-skill-from-a-binary-file)」を参照）。

```json { "content": { "file": { "path": "topology.png", "body": { "bytes": "<base64-encoded bytes>" } } } } ```
+ **Zip バンドル** – は、最大 6 MB の base64 エンコードされた zip アーカイブ`content.zip.zipFile`を保持します。これは、 `references/`または `assets/` ディレクトリに`SKILL.md`プラスの追加ファイルを含むスキルに使用します。

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

バンドル全体を再アップロードせずに既存のアセット内の個々のファイルを追加、置換、または削除するには、、`CreateAssetFile``UpdateAssetFile`、および を使用します`DeleteAssetFile`。

## スキルend-to-endの管理
<a name="managing-a-skill-end-to-end"></a>

以下のチュートリアルでは、3 つの異なる方法 (1 つのテキストファイル、バイナリファイル、zip バンドルから) でスキルを作成し、読み取り、更新、削除オペレーションを実行します。をエージェントスペース ID `8f6187a7-0388-4926-8217-3a0fe32f757c`に置き換えます。

### 単一のテキストファイルからスキルを作成する
<a name="create-a-skill-from-a-single-text-file"></a>

これは最もシンプルなパスです。インラインでアップロードされた 1 つの`SKILL.md`ファイルです。アップロードには 1 つのテキストファイルのみが含まれているため、 `description`で `name`と を指定する必要があります`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"]
```

### バイナリファイルからスキルを作成する
<a name="create-a-skill-from-a-binary-file"></a>

スキルコンテンツが UTF-8 テキストでない場合は、バイナリアップロードを使用します。以下の例では、事前にレンダリングされた PDF をスキル本文としてアップロードします。リクエスト本文には、`content`ユニオン内にネストされた base64 でエンコードされた BLOB が含まれているため、 で JSON ファイルからのリクエストを指定`--cli-input-json`し、BLOB を base64 でエンコードします。

以下の`-w 0`フラグは、エンコードされた BLOB を 1 行に出力`base64`するように GNU に指示します。これがない場合、デフォルトの 76 文字のラインラップは、BLOB が heredoc に補間されたときに無効な JSON を生成する改行を挿入します。macOS では、 を使用します `base64 -i ops-runbook.pdf` (デフォルトでは BSD `base64`はラップされません）。

**リクエスト本文を構築します。**

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

### zip バンドルからスキルを作成する
<a name="create-a-skill-from-a-zip-bundle"></a>

スキルに複数のファイルが含まれている場合は、zip アップロードを使用します。たとえば、`SKILL.md`プラスのリファレンスマテリアルやアセットなどです。zip アップロードの場合、サービスは`SKILL.md`フロントマター`description`から `name`と を読み取るため、 に含めないでください`metadata`。

zip レイアウトは次のようになります。

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

`SKILL.md` サービスが名前と説明を抽出できるように、 にはフロントマターを含める必要があります。

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

**リクエスト本文を構築します。**

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

### リポジトリからスキルをインポートする
<a name="import-a-skill-from-a-repository"></a>

GitHub リポジトリディレクトリから直接インポートしてスキルを作成できます。 AWS DevOps Agent はスキルコンテンツを取得し、SKILL.md フロントマターから名前と説明を抽出して、エージェントスペースにスキルを作成します。これにより、バージョン管理のスキルを管理し、プログラムでインポートまたは同期できます。

**前提条件**:
+ エージェントスペースには GitHub アカウントが関連付けられている必要があります。「[GitHub の接続](connecting-to-cicd-pipelines-connecting-github.md)」を参照してください。
+ リポジトリディレクトリには、frontmatter を含む有効な SKILL.md ファイルが含まれている必要があります。

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

サービスはディレクトリの内容を取得し、 `name`と の SKILL.md フロントマターを読み取り`description`、すべてのファイルをインポートします。`name` または を `description` に含めないでください`metadata`。前面から自動的に抽出されます。

**インポートしたスキルの同期:**

リポジトリから最新の変更を取得するには、 `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"
        }
    },
)
```

同期すると、スキルコンテンツ全体がリポジトリディレクトリの現在の状態に置き換えられます。編集可能なフィールド (ステータス、エージェントタイプ) は保持されます。

**インポートソースの表示:**

`GetAsset` は、リポジトリにインポートされたスキル`metadata.source`のソース情報を に返します。

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

**制約**:
+ GitHub URLs。参照ファイルを含むディレクトリ全体をインポートする SKILL.md ( など`https://github.com/org/repo/tree/main/skills/my-skill`) を含むディレクトリを指すことができます。SKILL.md がリポジトリのルートにある場合は、SKILL.md のみをインポートする ファイル ( など`https://github.com/org/repo/blob/main/SKILL.md`) に直接リンクすることもできます。
+ ディレクトリには、有効なフロントマターを持つ SKILL.md が含まれている必要があります。
+ ディレクトリの合計サイズは 6 MB を超えてはならず、最大 100 個のファイルである必要があります。
+ `content.sourceUrl` は `content.file`および `content.zip`と相互に排他的です。同じリクエストで組み合わせることはできません。
+ メタデータのみの更新 ( なし`content`) では、既存のインポートソースが保持され、リポジトリから再フェッチされません。

### の取得、一覧表示、更新、削除
<a name="get-list-update-and-delete"></a>

`GetAsset` を使用して ID で単一のアセットを取得します。

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

を使用して`ListAssets`、エージェントスペース内のすべてのアセットをページスルーします。

```
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`、コンテンツを再アップロードせずに 1 つ以上の`metadata`フィールドを変更します。省略したキーは、既存の値を保持します。

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

`ListAssetVersions` を使用して、アセットのバージョン履歴を検査します。成功した `UpdateAsset`または `UpdateAssetFile`の呼び出しごとに、アセットのバージョン番号が進められます。

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

`DeleteAsset` を使用して、アセットとそのすべてのファイルを削除します。

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

### 既存のスキルに 1 つのファイルを追加する
<a name="add-a-single-file-to-an-existing-skill"></a>

zip バンドルからスキルを作成済みで、新しい参照ファイルを 1 つ追加する場合は、バンドル全体を再アップロードする必要はありません。を使用する`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." }'
```

所定のファイルを置き換えるには、同じ引数`update-asset-file`で を使用します。削除するには、 を使用します`delete-asset-file`。

### スキルのアクティブ化と非アクティブ化
<a name="activating-and-deactivating-skills"></a>

スキルは でアクティベーション状態になります`metadata.status`。新しいスキルは`ACTIVE`デフォルトで、調査とチャット中にエージェントによってロードされます。スキルを無効にすると、例えば、予期しない結果を生成している理由を調査したり、後で再アクティブ化したりする間など、ローテーションを削除せずに無効にすることができます。

`CreateAsset` リクエスト`metadata.status`に を含めることで**、作成時の初期状態**を設定します。

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

**で既存のスキルを非アクティブ化**します`UpdateAsset`。`metadata` は部分的な更新として適用されるため、送信しても他のすべてのフィールドはそのまま`status`残ります。

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

を使用して、同じ方法で**再アクティブ化**します`"status": "ACTIVE"`。

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

`GetAsset` と `ListAssets`は常にスキルアセット`metadata`の `status`に現在の を含めるため、ライブアクティベーションの状態をいつでも読み取ることができます。

[`status`] フィールドでは、大文字と小文字が区別されます。`ACTIVE` と `INACTIVE` (大文字) のみが受け入れられます。他の値は で失敗します`ValidationException`。アクティベーションはスキルにのみ適用されます。他のアセットタイプ`metadata.status`で を設定しても効果はなく、 フィールドはレスポンスから削除されます。

## 他のアセットタイプの例
<a name="examples-for-the-other-asset-types"></a>

上記のスキルウォークスルーは、他のすべてのアセットタイプに適用されます。唯一の違いは、 `metadata`ブロックと、添付ファイルの場合はバイナリコンテンツの選択です。以下の最小限の`CreateAsset`呼び出しは、各タイプを示しています。

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

**添付ファイルを作成する** (バイナリコンテンツ。「バイナリファイルから[スキルを作成する」に示すように、JSON ファイルから](#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
```

**カスタムエージェントを作成します。**

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

**テストプロファイルを作成します。**

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

**フィードバックアセットを作成します。**

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

**サポートされているアセットタイプを一覧表示します。**

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