メインコンテンツまでスキップ

GPU VM

共通規約​

  • Base URL: BASE_API_URL
  • Path: /bff/v1/gpu-vm/{orgIdentifier}/workspaces/{workspaceIdentifier}/{action}
  • Method: すべてPOST。
  • サービス固有ヘッダー: X-Region: <region>
  • 共通ヘッダー (apiClient): x-scope: workspace、X-Org-Id、X-Workspace-Id、X-User-Id
  • レスポンスエンベロープ: { "code": "", "message": "", "data": ..., "total": 0 }

トークンとヘッダーの取得方法​

  1. Portalにログインし、GPU Virtual Machineページを開く。
  2. ブラウザのDevToolsでNetworkタブを開き、gpu-vm.list リクエストを選択してAPIパス形式(orgIdentifier と workspaceIdentifier を含む)を確認する。
  3. 以下のリクエストヘッダーをコピーする: cookie、x-env、x-org-id、x-region、x-user-id、x-workspace-id。

エンドポイント一覧​

Flavor / Image / Storage policy​

#ActionクエリパラメータBody用途
1gpu-vm.flavor.listsearch、region{}GPUフレーバー一覧
2gpu-vm.image.list—{}OSイメージ一覧
3gpu-vm.storagepolicy.listoptionflavor_id{}ストレージポリシー一覧

Virtual machine​

#ActionクエリパラメータBody用途
4gpu-vm.listsearch、region{}VM一覧
5gpu-vm.listoptionregion、storage_type{}VMオプション一覧(ストレージのアタッチ用)
6gpu-vm.get—{ virtual_machine_id }VM詳細
7gpu-vm.create—下記参照VM作成
8gpu-vm.startregion{ virtual_machine_id }電源オン
9gpu-vm.stop—{ virtual_machine_id }電源オフ
10gpu-vm.reboot—{ virtual_machine_id }再起動
11gpu-vm.delete—{ virtual_machine_id }VM削除
12gpu-vm.monitorvirtual_machine_id{ virtual_machine_id }監視URL取得
13gpu-vm.console—{ virtual_machine_id }コンソールURL取得
14gpu-vm.calculateprice—{ flavor_id, storage_items[] }VM価格計算
15gpu-vm.port.edit.exposedports—{ virtual_machine_id, ports: number[] }公開ポートの更新
16gpu-vm.securitygroup.listbyvmsearch、region{ virtual_machine_id }VMに適用中のセキュリティグループ

Storage (disk)​

#ActionクエリパラメータBody用途
17gpu-vm.storage.listsearch、region、volume_type、storage_tier、status{}ストレージ一覧
18gpu-vm.storage.listbyvmsearch、region{ virtual_machine_id }VM別ストレージ一覧
19gpu-vm.storage.get—{ storage_id }ストレージ詳細
20gpu-vm.storage.checknamename{ name }名前の重複確認
21gpu-vm.storage.create—下記参照ストレージ作成
22gpu-vm.storage.edit—下記参照ストレージ編集
23gpu-vm.storage.attach—{ storage_id, virtual_machine_id }VMへのストレージアタッチ
24gpu-vm.storage.detach—{ storage_id }VMからのストレージデタッチ
25gpu-vm.storage.delete—{ storage_id }ストレージ削除
26gpu-vm.storage.calculateprice—{ type, quantity }ストレージ価格計算

Security group​

#ActionクエリパラメータBody用途
27gpu-vm.securitygroup.listsearch、region{}セキュリティグループ一覧
28gpu-vm.securitygroup.listoptionsearch、region{}オプション形式一覧
29gpu-vm.securitygroup.checknamesg_name{ sg_name }名前の重複確認
30gpu-vm.securitygroup.getsecurity_group_id{ security_group_id }詳細(ルール含む)
31gpu-vm.securitygroup.create—下記参照セキュリティグループ作成
32gpu-vm.securitygroup.rule.edit—下記参照ルール / 名前 / apply_toの編集
33gpu-vm.securitygroup.delete—{ security_group_id }セキュリティグループ削除

リクエストボディ​

7. gpu-vm.create​

全フィールドはtypeに応じてオプション。

