View a markdown version of this page

アセットの管理 - AWS DevOps エージェント

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

アセットの管理

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

AWS DevOps エージェントが知っていることと動作を設定するには、エージェントスペースのアセットを管理します。このトピックでは、アセットモデル、IAM アクセス許可、各アセットタイプが想定するメタデータについて説明します。 AWS CLI、 AWS SDK for Python (Boto3)、または AWS CloudFormation を使用して、アセットをend-to-end管理します。スキル自体の概念的な概要については、「」を参照してくださいDevOps エージェントスキル。自分で作成しないエージェント生成のナレッジについては、「」を参照してください学習したスキル

アセット API を使用するタイミング

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

  • ウェブアプリの代わりにスクリプト、ターミナル、ノートブックからアセットを作成または更新する。

  • スキルまたは AGENTS.md ファイルのスターターセットを新しいエージェントスペースに一括ロードします。

  • アセットの内容を読み取り、バージョンをバックアップまたは比較します。

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

アセット API オペレーション

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

運用 説明 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 ポリシーの例

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

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

アセットタイプ

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

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

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

skill

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"]、スキルがすべてのエージェントタイプで使用できるようにします。その他の値には、CHATINCIDENT_TRIAGE、、INCIDENT_RCAINCIDENT_MITIGATIONPREVENTIONRELEASE_READINESS_REVIEW、 などがありますRELEASE_TESTINGGENERIC 値を他の値と組み合わせることはできません。

オプションのmetadataプロパティ:

  • skill_type (文字列) – デフォルトは ですUSER。アセット API はお客様が作成したスキルのみを許可するため、許可される値は のみですUSER。このサービスは、 を skill_typeに設定するリクエストを拒否します。これはLEARNED、エージェント自体によって生成されたスキル用に予約されています。

  • status (文字列) – スキルのアクティベーション状態。使用できる値は ACTIVEおよび INACTIVE (大文字のみ) です。デフォルトは ACTIVE です。非アクティブなスキルはエージェントスペースに残りますが、調査またはチャット中にエージェントによってロードされません。UpdateAsset で を使用してmetadata.status、スキルを削除せずに無効化または再有効化します。スキルはアクティベーションをサポートする唯一のアセットタイプです。statusフィールドは他のすべてのアセットタイプで無視されます。実例については、「スキルのアクティブ化と非アクティブ化」を参照してください。

  • 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

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

必要なmetadataプロパティ:

  • agent_type (文字列) – AGENTS.md ファイルが適用されるエージェントタイプ。有効な値は、GENERIC、、CHATINCIDENT_TRIAGEINCIDENT_RCAINCIDENT_MITIGATIONPREVENTIONRELEASE_READINESS_REVIEW、および ですRELEASE_TESTING

metadata:

{ "agent_type": "INCIDENT_TRIAGE" }

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

添付

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

必要なmetadataプロパティ:

  • filename (文字列) – ベース名と任意の拡張子 (例: ) を含む元のファイル名topology.png

  • extension (文字列) – 先頭のドットのないファイル拡張子 (、pngpdf、 などcsv)。

  • size (数値) – バイト単位のファイルのサイズ。

metadata:

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

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

custom_agent

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

必要なmetadataプロパティ:

  • name (文字列) – カスタムエージェントの一意の識別子。小文字、数字、ハイフンのみ、1~64 文字。先頭または末尾にハイフンを使用しないでください。

オプションのmetadataプロパティ:

  • ツール (文字列の配列) – カスタムエージェントが使用できるツール識別子。省略すると、デフォルトで空のリストになります。

  • スキル (文字列の配列) – カスタムエージェントがロードするスキル識別子。省略すると、デフォルトで空のリストになります。

metadata:

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

memory_store

memory_store アセットは、関連するメモリファイルをグループ化するコンテナです。エージェントはストアの名前と説明を読み取り、ストアを開いて内部のメモリを一覧表示するかどうかを決定します。メモリとメモリストアはエージェントメモリをサポートします。思い出の詳細については、「」を参照してくださいDevOps エージェントメモリ

2 つのステップでメモリを作成します。まず memory_store を作成します。次に、メモリの説明に従って、そのmemory内部にそれぞれを作成します。

必要なmetadataプロパティ:

  • name (文字列) – メモリストアの一意の識別子。小文字、数字、ハイフンのみ、1~128 文字。先頭または末尾にハイフンを使用しないでください。

  • description (文字列) – ストアが保持する内容の 1~1024 文字の説明。エージェントはこれを使用して、ストアを開くかどうかを決定します。

