创建实例
/instance/create
创建一个新实例。
授权
你可以在请求头(Request Header)中找到 AccessToken,或者从网页复制(Copy Auth Token)。
该 Token 在每次登录时生成,有效期为一天。
你也可以通过调用登录 API 来获取新的 Token。参考 登录 API。
AccessToken 需要作为 cookie 包含在请求中。在下面的 cURL 示例中,可以看到使用 -b
参数传递 token:
-b 'AccessToken=your_token_here'
注意:请将 your_token_here
替换为实际的 AccessToken。
该 Token 是一个 JWT(JSON Web Token),其中包含了认证信息和权限。
请求体
你可以在网页的 “启动实例” 页面导出请求体。只需完成实例配置即可导出数据。
请求体的详细字段如下:
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 实例名称 |
imageId | string | 是 | 实例使用的镜像 ID |
instanceTypeId | string | 是 | 实例类型 ID |
region | string | 是 | 实例启动所在的区域 ID |
billing | object | 是 | 实例的计费配置 |
remoteStorages | array | 是 | 远程存储配置数组 |
instanceConfiguration | object | 是 | 额外的实例配置信息 |
isSpotInstance | boolean | 否 | 是否为抢占式实例(默认:false) |
nodePorts | array | 是 | 节点端口配置数组 |
计费配置(Billing Configuration)
billing
对象包含以下字段:
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
chargeMode | string | 是 | 计费模式("tidePerHour"、"perHour"、"perDay"、"perWeek"、"perMonth") |
duration | number | 是 | 当选择 "perDay"、"perWeek"、"perMonth" 时,表示订阅周期。例如:duration: 3 且 chargeMode=perWeek 表示订阅 3 周。如果选择 "perHour"/"tidePerHour",应为 1。 |
远程存储配置(RemoteStorages Configuration)
remoteStorages
数组中每个对象包含以下字段:
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
mountPath | string | 是 | 实例中的挂载路径 |
remoteStorageName | string | 是 | 远程存储名称 |
remoteStorageId | string | 是 | 远程存储唯一 ID |
type | string | 是 | 存储类型(如 highspeedstorage、filesystem) |
实例配置(Instance Configuration)
instanceConfiguration
对象包含以下字段:
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
extraDataDiskSizeDB | number | 否 | 额外数据盘大小(单位:GB,默认:0) |
enableCommonData | boolean | 是 | 是否启用公共数据存储(默认:false) |
enableDocker | boolean | 是 | 是否启用 Docker 支持(默认:false) |
dockerStorageSize | number | 否 | Docker 存储大小(单位:GB,默认:0) |
initScript | string | 是 | 启动时运行的初始化脚本 |
请求示例
{
"name": "example-instance",
"imageId": "7a81788c-xxxx-xxxx-xxxx-2409e3c8150c",
"instanceTypeId": "dc25f5be-xxxx-xxxx-xxxx-5030e3358c41",
"region": "fce31a0c-xxxx-xxxx-xxxx-41caa1bdd251",
"billing": {
"chargeMode": "perHour",
"duration": 1
},
"remoteStorages": [
{
"mountPath": "/root/highspeedstorage/example-volume",
"remoteStorageName": "example-volume",
"remoteStorageId": "f6a6345e-xxxx-xxxx-xxxx-e52e330cfaec",
"type": "highspeedstorage"
}
],
"instanceConfiguration": {
"extraDataDiskSizeDB": 0,
"enableCommonData": false,
"enableDocker": true,
"dockerStorageSize": 50,
"initScript": ""
},
"isSpotInstance": false,
"nodePorts": [7891, 7892]
}
cURL 示例
curl 'https://cloud.luchentech.com/api/instance/create' \
-H 'content-type: application/json' \
-b 'AccessToken=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGxhdGZvcm0uY29sb3NzYWxhaS5jb20iXSwiZXhwIjoxNzUxNTI5Njg2LCJncm91cCI6WyJhZG1pbiJdLCJpYXQiOjE3NTE0NDMyODYsImlzcyI6ImNsb3VkLmx1Y2hlbnRlY2guY29tIiwic3ViIjoiMDhmNmYyNjEtYTc2Ni00NjNlLThiYTQtODVlNmFlMzJmNDkyIn0.pnTtcw2Spns2Xi_knR_LclTt4eJGUK-lDzIJxHEDi13p7gACVKpJz548QZGq891lg7jpiKpn4QJRgNYxrZQmSThmZVSbJnwmttz01ijy1cGKuq61UI3zaHLPIyVDhqVVjuch0KedFFC9ahr4jSPf6-7ibgaTN7ozHWsMkLKjDyDUPjYfAdfmIz2dtSxJ0WBC6-c4BkwcKOCjHj3eye9BI9c74JUOTVNinwIoKdOzdF5mqI83rVuVpS_7lSAfrsdscqFXRiGtHcHLrb9nLs2Jcv5IkIdnKo5zzRNdpKWYhQWPYKowSlSWDa5eZv-hw3EsyhiQAByZ5x6yYYn_R5Hxxxx' \
--data-raw '{"name":"example-instance","imageId":"7a81788c-xxxx-xxxx-xxxx-2409e3c8150c","instanceTypeId":"c531be90-xxxx-xxxx-xxxx-59d3d911e29e","region":"fce31a0c-xxxx-xxxx-xxxx-41caa1bdd251","billing":{"chargeMode":"perHour","duration":1},"remoteStorages":[],"instanceConfiguration":{"enableCommonData":false,"enableDocker":false, "initScript": ""},"nodePorts":[]}'
响应示例
成功响应
{
"instanceId": "notebook-78d36d6a-xxxx-xxxx-xxxx-eea5891c2019"
}
错误响应
{
"message": "字段 \"instanceConfiguration.enableDocker\" 未设置"
}
{
"code": -1,
"message": "未登录或登录已过期,请重新登录"
}