{
"name": "my-vm",
"flavor_id": "...",
"image_id": "...",
"expose_ports": [22, 8888],
"security_group_id": "...",
"storage_type": "NVME | BLOCK",
"nvme_storages": [{ "id": "", "name": "", "storage_policy_id": "", "storage_policy_name": "", "disk_size_gb": 100, "description": "", "price": 0, "price_text": "" }],
"block_storages": [{ "id": "", "volume_type": "", "storage_policy_id": "", "storage_policy_name": "", "disk_size_gb": 100, "name": "", "price": 0, "price_text": "", "is_boot": true }],
"boot_volume": { "name": "boot", "storage_policy_id": "...", "disk_size_gb": 100 },
"data_volumes": [{ "name": "data", "storage_policy_id": "...", "disk_size_gb": 500 }],
"authentication_type": "SSH_KEY | PASSWORD",
"ssh_public_key": "ssh-ed25519 AAAA...",
"root_username": "root",
"root_password": "",
"cloud_init_script": "",
"billing_plan": "PAYG"
}

レスポンス: { id, name, gpu_id, gpu_flavor_id, image_id, public_ip, private_ip, status, created_at }。

14. gpu-vm.calculateprice​

{ "flavor_id": "...", "storage_items": [{ "storage_type": "BLOCK", "storage_policy_id": "...", "disk_size_gb": 100 }] }

レスポンス: { total_credit, total_currency, total_unit, credit_items: [{ sku, currency, credit, unit }] }。

15. gpu-vm.port.edit.exposedports​

レスポンス: { ports_added: number[], ports_deleted: number[] }。

21. gpu-vm.storage.create​

{ "name": "disk-1", "virtual_machine_id": null, "storage_type": "...", "storage_policy_id": "...", "disk_size_gb": 100 }

22. gpu-vm.storage.edit​

{ "storage_id": "...", "storage_policy_id": "...", "disk_size_gb": 200 }

23 / 24. gpu-vm.storage.attach / gpu-vm.storage.detach​

レスポンス: { ports_added, ports_deleted }。

26. gpu-vm.storage.calculateprice​

レスポンス: { name, quantity, credit, credit_unit, credit_currency }。

31. gpu-vm.securitygroup.create / 32. gpu-vm.securitygroup.rule.edit​

編集時は security_group_id をbodyに追加する。

{
"name": "sg-1",
"apply_to": ["<vm_id>"],
"inbound_rules": [{ "id": "", "type": "", "protocol": "TCP", "ip_type": "", "sources": ["0.0.0.0/0"], "port_ranges": ["22"], "action": "", "description": "" }],
"outbound_rules": [{ "id": "", "type": "", "protocol": "TCP", "ip_type": "", "destinations": ["0.0.0.0/0"], "port_ranges": ["All"], "action": "", "description": "" }]
}

レスポンス: { id, name, display_name, status }。

レスポンス​

Actionレスポンス
gpu-vm.flavor.list[{ id, name, description, type, gpu_id, gpu_name, info{cpu, ram, gpu, gpu_ram, storage_policy, volume_capacity, nvme_volume_type}, price_info{currency, value, unit}, display_order, is_nvme, is_nvme_available, is_block_storage_available, supported_storage_types[], is_available, images[{id, display_name}], region }]
gpu-vm.image.list[{ id, catalog, template, name, display_name, description, tooltip_data, logo, support_flavor_gpu[], min_boot_size_gb, region }]
gpu-vm.storagepolicy.listoption[{ id, name, storage_type, free_storage_size_gb, price_info, setting_data{free_block_storage_size_gb}, region }]
gpu-vm.list[{ id, name, os_image, root_disk, disk_type, billing_plan, flavor_type, flavor, status, created_at, created_by, updated_at, public_ip, private_ip, ports[], region }]
gpu-vm.listoption[{ id, name, region, vpc_id, status }]
gpu-vm.get{ id, name, image_name, image_display_name, flavor_id, gpu_flavor_id, flavor, flavor_type, storage_type, storage_capacity, created_at, created_by, updated_at, updated_by, private_ip, public_ip, user_name, ssh_key, status, billing_plan, ports[{port, status}], region }
gpu-vm.start / stop / rebootVirtualMachineDetail(gpu-vm.get と同じ)
gpu-vm.monitor{ url }
gpu-vm.console{ console_url }
gpu-vm.securitygroup.listbyvm[{ id, name, display_name, status, created_at, updated_at }]
gpu-vm.storage.list / listbyvm[{ id, name, volume_type, storage_type, storage_policy_id, storage_policy_name, disk_size_gb, region, vpc_id, attach_to{id, name}, status, created_at, created_by, updated_at, updated_by }]
gpu-vm.storage.get{ id, user_id, virtual_machine_id, name, volume_type, storage_type, storage_policy_id, disk_size_gb, created_at, created_by, updated_at, updated_by }
gpu-vm.storage.create / edit{ id, name, virtual_machine_id, storage_type, storage_policy_id, disk_size_gb }
gpu-vm.storage.checkname、gpu-vm.securitygroup.checkname{ is_duplicate: boolean }
gpu-vm.securitygroup.list[{ id, name, display_name, apply_to[{id, name}], is_default, status, created_at, created_by, updated_at, total_of_rule, total_of_virtual_machine, region }]
gpu-vm.securitygroup.listoption[{ id, name, display_name, region, is_default }]
gpu-vm.securitygroup.get{ id, name, region, display_name, apply_to[], is_default, created_at, created_by, inbound_rules[], outbound_rules[], status }
gpu-vm.delete、gpu-vm.storage.deleteレスポンスボディは使用しない。

