创建BEC虚机服务
接口描述
本接口用于创建BEC虚机服务以及相应的虚机实例。
请求结构
POST /v1/vm/service HTTP/1.1
Host: bec.baidubce.com
Authorization: authorization string
{
"serviceName": serviceName,
"vmName": vmName,
"paymentMethod": paymentMethod,
"reservation": {
"length": 1,
"timeUnit": "month"
},
"autoRenew": {
"length": 6,
"timeUnit": "month"
},
"needPublicIp": needPublicIp,
"bandwidth": bandwidth,
"deployInstances": [
{
"regionId": regionId,
"region": region,
"serviceProvider": serviceProvider,
"city": city,
"networkType":"vpc",
"vpcId": vpcId,
"subnetId": subnetId,
"replicas": replicas
},
{
"regionId": regionId,
"region": region,
"serviceProvider": serviceProvider,
"city": city,
"networkType":"vpc",
"replicas": replicas
}
],
"needIpv6PublicIp": false,
"spec": spec,
"cpu": cpu,
"memory": memory,
"imageId": imageId,
"imageType": bec,
"systemVolume": {
"volumeType": SATA,
"name": vm-rootfs,
"sizeInGB": 40
},
"dnsConfig": {
"dnsType": dnsType,
"dnsAddress": dnsAddress
},
"keyConfig": {
"type": "password",
"adminPass": "adminPass",
},
"dataVolumeList": [
{
"name": name,
"volumeType": volumeType,
"sizeInGB": sizeInGB
},
{
"name": name,
"volumeType": volumeType,
"sizeInGB": sizeInGB
}
],
"disableIntranet": disableIntranet,
"disableCloudInit": disableCloudInit,
"networkConfigList": [
{
"nodeType": "SINGLE",
"networksList": [
{
"netType": netType,
"netName": netName
},
{
"netType": netType,
"netName": netName
}
]
}
],
"securityGroupIds": [sgId, sgId],
"hostname": "hostname",
"templateId": templateId,
"deploysetIdList": ["deploysetId"]
}
请求头域
除公共头域外,无其它特殊头域。
请求参数
参数名称 | 类型 | 是否必需 | 参数位置 | 描述 |
---|---|---|---|---|
serviceName | String | 否 | RequestBody参数 | 虚机服务名称(不传则使用随机名称) |
vmName | String | 否 | RequestBody参数 | 虚机实例名称(不传则使用随机名称) |
paymentMethod | String | 否 | RequestBody参数 | 付费方式。postpay:后付费;prepay:预付费。缺省值为postpay |
needPublicIp | Boolean | 否 | RequestBody参数 | 是否开通公网。true:开通;false:不开通。缺省为false |
reservation | Reservation | 否 | RequestBody参数 | 预付费套餐购买时长 |
autoRenew | AutoRenew | 否 | RequestBody参数 | 自动续费周期,系统将于资源到期前7/3/1/0天自动进行扣款续费,自动扣费时余额不足则顺延至下一次定时扣费,扣费时长与自动续费周期相等,不传则不自动续费 |
bandwidth | Integer | 否 | RequestBody参数 | 公网带宽大小(-1时为最大值),单位Mbps |
deployInstances | List<DeploymentInstance> | 是 | RequestBody参数 | 部署区域 |
dnsConfig | DnsConfig | 是 | RequestBody参数 | DNS配置 |
spec | String | 否 | RequestBody参数 | 规格族,传入按指定机型策略创建,不传则按随机分配策略创建;使用spec参数则不需要填写cpu/memory |
cpu | Integer | 是 | RequestBody参数 | CPU大小,必须大于1;用虚机模板可不填;随机分配策略必填 |
memory | Integer | 是 | RequestBody参数 | memory大小,必须大于1;用虚机模板可不填;随机分配策略必填 |
imageId | String | 是 | RequestBody参数 | 镜像ID(配合imageType使用; 用虚机模板可不填 |
imageType | String | 是 | RequestBody参数 | 镜像类型(bec为公共镜像或bec自定义镜像,镜像ID可从获取BEC虚机镜像列表获取,bcc为bcc自定义镜像),缺省为bcc; 用虚机模板可不填 |
needIpv6PublicIp | boolean | 是 | RequestBody参数 | 是否开通IPv6公网。true:开通;false:不开通。缺省为false |
systemVolume | VolumnConfig | 是 | RequestBody参数 | 系统盘配置 |
dataVolumeList | List<VolumeConfig> | 否 | RequestBody参数 | 数据盘配置 |
keyConfig | KeyConfig | 是 | RequestBody参数 | 密码或密钥配置,详情参考密码和密钥配置注意事项 |
disableIntranet | Boolean | 否 | RequestBody参数 | 是否需要内网。true:不需要;false:需要。缺省为false |
disableCloudInit | Boolean | 否 | RequestBody参数 | 是否需要网络初始化。true:不需要;false:需要。缺省为false |
networkConfigList | List<NetworkConfig> | 否 | RequestBody参数 | 网卡命名配置列表,包含NetworkConfig,缺省为默认命名。网卡命名参考:网卡命名注意事项 |
securityGroupIds | List<String> | 否 | RequestBody参数 | 指定私有网络的安全组ID。只适用于DeploymentInstance的网络类型(networkType)为vpc的实例。如果选用了vpc网络,但是没有指定安全组ID,BEC会创建并使用一个“出站方向端口全开”的默认的安全组。详情参考使用VPC网络注意事项 |
hostname | String | 否 | RequestBody参数 | 设置本虚机组内的虚机的hostname(不传则使用随机名称)。批量创建时以hostname作为前缀加上序号后缀:name{-序号},序号按照数量从0递增,例如name-0,name-1。hostname仅支持小写字母、数字以及-特殊字符,必须以字母开头,长度2-64。 |
templateId | String | 否 | RequestBody参数 | 使用虚机模板ID创建虚机(需要先通过控制台创建虚机模板,ID格式为tmpl-xxxxx), |
deploysetIdList | List<String> | 否 | RequestBody参数 | 部署集ID列表,目前只支持数量为1。 |
创建独占盘注意事项
独占盘仅支持数据盘,需要开通独占盘相关白名单才能创建,有相关需要请联系BEC商务。独占盘有SSD和HDD独占盘两种,volumeType和passthroughCode为必填参数,相关参数可通过获取独占盘接口获取。以下展示的是创建普通HDD数据盘、1T的SSD独占盘和4T的HDD独占盘。
POST /v1/vm/service HTTP/1.1
Host: bec.baidubce.com
Authorization: authorization string
{
"dataVolumeList": [
{
"volumeType": "SATA",
"accessModes": [],
"sizeInGB": 20,
"name": "data"
},
{
"volumeType": "SSD_PASSTHROUGH",
"name": "test1",
"passthroughCode": "SSD_PASSTHROUGH_1T"
},
{
"volumeType": "HDD_PASSTHROUGH",
"name": "test2",
"passthroughCode": "HDD_PASSTHROUGH_4T"
}
],
"keyConfig": {
"type": "password",
"adminPass": "adminPass",
},
"imageId": "imageId",
"imageType": "bec",
"bandwidth": 100,
"systemVolume": {
"sizeInGB": 40,
"volumeType": "SATA",
"name": "system"
},
"deployInstances": [
{
"regionId": "cn-shanghai-ct",
"region": "EAST_CHINA",
"replicas": 1,
"city": "SHANGHAI",
"serviceProvider": "CHINA_TELECOM",
"hasGpu": false
}
],
"serviceName": "test",
"vmName": "test",
"purchaseMonth": null,
"needPublicIp": false,
"needIpv6PublicIp": false,
"cpu": 1,
"memory": 2,
"paymentMethod": "postpay"
}
密码和密钥配置注意事项
目前虚机登录支持密码和密钥两种方式,密码和密钥需要二选一。密码长度范围为8~32位字符,由英文、数字和符号组成,符号仅限!@#$%^+*()。密钥目前仅支持BCC密钥,要使用密钥开启必须先在BCC的华北-北京区域创建密钥对。以下是使用密钥对的虚机服务,keyConfig的type填bccKeyPair,bccKeyPairIdList是bcc密钥对的keyId,可以通过BCC查询密钥对列表获取keyId。
POST /v1/vm/service HTTP/1.1
Host: bec.baidubce.com
Authorization: authorization string
{
"disableIntranet": false,
"systemVolume": {
"volumeType": "SATA",
"name": "vm-rootfs",
"sizeInGB": 40
},
"keyConfig": {
"type": "bccKeyPair",
"bccKeyPairIdList": [
"k-yykLneJS"
]
},
"needPublicIp": false,
"dataVolumeList": [],
"deployInstances": [
{
"regionId": "cn-taiyuan-cm",
"serviceProvider": "CHINA_MOBILE",
"region": "NORTH_CHINA",
"city": "TAIYUAN",
"replicas": 1
}
],
"disableCloudInit": false,
"rootDiskSizeInGb": null,
"cpu": 1,
"purchaseMonth": null,
"bandwidth": 100,
"needIpv6PublicIp": false,
"memory": 2,
"serviceName": "test",
"imageId": "im-yykLneJS",
"imageType": "bec",
"paymentMethod": "postpay"
}
网卡命名注意事项
参数结构networkConfigList用于设定网卡名称、VPC内外网卡的顺序。
-
仅内网,示例:
"networkConfigList": [ { "nodeType": "SINGLE", "networksList": [ { "netType": "INTERNAL_IP", "netName": "netName" } ] } ]
- 内网+外网,示例:
"networkConfigList": [
{
"nodeType": "SINGLE",
"networksList": [
{
"netType": "INTERNAL_IP",
"netName": "netName1"
},
{
"netType": "PUBLIC_IP",
"netName": "netName2"
}
]
}
]
- 单线节点VPC网络多网卡,示例(内网+外网+内网+外网):
单线节点的VPC网络,可以通过networkConfigList指定多网卡名和内外网的网卡顺序。
"networkConfigList": [
{
"nodeType": "SINGLE",
"networksList": [
{
"netType": "INTERNAL_IP",
"netName": "netName0"
},
{
"netType": "PUBLIC_IP",
"netName": "netName1"
},
{
"netType": "INTERNAL_IP",
"netName": "netName2"
},
{
"netType": "PUBLIC_IP",
"netName": "netName3"
}
]
}
]
- 三线节点VPC网络,公网IP指定运营商:
可以通过下面二选一参数来指定: 通过参数subServiceProviders直接指定,或者通过networkConfigList指定运营商并设置网卡名和网卡顺序。例如只支持运营商ct的示例:
// 通过subServiceProviders指定运营商
"deployInstances": [
{
"regionId": "cn-changchun-ix",
"replicas": 1,
"subServiceProviders": ["ct"],
"networkType":"vpc"
}
],
// 通过networkConfigList指定运营商并设置网卡名和顺序
"networkConfigList": [
{
"nodeType": "TRIPLE",
"networksList": [
{
"netType": "INTERNAL_IP",
"netName": "netName"
},
{
"netType": "TRIPLE_CT",
"netName": "netName"
}
]
}
]
使用VPC网络注意事项
VPC网络为内网VPC,分节点创建,不能跨节点指定VPC。需要显式指定网络类型networkType为vpc,经典网络为classic
vpc网络可以指定使用自定义已创建好的vpcId和subnetId; 如果没有指定vpcId和subnetId,系统会为每个节点创建并使用默认的私有网络和子网;默认私有网络CIDR为172.16.0.0/20,默认子网CIDR为172.16.0.0/24
"deployInstances": [
{
"regionId": regionId,
"networkType":"vpc",
"vpcId": vpcId,
"subnetId": subnetId,
"replicas": replicas
}
]
指定安全组(securityGroupIds)只适用于vpc网络的实例。如果选用了vpc网络但是没有指定安全组ID,BEC会创建并使用一个默认的安全组,默认安全组规则如下:
方向 | 协议 | 端口 | 类型 | 目的地址 |
---|---|---|---|---|
出站 | 全部协议 | 1-65535 | IPv4 | 目的IP: 0.0.0.0/0 |
使用模板
若使用模板,需要先在控制台创建虚机模板,获得templateId作为输入参数。无需再传入cpu、memory、disk、imageId/imageType、dnsConfig等参数。例如:
POST /v1/vm/service HTTP/1.1
Host: bec.baidubce.com
Authorization: authorization string
{
"deployInstances": [
{
"regionId": "cn-changchun-ix",
"replicas": 1,
"networkType": "vpc"
}
],
"serviceName": "service-test",
"vmName": "vmtest",
"templateId": "tmpl-2rnoykpn"
}
响应头域
除公共头域外,无其它特殊头域。
响应参数
参数名称 | 类型 | 描述 |
---|---|---|
result | Boolean | 返回结果,true表示成功;false:表示失败 |
action | String | 操作描述 |
details | VmServiceBriefVo | 返回结果 |
错误码
请参照错误返回章节的内容。
请求示例
DeploymentInstance支持regionId
POST /v1/vm/service HTTP/1.1
Host: bec.baidubce.com
Authorization: bce-auth-v1/f81d3b34e48048fbb2634dc7882d7e21/2015-08-11T04:17:29Z/3600/host/74c506f68c65e26c633bfa104c863fffac5190fdec1ec24b7c03eb5d67d2e1de
{
"dataVolumeList": [
{
"volumeType": "SATA",
"sizeInGB": 20,
"name": "data-disk-name"
}
],
"keyConfig": {
"type": "password",
"adminPass": "password1234!"
},
"imageId": "im-DqQdV8VQ",
"imageType": "bec",
"bandwidth": 100,
"deployInstances": [
{
"regionId": "cn-chengdu-un",
"networkType": "vpc",
"vpcId": "vpc-a1243lj",
"subnetId": "sbn-ou15jlg",
"replicas": 1
}
],
"systemVolume": {
"volumeType": "SATA",
"name": "system-disk-name",
"sizeInGB": 40
},
"dnsConfig": {
"dnsType": "CUSTOMIZE",
"dnsAddress": "129.29.29.29"
},
"serviceName": "test",
"vmName": "vmName",
"purchaseMonth": null,
"needPublicIp": false,
"spec": "bec.c2.c4m8",
"cpu": 4,
"memory": 8,
"paymentMethod": "postpay",
"disableIntranet": false,
"disableCloudInit": false,
"networkConfigList": [
{
"nodeType": "SINGLE",
"networksList": [
{
"netType": "INTERNAL_IP",
"netName": "intra"
},
{
"netType": "PUBLIC_IP",
"netName": "extra"
}
]
}
],
"securityGroupIds": ["sg-1okhf15"],
"deploysetIdList": ["dset-enckow4i"]
}
DeploymentInstance兼容region/city/serviceProvider
POST /v1/vm/service HTTP/1.1
Host: bec.baidubce.com
Authorization: bce-auth-v1/f81d3b34e48048fbb2634dc7882d7e21/2015-08-11T04:17:29Z/3600/host/74c506f68c65e26c633bfa104c863fffac5190fdec1ec24b7c03eb5d67d2e1de
{
"dataVolumeList": [
{
"volumeType": "SATA",
"sizeInGB": 20,
"name": "data-disk-name"
}
],
"keyConfig": {
"type": "password",
"adminPass": "password1234!"
},
"imageId": "im-DqQdV8VQ",
"imageType": "bec",
"bandwidth": 100,
"deployInstances": [
{
"region": "SOUTH_WEST",
"city": "CHENGDU",
"serviceProvider": "CHINA_UNICOM",
"networkType": "vpc",
"vpcId": "vpc-a1243lj",
"subnetId": "sbn-ou15jlg",
"replicas": 1
}
],
"systemVolume": {
"volumeType": "SATA",
"name": "system-disk-name",
"sizeInGB": 40
},
"dnsConfig": {
"dnsType": "CUSTOMIZE",
"dnsAddress": "129.29.29.29"
},
"serviceName": "test",
"vmName": "vmName",
"purchaseMonth": null,
"needPublicIp": false,
"spec": "bec.c2.c4m8",
"cpu": 4,
"memory": 8,
"paymentMethod": "postpay",
"disableIntranet": false,
"disableCloudInit": false,
"networkConfigList": [
{
"nodeType": "SINGLE",
"networksList": [
{
"netType": "INTERNAL_IP",
"netName": "intra"
},
{
"netType": "PUBLIC_IP",
"netName": "extra"
}
]
}
],
"securityGroupIds": ["sg-1okhf15"],
"deploysetIdList": ["dset-enckow4i"]
}
响应示例
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Date: Wed, 08 Jul 2015 03:28:11 GMT
x-bce-request-id: d8752367-38e8-45e4-b4c7-e53be3137ce5
Server: BWS
{
"result": true,
"action": "create",
"details": {
"serviceId": "s-zz9r0enj",
"serviceName": "test",
"status": "NORMAL",
"totalCpu": 1,
"totalMem": 2,
"totalDisk": 0,
"totalRootDisk": 40,
"regions": 1,
"deployInstances": [
{
"regionId": "cn-taiyuan-cm",
"region": "NORTH_CHINA",
"serviceProvider": "CHINA_MOBILE",
"replicas": 1,
"city": "TAIYUAN"
}
],
"totalInstances": 1,
"runningInstances": 0,
"osImage": {
"id": "5732f5cf-fd17-4e6b-a044-e95bed7da02e",
"imageId": "im-DqQdV8VQ",
"name": "qa-hello-world",
"imageType": "becCommon",
"snapshotId": "",
"cpu": 1,
"memory": 2,
"osType": "linux",
"osVersion": "7.5",
"osName": "CentOS",
"osBuild": "2019110600",
"osLang": "ENG",
"diskSize": 0,
"createTime": "2020-10-22T03:59:36Z",
"status": "active",
"minMem": 1,
"minCpu": 0,
"minDiskGb": 40,
"desc": "centos-7u5-x86_64-20191105105756",
"osArch": "x86_64 (64bit)",
"ephemeralSize": 0,
"imageDescription": "centos-7u5-x86_64-20191105105756",
"shareToUserNumLimit": 0,
"sharedToUserNum": 0,
"fpgaType": "",
"name_fri": null
},
"createTime": null,
"totalGpu": 0,
"bandwidth": null,
"totalBandwidth": "0Mbps"
}
}
Model对象定义
VmServiceBriefVo
参数名称 | 类型 | 描述 |
---|---|---|
serviceId | String | 虚机服务ID |
serviceName | String | 虚机服务名称 |
status | String | 资源状态(NORMAL,FAILED) |
totalCpu | float | CPU数量 |
totalMem | float | 内存数量 |
totalRootDisk | Integer | 系统盘数量 |
totalDisk | Integer | 数据盘数量 |
regions | Integer | 区域数量 |
deployInstances | List<DeploymentInstance> | 部署区域列表 |
totalInstances | Integer | 总实例数 |
runningInstances | Integer | 运行实例数 |
osImage | ImageDetail | 系统镜像详情 |
createTime | Date | 创建时间 |
ImageDetail
参数名称 | 类型 | 描述 |
---|---|---|
id | String | ID |
imageId | String | imageId |
name | String | 镜像名称 |
imageType | String | 镜像类型 |
snapshotId | String | 快照ID |
cpu | Integer | CPU数量 |
memory | Integer | 内存数量 |
osType | String | OS类型 |
osVersion | String | OS版本 |
osName | String | OS名称 |
osBuild | String | OS创建时间 |
osLang | String | OS语言 |
diskSize | Integer | 磁盘大小 |
createTime | Date | 创建时间 |
minCpu | Integer | 最小CPU数量 |
minMem | Integer | 最小内存数量 |
minDiskGb | Integer | 最小磁盘数量 |
desc | String | 描述 |
osArch | String | osArch |
ephemeralSize | Integer | ephemeralSize |
imageDescription | String | 镜像描述 |
shareToUserNumLimit | Integer | 分享数量限制 |
sharedToUserNum | Integer | 分享数量 |
fpgaType | String | fpgaType |
name_fri | String | name_fri |
VolumeConfig
参数名称 | 类型 | 描述 |
---|---|---|
name | String | 磁盘名称 |
sizeInGB | Integer | 磁盘大小(单位G) |
volumeType | DiskType | 磁盘类型,普通数据盘类型包括:NVME和SATA 云磁盘类型包括:CDS_HDD, 独占盘类型包括HDD_PASSTHROUGH和SSD_PASSTHROUGH |
passthroughCode | String | 独占盘套餐码,非独占盘不需要填写,独占盘套餐码可通过获取独占盘接口获取 |
DeploymentInstance
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
regionId | String | 是 | 节点ID,由“国家码-城市-运营商”的小写字母组成字符串。例如 cn-hangzhou-cm,其中国家码标准为ISO 3166-2,城市为拼音,运营商为中国移动cm/中国电信ct/中国联通un/三线ix/海外节点为bgp。如果传regionId,则可以不传region、serviceProvider、city。 |
region | Region | 否 | 区域 |
city | String | 否 | 城市 |
serviceProvider | ServiceProvider | 否 | 运营商 |
subServiceProviders | List<String> | 否 | 仅适用于VPC三线节点。可以指定运营商公网,值为ct,un,cm的数组,其中ct电信、un联通、cm移动。如果不指定该参数则默认三个运营商 |
replicas | Integer | 是 | 副本数,最小为1 |
networkType | String | 是 | 指定网络类型,枚举值有classic(经典网络)或vpc(VPC网络)。详细参考 使用VPC网络注意事项 |
vpcId | String | 否 | 指定私有网络ID。只有网络类型为vpc时生效;如果networkType选用vpc网络, 若不指定vpcId时则使用默认私有网络和默认子网 |
subnetId | String | 否 | 指定私有网络的子网ID。只有网络类型为vpc时生效;如果networkType选用vpc网络, 若不指定subnetId时则会使用默认VPC的默认子网 |
DnsConfig
参数名称 | 类型 | 描述 |
---|---|---|
dnsType | DnsType | DNS类型 |
dnsAddress | String | DNS地址,多个DNS地址以逗号分隔 |
DnsType
类型 | 描述 |
---|---|
NONE | 不需要设置 |
DEFAULT | 国内节点使用默认DNS地址(114.114.114.114), 海外节点使用默认DNS地址(8.8.8.8) |
CUSTOMIZE | 使用自定义DNS地址 |
NetworkConfig
参数名称 | 类型 | 描述 |
---|---|---|
nodeType | String | 节点类型(SINGLE、TRIPLE,分别表示单线节点和三线节点) |
networksList | List<Networks> | 网卡信息,包含Networks;用于设置对应的网卡名称。注意: 经典网络顺序固定为内+外,不可自定义;VPC网络可以自定义网卡顺序 |
Networks
参数名称 | 类型 | 描述 |
---|---|---|
netType | String | 网卡类型 (INTERNAL_IP表示内网;单线节点使用PUBLIC_IP表示单线公网网卡;三线节点用TRIPLE_CT、TRIPLE_UN、TRIPLE_CM分别表示三线公网的电信、联通、移动) |
netName | String | 网卡名称,内外网卡的名称不能重复;支持大小写字母,数字,"-_",必须以字母开头,长度3-16字符。 |
KeyConfig
参数名称 | 类型 | 描述 |
---|---|---|
type | String | 类型,bccKeyPair为选择的密钥对,password为选择的密码 |
bccKeyPairIdList | List<String> | 虚机密钥对ID列表 |
adminPass | String | 虚机密码限制长度为8~32位字符,英文、数字和符号必须同时存在,符号仅限!@#$%^+*() |
ServiceProvider
编码 | 描述 |
---|---|
CHINA_MOBILE | 中国移动 |
CHINA_UNICOM | 中国联通 |
CHINA_TELECOM | 中国电信 |
TRIPLE_LINE | 三线 |
BGP | 海外节点 |
Reservation
参数名称 | 类型 | 描述 |
---|---|---|
length | Integer | 预付费套餐购买时长 |
timeUnit | String | 时间单位 year 或者 month |
AutoRenew
参数名称 | 类型 | 描述 |
---|---|---|
length | Integer | 预付费自动续费的续费时长 |
timeUnit | String | 时间单位 year 或者 month |