オプションのmetadataプロパティ:

  • agent_types (文字列の配列) – ストアを表示できるリードエージェントタイプ。を使用して["GENERIC"]、すべてのエージェントタイプにストアを表示します。

metadata:

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

メモリ

memory アセットは、メモリストアに属する個々のメモリファイルです。エージェントはメモリの名前と説明を読み取り、ファイル全体を読み取るかどうかを決定します。memory_store 最初に親を作成し、メモリmemory_store_id上の をストアのアセット ID に設定します。

必要なmetadataプロパティ:

  • name (文字列) – 小文字の kebab-case セグメントの /区切りパスとして書き込まれるメモリの識別子。1~255 文字 (例: databases/rds-failover)。

  • description (文字列) – メモリに含まれる内容の 1~1024 文字の説明。

  • memory_store_id (文字列) – このメモリが属するメモリストアのアセット ID。

オプションのmetadataプロパティ:

  • expires_at (数値) – エポック秒単位の保持期限。設定すると、期限が経過した後 (通常は 48 時間以内)、サービスは自動的にメモリを削除します。このプロパティを省略して、削除するまでメモリを保持します。

metadata:

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

test_profile

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

フィードバック

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

すべての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 (作業例については、「バイナリファイルからスキルを作成する」を参照)。

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

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

スキルend-to-endの管理

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

単一のテキストファイルからスキルを作成する

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

バイナリファイルからスキルを作成する

スキルコンテンツが 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 バンドルからスキルを作成する

スキルにSKILL.md、プラスのリファレンスマテリアルやアセットなど、複数のファイルが含まれている場合は、zip アップロードを使用します。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}}, )

リポジトリからスキルをインポートする

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

前提条件:

  • エージェントスペースには GitHub アカウントが関連付けられている必要があります。「GitHub の接続」を参照してください。

  • リポジトリディレクトリには、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.sourceUrlcontent.fileおよび content.zipと相互に排他的です。同じリクエストで組み合わせることはできません。

  • メタデータのみの更新 ( なしcontent) は、既存のインポートソースを保持し、リポジトリから再フェッチしません。

の取得、一覧表示、更新、削除

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 つのファイルを追加する

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

スキルのアクティブ化と非アクティブ化

スキルは でアクティベーション状態になります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" } } }'

で既存のスキルを非アクティブ化しますUpdateAssetmetadata は部分的な更新として適用されるため、 を送信する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" }'

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

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

AWS CloudFormation を使用したアセットの管理

インタラクティブまたはスクリプト駆動型の変更には、アセット API を使用します。アセットを宣言的に管理するには、 AWS CloudFormation でAWS::DevOpsAgent::Assetリソースとしてモデル化します。このアプローチを使用すると、アセットを他のインフラストラクチャとともにバージョン管理し、パイプラインを介してデプロイし、エージェントスペース間で再現できます。CloudFormation は、親エージェントスペースの子として各アセットを作成するため、テンプレートで定義したアセットは、CreateAsset呼び出しが生成するのとまったく同じリソースにマッピングされます。

すべてのアセットタイプは、同じAWS::DevOpsAgent::Assetリソースを通じて管理します。サポートされているタイプは、skill、、agents_mdattachmentcustom_agentmemory_storememorytest_profile、および ですfeedbackAssetTypeMetadata、および コンテンツのみが、タイプごとに異なります。次の例では、スキルとカスタムエージェントを作成します。他のタイプは、アセットタイプで説明されているメタデータを使用して、同じ形状に従います。

AWSリソース::DevOpsAgent::Asset

リソースプロパティは、このトピックで前述したCreateAssetリクエストフィールドに直接マッピングされます。

CloudFormation プロパティ タイプ マッピング対象 注意事項
AgentSpaceId String agentSpaceId 必須。作成専用 - 変更するとアセットが置き換えられます。
AssetType String assetType 必須。作成専用。アセットタイプ識別子 - 例: skillまたは custom_agentアセットタイプのタイプはすべて有効です。
Metadata JSON metadata API と同じメタデータドキュメント (スキルの場合: namedescriptionagent_types、およびオプションで status)。更新されました。
Files リスト content.file インラインファイル。それぞれに PathContentTextまたは がありContentBytes、ファイル ごとにオプションですMetadataZip と同時に使用することはできません。
Zip String content.zip.zipFile Base64-encodedされた zip バンドル。Files と同時に使用することはできません。
AssetId String asset.assetId 読み取り専用モード。を使用して を取得しますFn::GetAtt
Arn String asset.arn 読み取り専用モード。親エージェントスペースの下にネストされたアセット ARN。
Version 整数 asset.version 読み取り専用モード。更新が成功するたびにバンプされます。
CreatedAt / UpdatedAt String asset.createdAt / updatedAt 読み取り専用タイムスタンプ。