エラーコード​

エラー形式​

エラー時、HTTPステータス ≠ 2xx でbodyは以下の形式:

{ "code": "GPU-VM-VM-00001", "message": "...", "params": { "port": 80 }, "role_based": false }
  • role_based: true — 呼び出し元のロール(MANAGEMENT / WS_ADMIN / MEMBER)によってメッセージが異なる。
  • HTTP 401 — クライアントはログアウトしてログインページにリダイレクトする。

共通エラーコード (gateway / BFF / billing)​

Code意味
INSUFFICIENT_BALANCEクレジット不足。MANAGEMENT ロールは自動でトップアップモーダルを開く。それ以外のロールはオーナーへの連絡を促される。
INSUFFICIENT_PERMISSIONSこの操作を実行する権限がない。
EQ-RESOURCE-SYSTEM-LIMITリソースのクォータに達した(params.name)。
BFF-CREATING-CONCURRENCYこのワークスペース/サービスで別のリソースが作成中。完了後に再試行する。
route_not_foundエンドポイントが存在しない。
method_not_allowedメソッドが間違っている。POSTのみ使用可能。
request_too_largeボディが64 KBを超えている。
invalid_tokenトークンが無効または期限切れ。
gateway_internal_errorゲートウェイ内部エラー。
upstream_unavailableバックエンドサービスが一時的に利用不可。
gateway_timeoutバックエンドサービスがタイムアウト。

GPU VM エラーコード​

共通 (GPU-VM-COMMON-*)​

Codeメッセージ
GPU-VM-COMMON-0001Something went wrong. Please try again later.
GPU-VM-COMMON-0002Missing required headers: {{headers}}
GPU-VM-COMMON-0003Invalid UUID format for header {{headerName}}: {{headerValue}}
GPU-VM-COMMON-0004Invalid role value in X-Portal-Roles header: {{role}}
GPU-VM-COMMON-0005Workspace admin access required.
GPU-VM-COMMON-0006Workspace member access required.
GPU-VM-COMMON-0007Request validation error.

Virtual machine (GPU-VM-VM-*)​

Codeメッセージ
GPU-VM-VM-00001Virtual machine not found.
GPU-VM-VM-00002Virtual machine status is invalid.
GPU-VM-VM-00003No available resources to create this VM. Please try a smaller flavor or contact FPT Support.
GPU-VM-VM-00004The port is being deleted. Please try again later.
GPU-VM-VM-00005Image not found.
GPU-VM-VM-00006Flavor not found.
GPU-VM-VM-00007Image is not supported.
GPU-VM-VM-00008The selected VM no longer exists. Please refresh and try again.
GPU-VM-VM-00009Virtual machine name is required. Please enter a valid name.
GPU-VM-VM-00010Invalid name. Name limits up to 40 characters. Only letters, numbers, and hyphens are allowed.
GPU-VM-VM-00011GPU flavor is required.
GPU-VM-VM-00012OS image is required.
GPU-VM-VM-00013Expose ports is required.
GPU-VM-VM-00014Expose port {{port}} is invalid.
GPU-VM-VM-00015Only one data volume is allowed.
GPU-VM-VM-00016Authentication type is required.
GPU-VM-VM-00017Authentication type is invalid.
GPU-VM-VM-00018SSH public key is required.
GPU-VM-VM-00019SSH public key is invalid format.
GPU-VM-VM-00020Password is required.
GPU-VM-VM-00021cloud_init_script is invalid.
GPU-VM-VM-00022Billing plan is invalid.
GPU-VM-VM-00023Port {{port}} is invalid.

