huawei-cloud-cloudrobo-asset について
CloudRobo CLI または Python SDK で CloudRobo プラットフォームのアセットを管理するスキルです。アセットとバージョンのライフサイクル、マーケット検索、ローカルファイルと OBS 間の入出力を扱います。
主な機能
- 01アセットとバージョンの作成・更新・削除
- 02リポジトリ、カタログ、アセットの検索
- 03タグと Action の管理
- 04権限とアセット系譜の確認
- 05マーケット検索と公開アセット一覧
- 06ローカルファイルと OBS 間の入出力
活用シーン
- 01アセットやバージョンの作成・更新
- 02マーケットのアセット検索と詳細確認
- 03ローカルのモデルやデータセットの登録
- 04バージョンの権限と親子関係の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-cloudrobo-assetインストール後、Claude Code で/huawei-cloud-cloudrobo-assetを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdapi-paths.mdcli-installation-guide.mddataflow-diagram.mdedge-cases.mdiam-policies.mdvalidation-rules.mdverification-method.mdscripts/test-cli-commands.shtemplates/test-vars.json詳細
Windows / PowerShell: 例では bash 構文を使用しています。Windows PowerShell で実行するには:
\による行継続を1行にまとめるか、各行の末尾にバッククォートを付けます。export NAME="value"の代わりに$env:NAME="value"で環境変数を設定します。- シングルクォートで囲んだ JSON
'{"a":"b"}'はそのまま使用できます。
概要
cloudrobo-asset スキルは、CloudRobo プラットフォームのアセットのライフサイクル全体を管理します。
リポジトリとカタログの照会、アセットの CRUD(作成/一覧表示/表示/更新/削除/一括削除)、
バージョンの CRUD、タグ管理、Action の CRUD、権限の確認、マーケットプレイスの検索、
公式/コミュニティのアセット一覧表示、アセットの系譜、およびローカルと OBS 間のインポート/エクスポートに対応しています。
適用シナリオ:
- アセットのライフサイクル — アセットとバージョンの作成、一覧表示、表示、更新、削除、一括削除
- インポート/エクスポート — ローカルフォルダーをアセットとして OBS にインポートし、アセットのバージョンをローカルパスにエクスポート
- マーケットプレイスでの検索 — マーケットプレイスのアセットを検索し、公式/コミュニティの公開アセットを一覧表示
- タグ管理 — タグの追加/削除、プラットフォームで事前定義されたタグ一覧の照会
- Action 管理 — アセットのバージョンに対する Action の作成/一覧表示/表示/更新/削除
- 権限の確認 — アセットのバージョンに対するユーザーの権限を確認
- 系譜 — アセットのバージョン間の親子関係を照会
アーキテクチャ:
Agent / LLM
│
├── CLI → cloudrobo asset <command>
├── SDK → AssetClient (Python)
│
▼
cloudrobo-asset-manager (REST API)
/v1/repositories
/v1/catalogs
/v1/assets/*
/v1/asset-service/search
/v1/asset-service/publication-assets
/v1/asset-tags
│
├── OBS (import/export file transfer)
└── cloudrobo-obs endpoint (configured separately)
すべての操作は cloudrobo-asset-manager バックエンドを対象とします。インポート/エクスポートには、
OBS ファイル転送用の cloudrobo-obs エンドポイントも必要です。
前提条件
CLI のインストール、AK/SK 認証、および設定については、references/cli-installation-guide.md を参照してください。
インポート/エクスポート操作では、~/.cloudrobo/config.yaml または
CLOUDROBO_ENDPOINT_cloudrobo-obs 環境変数を使用して cloudrobo-obs エンドポイントを設定する必要があります。
ワークフロー
前提手順:catalog_id の取得
複数のシナリオで catalog_id が必要です。ユーザーから指定されていない場合にのみ実行します:
- 現在のワークスペースから取得(推奨):
cloudrobo workspace current→
asset_catalog_idフィールドを読み取ります(現在のワークスペースに紐付けられたカタログです) - フォールバック — リポジトリとカタログの一覧表示: ワークスペースが設定されていない場合、または
asset_catalog_idが空の場合:cloudrobo asset list-repositories→repository_idを取得しますcloudrobo asset list-catalogs --repository-id <repo-id>→catalog_idを取得します
シナリオ 1:ローカルアセットのインポート
ローカルファイル(モデル、データセットなど)を CloudRobo アセットリポジトリにインポートします。
最短手順: local-path/README.md が有効なフロントマターとともに存在する場合(以前の
export-asset で作成したものなど)、必要なのは --catalog-id(新規アセットの場合)または --asset-id(新しいバージョンの場合)のみです
— その他のメタデータはすべてフロントマターから読み取られます。フロントマターがない場合は、catalog_id、name、type
(シミュレーションの場合は sub_type も)を CLI で指定する必要があります。
- (新規アセットの作成時に
catalog_idが不足している場合のみ)「前提条件:catalog_id の取得」を実行します - インポートします:
# With frontmatter (recommended — after export) cloudrobo asset import-asset --catalog-id <id> --local-path <path> # Without frontmatter cloudrobo asset import-asset --catalog-id <id> --name <name> --type <type> --local-path <path> [--sub-type <sub-type>] [--ext-metadata '{"key":"value"}']local-path/README.mdのフロントマターからメタデータ(name、type、sub_type、description、 status、tags、version、ext_metadata、parent_asset_version_id、generation_method)を自動的に読み取ります- フロントマターの値は CLI パラメーターより優先されます(catalog_id を除く。CLI でのみ指定可能)。どちらにもないフィールドがあるとエラーになります
--ext-metadataCLI パラメーターもサポートされます(フロントマターが優先されます)- API 呼び出し前に、タイプに応じて ext_metadata を事前検証します(model→model_type、dataset→annotation_status、 algorithm→engine+command、image→arch+device_type、simulation(sub_type=robot)→robot_type+robot_manufacturer)
- アセットとバージョンを自動作成し、OBS にアップロードします
- 既存アセットに新しいバージョンを追加する場合:
--asset-id <existing-asset-id>を追加します - 既存バージョンをアップロードの再試行に再利用する場合:
--asset-id <id> --version-id <vid>を追加します(ファイルを直接アップロードします。同名の OBS オブジェクトは冪等に上書きされます)
タイプの制約:
imageタイプはimport-assetではサポートされません — image はローカルコードのアップロードを伴わない SWR 参照です。代わりにcreate-assetを使用してください(それ以外の場合、CLI はUsageErrorを発生させます)algorithmタイプはサポートされています — algorithm をインポートすると、ローカルコードが OBS のcode_dirにアップロードされます:
Algorithm のインポートフロー(自動、Mode 1 と Mode 2):# Mode 1: new asset cloudrobo asset import-asset --catalog-id <id> --name <name> --type algorithm --tags "Train" --ext-metadata '{"engine":{"image_url":"swr...","image_source":"custom"},"command":"python train.py"}' --local-path ./algo-dir # Mode 2: new version for existing algorithm asset (no --catalog-id needed) cloudrobo asset import-asset --asset-id <existing-algo-asset-id> --type algorithm --tags "Train" --ext-metadata '{"engine":{"image_url":"swr...","image_source":"custom"},"command":"python train.py"}' --local-path ./algo-dir--tagsが必須であることを検証します(指定可能な値:Data Processing/Train)- Mode 2 では
--ext-metadataが必須です(engineとcommandを含める必要があります)。指定しない場合は ValueError、無効な値を指定した場合は ValidationError が発生します - catalog.url を取得します(Mode 2 ではアセット詳細から取得するため、
--catalog-idは不要です)。code_dir = {catalog.url}/pendingをプレースホルダーとしてアセットとバージョンを作成します(プリセットのイメージバックエンドでは code_dir が必要です) - アセットとバージョンを作成し、asset_id と version_id を取得します
- ローカルコードを
{catalog.url}/{asset_id}/{version_id}/にアップロードします - アセットレベルとバージョンレベルの両方の ext_metadata で、
code_dirを実際のアップロード先パスに更新します(プレースホルダーのpendingをクリアします)
- algorithm では
--asset-id --version-id(Mode 3)はサポートされません — ValueError が発生します(バージョンの再利用はサポートされていません。新しいバージョンには--asset-idを使用してください) - Mode 3 では SDK レイヤーでも image アセットが拒否されます(CLI だけではありません)— ValueError "import_asset does not support image assets" が発生します
- 検証します:
cloudrobo asset show-asset --asset-id <asset-id>
エラーからの復旧: OBS へのアップロード時にインポートが失敗した場合(アセットとバージョンは作成されたものの、ファイルがアップロードされず、バージョンが CREATING ステータスのままの場合)、新しいバージョンを作成しないでください。復旧方法は 2 つあります:
- バージョンを再利用する(推奨):
list-versions --asset-id <id>で失敗したバージョンを確認し、import-asset --asset-id <id> --version-id <vid>を再実行して直接アップロードします(すべてのファイルを再試行します。 アップロードに成功すると、バージョンはDRAFTに遷移します) - 削除して再試行する:
delete-version --asset-id <id> --version-id <vid>を実行してから、import-asset --asset-id <id>を再実行します
シナリオ 2:Marketplace のアセットを検索
- 検索:
cloudrobo asset search-assets --keyword <keyword> - 詳細を表示:
cloudrobo asset show-asset --asset-id <asset-id>
公式/コミュニティを閲覧: cloudrobo asset list-publication-assets --type <type>
検索後にエクスポート: ユーザーがエクスポートをリクエストした場合に限ります。Marketplace アセットの権限に data_read が含まれていない場合、エクスポートは許可されません。cloudrobo asset export-asset --asset-id <id> --local-path <path>(デフォルトでは最新バージョンです。特定のバージョンを指定するには --version-id を追加します)。エクスポート時に、アセットのメタデータを含む YAML frontmatter 付きの README.md が自動生成されるため、最小限の CLI パラメーターでシームレスに再インポートできます。
シナリオ 3:ワークスペースのアセットを一覧表示
- (catalog_id がない場合のみ)「前提条件:catalog_id の取得」を実行します。
- 一覧表示:
cloudrobo asset list-assets --catalog-id <catalog-id>--type、--sub-type、--statusで絞り込みます- または、リポジトリレベルのクエリには
--catalog-idの代わりに--repository-idを使用します
シナリオ 4:アセットのバージョンを一覧表示
- asset_id がわかっている場合は、手順 3 に進みます
- (asset_id がない場合のみ)「前提条件:catalog_id の取得」を実行してから、
list-assets --catalog-id <id>でasset_idを特定します - バージョンを一覧表示:
cloudrobo asset list-versions --asset-id <asset-id>
シナリオ 5:拡張メタデータ付きのアセットを作成
model、dataset、simulation、algorithm、image タイプでは、作成時に ext_metadata が必要です。タイプごとの必須フィールドについては、
references/validation-rules.md を参照してください。
- (catalog_id がない場合のみ)「前提条件:catalog_id の取得」を実行します
- 作成:
cloudrobo asset create-asset --catalog-id <id> --name <name> --type model --ext-metadata '{"model_type":"planning"}' - バージョンを作成:
cloudrobo asset create-version --asset-id <id> --version 1.0.0 --ext-metadata '{"model_type":"planning"}'
タスクシナリオタグの制約(algorithm/image タイプ):
- 作成時に
--tagsが必須です(タスクシナリオタグを 1 つ以上指定) - algorithm で使用できるタグ:
Data Processing、Train - image で使用できるタグ:
Data Processing、Notebook、Online Deployment、Train - algorithm が image を参照する場合(
ext_metadata.engine.asset_id)、algorithm のタグは image のタグのサブセットである必要があります(SDK が検証し、そうでない場合はValidationErrorが発生します)
シナリオ 6:タグを管理
- 追加:
cloudrobo asset add-tags --asset-id <id> --tags "tag1,tag2" - 削除:
cloudrobo asset delete-tag --asset-id <id> --tag <tag> - 定義済みタグを照会:
cloudrobo asset list-tags --language zh(--type/--sub-typeでの絞り込みは任意)
CLI コマンド形式の標準
cloudrobo asset <command> [OPTIONS]
| 機能 | 説明 | 例 |
|---|---|---|
| コマンドグループ | cloudrobo asset | cloudrobo asset list-assets |
| サブコマンド | ケバブケース | list-repositories、create-asset、import-asset |
| JSON パラメーター | --ext-metadata '{"key":"value"}' | --ext-metadata '{"model_type":"planning"}' |
| カンマ区切りのリスト | --tags tag1,tag2 | --tags robot,arm |
| ドライラン | --dry-run(対応している場合) | 実行せずにプレビュー |
| 出力形式 | 標準出力への JSON | out(result) |
| UUID 識別子 | --asset-id、--version-id、--catalog-id | UUID 形式が必要 |
コアコマンド
リポジトリとカタログ
| コマンド | 主なパラメーター | SDK メソッド | API |
|---|---|---|---|
| list-repositories | [--name] [--sort-dir] [--offset] [--limit] | client.list_repositories(**params) | GET /v1/repositories |
| list-catalogs | --repository-id <id> [--name] [--sort-dir] [--offset] [--limit] | client.list_catalogs(repository_id, **params) | GET /v1/catalogs |
| show-catalog | --catalog-id <id> | client.show_catalog(catalog_id) | GET /v1/catalogs/{catalog_id} |
アセット管理
アセットを作成
cloudrobo asset create-asset --catalog-id <catalog-id> --type <type> [--name <name>] [--sub-type <sub-type>] [--description <desc>] [--status <status>] [--tags "tag1,tag2"] [--url <obs-or-swr-path>] [--ext-metadata '{"key":"value"}'] [--parent-asset-version-id <uuid>] [--generation-method <method>] [--dry-run]
- SDK:
client.create_asset(req: dict) - API:
POST /v1/assets
注: algorithm/image タイプでは、--tags が必須です(タスクシナリオタグ)。
- algorithm タグ:
Data Processing、Train - image タグ:
Data Processing、Notebook、Online Deployment、Train - algorithm がイメージを参照する場合(
engine.asset_id)、algorithm のタグは image のタグのサブセットである必要があります(SDK が検証し、そうでない場合はValidationErrorを発生させます) --sub-typeはsimulationにのみ適用されます。algorithm/imageでは無視されます(クライアントは API 呼び出し前にこの値を削除します)
アセットを一覧表示
cloudrobo asset list-assets [--repository-id <id>] [--catalog-id <id>] [--type <type>] [--sub-type <sub-type>] [--status <status>] [--name <name>] [--tags "tag1,tag2"] [--mine] [--offset <n>] [--limit <n>]
# Either --repository-id OR --catalog-id filters the list. Full parameter list: see references/api-paths.md → List Assets
- SDK:
client.list_assets(**params) - API:
GET /v1/assets
注: repository-id と catalog-id は、少なくともいずれか一方を指定する必要があります。両方を指定すると AND フィルターになります。
アセットを更新
cloudrobo asset update-asset --asset-id <asset-id> [--name <name>] [--description <desc>] [--status <status>] [--tags "tag1,tag2"] [--ext-metadata '{"key":"value"}'] [--dry-run]
- SDK:
client.update_asset(asset_id, req: dict) - API:
PUT /v1/assets/{asset_id}
注: update-asset で変更できるのは name/description/status/tags/
ext-metadata のみです。CLI には catalog_id、type、sub_type、
url、parent_asset_version_id、generation_method のパラメーターがないため、
これらのフィールドは変更できません。
| コマンド | 主なパラメーター | SDK メソッド | API |
|---|---|---|---|
| show-asset | --asset-id <id> | client.show_asset(asset_id) | GET /v1/assets/{asset_id} |
| delete-asset | --asset-id <id> [--dry-run] | client.delete_asset(asset_id) | DELETE /v1/assets/{asset_id} |
| batch-delete-assets | --asset-ids "id1,id2" [--dry-run] | client.batch_delete_assets({"asset_ids": [...]}) | POST /v1/assets/batch-delete |
バージョン管理 版本管理
バージョンを作成
cloudrobo asset create-version --asset-id <asset-id> [--version <version>] [--description <desc>] [--status <status>] [--url <obs-or-swr-path>] [--ext-metadata '{"key":"value"}'] [--parent-asset-version-id <uuid>] [--generation-method <method>] [--dry-run]
- SDK:
client.create_asset_version(asset_id, req: dict) - API:
POST /v1/assets/{asset_id}/versions
バージョンを一覧表示
cloudrobo asset list-versions --asset-id <asset-id> [--version <version>] [--exact-version <version>] [--sort-key <field>] [--sort-dir <asc|desc>] [--offset <n>] [--limit <n>] [--actions "FFT,LORA"] [--actions-operator <and|or>] [--ext-metadata <key=value>] [--action-status "ENABLE,DISABLE"]
- SDK:
client.list_asset_versions(asset_id, **params) - API:
GET /v1/assets/{asset_id}/versions
バージョンを更新
cloudrobo asset update-version --asset-id <asset-id> --version-id <version-id> [--version <version>] [--description <desc>] [--status <status>] [--ext-metadata '{"key":"value"}'] [--dry-run]
- SDK:
client.update_asset_version(asset_id, version_id, req: dict) - API:
PUT /v1/assets/{asset_id}/versions/{version_id}
注: update-version で変更できるのは version/description/status/
ext-metadata のみです。CLI には url、parent_asset_version_id、generation_method のパラメーターがないため、
これらのフィールドは変更できません。
| コマンド | 主なパラメーター | SDK メソッド | API |
|---|---|---|---|
| show-version | --asset-id <id> --version-id <vid> | client.show_asset_version(asset_id, version_id) | GET /v1/assets/{asset_id}/versions/{version_id} |
| delete-version | --asset-id <id> --version-id <vid> [--dry-run] | client.delete_asset_version(asset_id, version_id) | DELETE /v1/assets/{asset_id}/versions/{version_id} |
| batch-delete-versions | --asset-id <id> --version-ids "v1,v2" [--dry-run] | client.batch_delete_asset_versions(asset_id, {"version_ids": [...]}) | POST /v1/assets/{asset_id}/versions/batch-delete |
タグ管理 标签管理
| コマンド | 主なパラメーター | SDK メソッド | API |
|---|---|---|---|
| add-tags | --asset-id <id> --tags "t1,t2" [--dry-run] | client.add_tags(asset_id, tags) | POST /v1/assets/{asset_id}/tags |
| delete-tag | --asset-id <id> --tag <tag> [--dry-run] | client.delete_tag(asset_id, tag) | DELETE /v1/assets/{asset_id}/tags/{tag} |
| list-tags | --language <zh|en> [--type] [--sub-type] | client.list_all_tags(language, type, sub_type) | GET /v1/asset-tags |
アクション管理
| コマンド | 主なパラメーター | SDK メソッド | API |
|---|---|---|---|
| list-actions | --asset-id <id> --version-id <vid> | client.list_asset_actions(asset_id, version_id) | GET /v1/assets/{asset_id}/versions/{version_id}/actions |
| show-action | --asset-id <id> --version-id <vid> --action <name> | client.show_asset_action(asset_id, version_id, action) | GET .../actions/{action} |
| delete-action | --asset-id <id> --version-id <vid> --action <name> [--dry-run] | client.delete_asset_action(asset_id, version_id, action) | DELETE .../actions/{action} |
アクションの作成/更新(詳細):
cloudrobo asset create-action --asset-id <id> --version-id <vid> --action-info '{"action":"FFT","algorithm":{"asset_id":"...","version_id":"..."},"status":"ENABLE"}' [--dry-run]
# SDK: client.create_asset_action(asset_id, version_id, req)
# API: POST /v1/assets/{asset_id}/versions/{version_id}/actions
# action-info supports single action object {"action":"FFT",...} or batch {"actions":[{...},{...}]}
cloudrobo asset update-action --asset-id <id> --version-id <vid> --action <name> --action-info '{"status":"DISABLE"}' [--dry-run]
# SDK: client.update_asset_action(asset_id, version_id, action, req)
# API: PUT /v1/assets/{asset_id}/versions/{version_id}/actions/{action}
権限とリネージュ
| コマンド | 主なパラメーター | SDK メソッド | API |
|---|---|---|---|
| check-permission | --asset-id <id> --version-id <vid> --permissions "meta_read,data_read" | client.check_asset_permission(asset_id, version_id, req) | POST .../check-permission |
| show-lineage | --asset-id <id> --version-id <vid> --type <children|parent> | client.show_asset_tree(asset_id, version_id, type) | GET .../tree?type=<children|parent> |
有効な権限:meta_read、meta_write、data_read、data_write、data_usable
リネージュ:children=親から子、parent=子から親。
マーケットプレイス
| コマンド | 主なパラメーター | SDK メソッド | API |
|---|---|---|---|
| search-assets | --keyword <kw> [--type] [--limit] [--offset] | client.search_assets(req) | POST /v1/asset-service/search |
| list-publication-assets | [--type] [--sub-type] [--name] [--tags] [--status] [--capabilities] [--offset] [--limit] | client.list_publication_assets(**params) | GET /v1/asset-service/publication-assets |
パラメーターの一覧:references/api-paths.md → List Publication Assets を参照
インポートとエクスポート
アセットのインポート
cloudrobo asset import-asset --local-path <local-folder> [--catalog-id <id>] [--name <name>] [--type <type>] [--sub-type <sub-type>] [--tags "tag1,tag2"] [--ext-metadata '{"key":"value"}'] [--asset-id <id>] [--version-id <vid>] [--dry-run]
タイプの制約:
imageタイプはサポートされません — CLI はUsageErrorを発生させます。代わりにcreate-assetを使用してくださいalgorithmタイプはサポートされています(モード 1 とモード 2) — ローカルコードを{catalog.url}/{asset_id}/{version_id}/にインポートします。作成時のcode_dirプレースホルダーは{catalog.url}/pendingで、その後アセットレベルとバージョンレベルの両方で実際のパスに更新されます。ユーザーはcode_dir/boot_fileを指定してはいけません。モード 2 ではアセットの詳細から catalog_id を取得するため、--catalog-idは不要です- モード 3(
--asset-id --version-id)はalgorithmではサポートされません — ValueError が発生します
フロントマターのサポート:
local-path/README.mdの YAML フロントマターを自動的に読み取ります- フィールド:
name、type、sub_type、description、status、tags、version、ext_metadata、parent_asset_version_id、generation_method - 優先順位:フロントマターが CLI パラメーターより優先されます(catalog_id を除く。catalog_id は CLI のみ)。どちらにもないフィールドはエラーになります
- 新しいアセットに必須のフィールド:
catalog_id(CLI のみ)、name(フロントマターまたは CLI)、type(フロントマターまたは CLI) - 新しいバージョン(
--asset-id)に必須:ext_metadata(バックエンドは model/dataset/image/simulation で必須としています。--ext-metadataまたはフロントマターで指定してください) - ext_metadata の事前検証:model/dataset/algorithm/image/simulation タイプは API 呼び出し前に検証されます(robot は simulation のサブタイプです)
モード:
--asset-idを指定しない場合:新しいアセットとバージョンを作成し、OBS にアップロードします。アップロード後、バージョンのステータスがCREATINGの場合は、自動的にDRAFTに更新します--asset-idのみを指定する場合:既存のアセットに新しいバージョンを作成し、OBS にアップロードします。ext_metadataが必須です(バックエンドは model/dataset/image/simulation で検証します。--ext-metadataまたはフロントマターで指定してください)。アップロード後、バージョンのステータスがCREATINGの場合は、自動的にDRAFTに更新します--asset-idと--version-idを指定する場合:既存のバージョンを再利用し、ファイルを OBS に直接アップロードします(同じ名前のオブジェクトはべき等に上書きされます)。アップロード後、バージョンのステータスがCREATINGの場合は、自動的にDRAFTに更新します。algorithmアセットではサポートされません(ValueError が発生します)
ステータスの流れ: --status が指定されていない場合、バックエンドはバージョンのステータスを CREATING にして作成します。OBS へのアップロードが成功した後、バージョンのステータスが CREATING のままであれば、SDK は update-version を自動的に呼び出して DRAFT に設定します。ユーザーがステータスを明示的に指定した場合(例:フロントマターで RELEASE を指定した場合)、アップロードは成功しますが、ステータスは自動的に変更されません。
アセットのエクスポート
cloudrobo asset export-asset --asset-id <id> --local-path <local-folder> [--version-id <version-id>] [--dry-run]
タイプの制約:
imageタイプはサポートされません — ダウンロード可能なファイルがないため、ValueError が発生します(SWR の参照)。代わりにcreate-assetを使用してくださいalgorithmタイプはサポートされています —ext_metadata.code_dirの OBS パスからコードをダウンロードします。code_dirがない場合は、復旧方法の案内とともに RuntimeError が発生します
パスの要件: --local-path は既存のディレクトリである必要があります(見つからない場合は FileNotFoundError、ファイルの場合は ValueError が発生します)。SDK はダウンロードしたファイル用のサブディレクトリ {local-path}/{asset_id}/ をその中に作成します。
README.md の生成:
- YAML フロントマターを含む
<local-path>/<asset-id>/README.mdを作成します - フロントマターのフィールド:
name、type、sub_type、description、status、tags、version、ext_metadata、parent_asset_version_id、generation_method - README.md がすでに存在する場合、本文の内容を保持し、フロントマターのみを置き換えます
- 最小限の CLI パラメーターでシームレスに再インポートできます
パラメーターの確認
| パラメーター | 必須 | 説明 | 例 |
|---|---|---|---|
--catalog-id | 条件付き(新規アセットのインポート、ほとんどのコマンド) | カタログ UUID | b2c3d4e5-f6a7-... |
--asset-id | はい(アセット/バージョン操作) | アセット UUID | a1b2c3d4-... |
--version-id | はい(バージョン操作) | バージョン UUID | d4e5f6a7-b8c9-... |
--type | 条件付き(フロントマターなしでインポートする場合) | アセットタイプ | model、dataset、algorithm、image、simulation |
--name | 条件付き(フロントマターなしでインポートする場合) | アセット名 | my-model |
--sub-type | 条件付き(simulation のみ) | アセットの sub_type。algorithm/image では sub_type を受け付けなくなりました(指定されてもクライアントが削除します) | simulation:robot、environment、object、scene |
--local-path | はい(インポート/エクスポート) | ローカルフォルダーのパス | ./my-model |
--ext-metadata | 条件付き(model/dataset/algorithm/image/simulation) | 拡張メタデータ JSON | {"model_type":"planning"} |
--language | はい(list-tags) | タグの言語 | zh、en |
--permissions | はい(check-permission) | 権限リスト | meta_read,data_read |
--dry-run | いいえ | 実行せずにプレビュー | フラグ |
--description | いいえ | アセット/バージョンの説明 | My model description |
--status | いいえ | アセット/バージョンのステータス | CREATING、DRAFT、RELEASE など |
--tags | 条件付き(algorithm/image の作成) | タグリスト(カンマ区切り)。algorithm/image の作成時は必須です。algorithm のタグは、参照先の image タグのサブセットである必要があります。更新時は全置換されます | Data Processing,Train |
--url | いいえ | OBS または SWR のパス(create-asset/create-version のみ) | obs://bucket/path |
--generation-method | いいえ | アセットの生成方法(create-asset/create-version のみ) | manual |
--parent-asset-version-id | いいえ | 親バージョンの UUID(create-asset/create-version のみ) | d4e5f6a7-... |
変更を伴う操作(作成/更新/削除/インポート/エクスポート/一括削除)は、実行前に
ユーザーの確認を受けてください。--dry-run を使用すると、安全に操作をプレビューできます。
参考ドキュメント
- CLI のインストールガイド — cloudrobo CLI のインストールと設定
- IAM ポリシー — 最小権限の認証情報モデル
- 検証方法 — 検証方法の詳細
- データフロー図 — Mermaid データフロー図
- 受け入れ基準 — 受け入れ基準
- API パス — SDK ソースから確認した REST API パス
- 検証ルール — フィールド検証、ext_metadata のルール、パラメーターの相互作用
- エッジケース — エッジケースとエラー処理
エッジケース
主なエッジケースには、catalog_id の欠落、OBS アップロード失敗時のインポート復旧、エクスポート時の
権限チェック、不変フィールドの検証、組み込みアセットとワークスペースアセットの区別、
capabilities フィルターのマッピングがあります。すべての項目については、エッジケースを
参照してください。
検証方法
# Specification compliance + functional testing
bash scripts/test-cli-commands.sh . --executor {cli|sdk|api}
テストケース:すべてのアセット操作を網羅した一覧については、templates/test-vars.json を参照してください。
検証チェックリスト
- 作成/更新/インポート後:
show-asset/show-version/list-actionsで変更が反映されたことを確認します - list/search/check-permission の実行後:結果がフィルター条件と一致し、
verdictにallow/denyが含まれていることを確認します - 削除前:ユーザーに確認します。削除は取り消せません
- エクスポート後:ローカルディレクトリのファイル構造が OBS のソースと一致することを確認します
ベストプラクティス
- 実行前にパラメーターを検証するには、create/update/delete/import/export で
--dry-runを使用します - ext_metadata を指定してアセットを作成する前に、タイプごとの必須フィールドを
references/validation-rules.mdで確認します - ほとんどのシナリオでは、(
create-assetではなく)import-assetを使用します。全体のフロー(アセット+バージョン+OBS アップロード)が処理されます - インポートに失敗した場合は、空のバージョンが増えないよう、
--asset-id --version-idを指定して既存のバージョンを再利用します - タグが有効であることを確認するため、タグを追加する前に
list-tagsで定義済みタグを照会します - アセットをスムーズに移行するには、
export-assetの後にimport-assetを使用します。エクスポートで frontmatter 付きの README.md が生成され、インポート時に自動で読み取られてメタデータに反映されます - frontmatter なしでインポートする場合、事前検証を通過するために、model/dataset/simulation タイプでは
--ext-metadataを指定します