テンプレートを作成する前に 2 つの動作を呼び出す価値があります。

  • AgentSpaceIdAssetTypeは作成専用です。いずれかを変更すると、アセットが置き換えられます。CloudFormation は、新しい AssetIdと を使用して新しいアセットを作成しArn、古いアセットを削除します。コンテンツとメタデータの変更により、既存のアセットが更新されます。

  • CloudFormation はアセット全体、つまりメタデータとその完全なファイルセットを管理します。スキルを変更するには、テンプレートを編集してスタックを更新します。アセットの一部で動作するオペレーションはリソースの一部ではなく、API 専用のままです。これには、ファイルごとの編集 (CreateAssetFileUpdateAssetFileDeleteAssetFile) とバージョン履歴 () が含まれますListAssetVersions。また、コンテンツのダウンロード (GetAssetContent) とリポジトリのインポートと同期 (sourceUrlコンテンツタイプ) も含まれます。その場合は、このトピックで前述したように AWS CLI または SDK を使用します。

スキルを作成する

次のテンプレートは、 CLI AWS ウォークスルーで使用される単一ファイルrds-performance-investigationスキルを作成します。親エージェントスペース ID をパラメータとして受け取り、新しいアセットの ID と ARN をエクスポートします。

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

CLI AWS を使用してデプロイし、エージェントスペース ID を渡します。

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

にリファレンスドキュメントSKILL.mdを追加するなど、複数のファイルを出荷するスキルは、 にエントリを追加します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.

スキルの非アクティブ化を作成したり、後で非アクティブ化したりするには、 Metadata (「スキルのアクティブ化と非アクティブ化」を参照) statusで を設定し、スタックを更新します。

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

カスタムエージェントを作成する

カスタムエージェントは、異なる AssetTypeMetadata、および コンテンツを持つ同じリソースです。次のリソースは、一連のツールとスキルをキュレートするcustom_agentアセットを作成します。skills リストはnameメタデータによってスキルを参照するため、前に作成したスキルを参照できます。

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.

他のアセットタイプも同じように動作します。タイプに必要なMetadataキーを設定AssetTypeして指定します (アセットタイプを参照)。例えば、 agents_mdアセットは、 agent_type: INCIDENT_TRIAGEAGENTS.md ファイルAssetType: agents_mdMetadataを含む で設定されます。

トリガーを使用してカスタムエージェントをスケジュールする

カスタムエージェントを自動的に実行するには、 AWS::DevOpsAgent::Triggerリソースを追加します。トリガーはエージェントスペースの子です。そのアクションは、アセット ID で実行するカスタムエージェントを 形式で参照しますcustom:<assetId>Fn::GetAtt を使用してカスタムエージェントの を渡すAssetIdと、CloudFormation は 2 つのリソースをまとめて接続し、作成を注文します。

次のトリガーは、rds-firefighterカスタムエージェントを 1 日 1 回実行します。

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

AgentSpaceIdTypeCondition、および Actionプロパティは作成専用です。いずれかを変更すると、トリガーが置き換えられます。Status プロパティは Activeまたは を受け入れInactive、その場で更新できます。削除せずにトリガーを一時停止Inactiveするには、 に設定します。スケジュール式の構文の詳細については、「」を参照してくださいカスタムエージェントの実行

AWS::DevOpsAgent::Asset および AWS::DevOpsAgent::Triggerは、 AWS DevOps エージェントが提供される AWS リージョンで使用できます。サポートされている AWS リージョンの詳細については、「」を参照してくださいサポートされるリージョン。親エージェントスペース、IAM ロール、オペレーターアプリをコードとしてのインフラストラクチャとしてデプロイするには、「」を参照してくださいAWS CloudFormation を使用した AWS DevOps エージェントの開始方法

他のアセットタイプの例

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

メモリストアとメモリは同じCreateAssetオペレーションを使用します。最初にストアを作成し、次にメモリを作成します。メタデータの詳細については、「memory_store and memory」を参照してください。

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 ファイルからリクエストを作成します)。

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