Security group (GPU-VM-SG-*)​

Codeメッセージ
GPU-VM-SG-00001Security group not found.
GPU-VM-SG-00002The name already exists. Please enter a different one.
GPU-VM-SG-00003Invalid virtual machine ID.
GPU-VM-SG-00004Cannot delete the default security group.
GPU-VM-SG-00005Please detach this security group from any virtual machines before deleting.
GPU-VM-SG-00006Name is required. Please enter a valid name.
GPU-VM-SG-00007Invalid name. Name limits up to 32 characters. Only letters, numbers, and hyphens are allowed.
GPU-VM-SG-00008Duplicate rules.
GPU-VM-SG-00009Rule type is required.
GPU-VM-SG-00010Rule type is invalid.
GPU-VM-SG-00011Rule protocol is required.
GPU-VM-SG-00012Rule protocol is invalid. It must be one of: All, ICMP, TCP, UDP.
GPU-VM-SG-00013Rule IP type is required.
GPU-VM-SG-00014Rule IP type is invalid. Only IPv4 & IPv6 is supported.
GPU-VM-SG-00015Rule IP type is invalid. Only IPv4 & IPv6 is supported for outbound rules.
GPU-VM-SG-00016Rule source is required.
GPU-VM-SG-00017Rule destination is required.
GPU-VM-SG-00018Rule port range is required.
GPU-VM-SG-00019Rule action is required.
GPU-VM-SG-00020Rule action is invalid.
GPU-VM-SG-00021Rule protocol or port range does not match the selected type. Rule type '{{ruleType}}' requires protocol '{{expectedProtocol}}' and port range '{{expectedPortRange}}', but got protocol '{{actualProtocol}}' and port range '{{actualPortRange}}'.
GPU-VM-SG-00022Rule source is invalid: {{source}}.
GPU-VM-SG-00023Rule destination is invalid: {{destination}}.
GPU-VM-SG-00024Rule port range is invalid: {{port}}.
GPU-VM-SG-00025Custom rule port range: cannot be 'All'.
GPU-VM-SG-00026Rule description is invalid: {{description}}.

Storage (GPU-VM-SR-*)​

Codeメッセージ
GPU-VM-SR-00001Storage disk not found.
GPU-VM-SR-00002Storage policy not found.
GPU-VM-SR-00003Storage policy is invalid.
GPU-VM-SR-00004A volume with this name already exists in the region.
GPU-VM-SR-00005Storage disk has not been detached yet.
GPU-VM-SR-00006Another virtual machine has already been attached to this storage.
GPU-VM-SR-00007Storage disk status is invalid for update.
GPU-VM-SR-00008Storage disk status is invalid for attachment.
GPU-VM-SR-00009Storage disk status is invalid for detachment.
GPU-VM-SR-00010Storage disk status is invalid for deletion.
GPU-VM-SR-00011Only data volume is allowed to update.
GPU-VM-SR-00012Only block storage disks can be resized or changed to another storage tier.
GPU-VM-SR-00013Only data volume is allowed to attach.
GPU-VM-SR-00014Only data volume is allowed to detach.
GPU-VM-SR-00015Only data volume is allowed to delete.
GPU-VM-SR-00016The new capacity must be greater than current size.
GPU-VM-SR-00017Boot storage size must be between {{minSizeGb}} GB and {{maxSizeGb}} GB.
GPU-VM-SR-00018Data storage size must be between {{minSizeGb}} GB and {{maxSizeGb}} GB.
GPU-VM-SR-00019Name is required. Please enter a valid name.
GPU-VM-SR-00020Name limits up to {{maxLength}} characters.
GPU-VM-SR-00021Only lowercase letters, numbers, and hyphens are allowed. Must start with a letter.
GPU-VM-SR-00022Minimum capacity is {{minSizeGb}} GB, Maximum capacity is {{maxSizeGb}} GB. Please enter a valid number.