文档首页 > > API参考> API(推荐)> 生命周期管理> 创建云服务器

创建云服务器

分享
更新时间: 2019/11/20 GMT+08:00

功能介绍

创建一台或多台云服务器。

本节介绍v1.1版本创建云服务器的接口:指该接口兼容了V1版本创建云服务器(按需)的功能,同时合入新功能,支持创建包年/包月的弹性云服务器。

弹性云服务器的登录鉴权方式包括两种:密钥对、密码。为安全起见,推荐使用密钥对方式。
  • 密钥对

    指使用密钥对作为弹性云服务器的鉴权方式。

    接口调用方法:使用key_name字段,指定弹性云服务器登录时使用的密钥文件,key_name字段的使用方法请参见表1

  • 密码

    指使用设置初始密码方式作为弹性云服务器的鉴权方式,此时,您可以通过用户名密码方式登录弹性云服务器,Linux操作系统时为root用户的初始密码,Windows操作系统时为Administrator用户的初始密码。

    接口调用方法:使用 adminPass字段,指定管理员帐号的初始登录密码,adminPass字段的使用方法请参见 表1。对于镜像已安装Cloud-init的Linux云服务器,如果需要使用密文密码,可以使用 user_data字段进行密码注入,具体请参见 表1

    对于安装Cloud-init镜像的Linux云服务器,若指定user_data字段,则adminPass字段无效。

接口约束

  • 请保证账户余额充足,此接口无法使用优惠券支付,若余额不足会报Ecs.7000错误码。
  • 创建包周期云服务器资源后,请参考“支付包周期产品订单”进行支付。若想使用优惠券,请将请求中的isAutoPay字段设置为false,参考“查询订单可用优惠券”进行支付,或者在华为云官网页面使用优惠券进行支付。
  • 如果您需要查询订单的资源开通详情,请参考“查询订单的资源开通详情”。
  • 如果您需要退订该包周期资源,请参考“退订包周期资源”。

URI

  • URI格式

    POST /v1.1/{project_id}/cloudservers

  • 参数说明

    参数

    是否必选

    描述

    project_id

    项目ID

    获取方法请参见 获取项目ID

请求消息

表1 创建云服务器请求参数说明

参数

是否必选

参数类型

描述

imageRef

String

待创建云服务器的系统镜像,需要指定已创建镜像的ID,ID格式为通用唯一识别码(Universally Unique Identifier,简称UUID)。

镜像的ID可以从控制台或者参考《镜像服务API参考》的“查询镜像列表”的章节获取。

flavorRef

String

待创建云服务器的系统规格的ID。

已上线的规格请参见《弹性云服务器产品介绍》的“实例类型与规格”章节。

name

String

云服务器名称。

取值范围:

  • 只能由中文字符、英文字母、数字及“_”、“-”、“.”组成,且长度为[1-64]个字符。
  • 创建的云服务器数量(count字段对应的值)大于1时,为区分不同云服务器,创建过程中系统会自动在名称后加“-0000”的类似标记。故此时名称的长度为[1-59]个字符。
    说明:

    弹性云服务器内部主机名(hostname)命名规则遵循 RFC 952RFC 1123命名规范,建议使用a-zA-z或0-9以及中划线"-"组成的名称命名,"_"将在弹性云服务器内部默认转化为"-"。

user_data

String

创建云服务器过程中待注入用户数据。支持注入文本、文本文件或gzip文件。

更多关于待注入用户数据的信息,请参见《弹性云服务器用户指南 》的“用户数据注入”章节。

约束:

  • 注入内容,需要进行base64格式编码。注入内容(编码之前的内容)最大长度32KB。

示例:

  • Linux服务器:
    #! /bin/bash
    echo user_test >> /home/user.txt
  • Windows服务器:
    rem cmd
    echo 111 > c:\aaa.txt

adminPass

String

如果需要使用密码方式登录云服务器,可使用adminPass字段指定云服务器管理员帐户初始登录密码。其中,Linux管理员帐户为root,Windows管理员帐户为Administrator。

密码复杂度要求:
  • 长度为8-26位。
  • 密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。
  • 密码不能包含用户名或用户名的逆序。
  • Windows系统密码不能包含用户名或用户名的逆序,不能包含用户名中超过两个连续字符的部分。

key_name

String

如果需要使用SSH密钥方式登录云服务器,请指定已创建密钥的名称。

约束:

当创建云服务器的extendparam字段中chargeMode为prePaid时(即包年包月的弹性云服务器),key_name参数必须配合metadata字段使用。详情请参见创建云服务器的metadata字段数据结构说明,以及请求示例1。

vpcid

String

待创建云服务器所属虚拟私有云(简称VPC),需要指定已创建VPC的ID,UUID格式。

VPC的ID可以从控制台或者参考《虚拟私有云接口参考》的“查询VPC”章节获取。

nics

列表数据结构

待创建云服务器的网卡信息。详情请参见表2

约束:

  • 网卡对应的网络(network)必须属于vpcid对应的VPC。
  • 当前单个弹性云服务器支持最多挂载12张网卡。

publicip

字典数据结构

配置云服务器的弹性IP信息,弹性IP有三种配置方式。

  • 不使用(无该字段)
  • 自动分配,需要指定新创建弹性IP的信息
  • 使用已有,需要指定已创建弹性IP的信息

详情请参见publicip字段数据结构说明

count

Integer

创建云服务器数量。

约束:

  • 不传该字段时默认取值为1。
  • 当extendparam结构中的chargingMode为postPaid(即创建按需付费的云服务器),且租户的配额足够时,最大值为500。
  • 当extendparam结构中的chargingMode为prePaid(即创建包年包月付费的云服务器)时,该值取值范围为[1,100]。但一次订购不要超过400个资源(比如购买一个弹性云服务器,至少包含了1个云主机、1个系统盘,有可能还包含数据盘、弹性IP、带宽多个资源),超过400个资源时报错。

isAutoRename

Boolean

云服务器名称是否允许重名。默认为True,当count大于1的时候该参数生效。

  • True,表示允许重名。
  • False,表示不允许重名。

root_volume

字典数据结构

云服务器对应系统盘相关配置。

创建包周期的弹性云服务器的时候,创建的系统盘/数据盘也是包周期,周期和弹性云服务器一致

详情请参见表3

data_volumes

列表数据结构

云服务器对应数据盘相关配置。每一个数据结构代表一块待创建的数据盘。

约束:目前弹性云服务器最多可挂载23块数据盘

详情请参见表4

security_groups

列表数据结构

云服务器对应安全组信息。

约束:当该值指定为空时,默认给云服务器绑定default安全组。

详情请参见security_groups字段数据结构说明

availability_zone

String

待创建云服务器所在的可用区,需要指定可用区(AZ)的名称。

请参考地区和终端节点获取。

extendparam

字典数据结构

创建云服务器附加信息。

详情请参见表9

metadata

字典数据结构

创建云服务器元数据。

详情请参见表11

os:scheduler_hints

字典数据结构

云服务器调度信息。

详情请参见os:scheduler_hints字段数据结构说明

tags

列表数据结构

弹性云服务器的标签。

标签的格式为“key.value”。其中,key的长度不超过36个字符,value的长度不超过43个字符。

标签命名时,需满足如下要求:

  • 标签的key值只能包含大写字母(A~Z)、小写字母(a~z)、数字(0-9)、下划线(_)、中划线(-)以及中文字符。
  • 标签的value值只能包含大写字母(A~Z)、小写字母(a~z)、数字(0-9)、下划线(_)、中划线(-)、小数点(.)以及中文字符。
说明:
  • 创建弹性云服务器时,一台弹性云服务器最多可以添加10个标签。
  • 公有云新增server_tags字段,该字段与tags字段功能相同,支持的key、value取值范围更广,建议使用server_tags字段。

server_tags

列表数据结构

弹性云服务器的标签。详情请参见server_tags字段数据结构说明

说明:
  • 创建弹性云服务器时,一台弹性云服务器最多可以添加10个标签。
  • 公有云新增server_tags字段,该字段与tags字段功能相同,支持的key、value取值范围更广,建议使用server_tags字段。

description

String

云服务器描述信息,默认为空字符串。

  • 长度最多允许85个字符。
  • 不能包含“<” 和 “>”等特殊符号。
表2 nics字段数据结构说明

参数

是否必选

参数类型

描述

subnet_id

String

待创建云服务器所在的子网信息。

需要指定vpcid对应VPC下已创建的子网(subnet)的网络ID,UUID格式。

ip_address

String

待创建云服务器网卡的IP地址,IPv4格式。

约束:

  • 不填或空字符串,默认在子网(subnet)中自动分配一个未使用的IP作网卡的IP地址。
  • 若指定IP地址,该IP地址必须在子网(subnet)对应的网段内,且未被使用。

ipv6_enable

Boolean

是否支持ipv6。

取值为true时,标识此网卡支持ipv6。

ipv6_bandwidth

字典数据结构

绑定的共享带宽ID。

表3 root_volume字段数据结构说明

参数

是否必选

参数类型

描述

volumetype

String

云服务器系统盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配。

  • SATA:普通IO磁盘类型。
  • SAS:高IO磁盘类型。
  • SSD:超高IO磁盘类型。
  • co-p1:高IO (性能优化Ⅰ型)
  • uh-l1:超高IO (时延优化)
说明:

对于HANA云服务器、HL1型云服务器、HL2型云服务器,需使用co-p1和uh-l1两种磁盘类型。对于其他类型的云服务器,不能使用co-p1和uh-l1两种磁盘类型。

size

Integer

系统盘大小,容量单位为GB, 输入大小范围为[1,1024]。

约束:

  • 系统盘大小取值应不小于镜像支持的系统盘的最小值(镜像的min_disk属性)。
  • 若该参数没有指定或者指定为0时,系统盘大小默认取值为镜像中系统盘的最小值(镜像的min_disk属性)。
    说明:

    镜像系统盘的最小值(镜像的min_disk属性)可在控制台中点击镜像详情查看。或通过调用“查询镜像详情(OpenStack原生)”API获取,详细操作请参考《镜像服务API参考》中“查询镜像详情(OpenStack原生)”章节。

extendparam

字典数据结构

磁盘的产品信息。

详情请参见创建磁盘的extendparam字段数据结构说明

hw:passthrough

Boolean

使用SDI规格创建虚拟机时请关注该参数,如果该参数值为true,说明创建的为scsi类型的卷

说明:

此参数为boolean类型,若传入非boolean类型字符,程序将按照false方式处理。

表4 data_volumes字段数据结构说明

参数

是否必选

参数类型

描述

volumetype

String

云服务器数据盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配。

磁盘类型枚举值:

  • SATA:普通IO磁盘类型。
  • SAS:高IO磁盘类型。
  • SSD:超高IO磁盘类型。
  • co-p1:高IO (性能优化Ⅰ型)
  • uh-l1:超高IO (时延优化)磁盘类型。
说明:

对于HANA云服务器、HL1型云服务器、HL2型云服务器,需使用co-p1和uh-l1两种磁盘类型。对于其他类型的云服务器,不能使用co-p1和uh-l1两种磁盘类型。

size

Integer

数据盘大小,容量单位为GB,输入大小范围为[10,32768]。

shareable

Boolean

是否为共享磁盘。true为共享盘,false为普通云硬盘。

说明:

该字段已废弃,请使用multiattach。

multiattach

Boolean

创建共享磁盘的信息。

  • true:创建的磁盘为共享盘。
  • false:创建的磁盘为普通云硬盘。
说明:

shareable当前为废弃字段,如果确实需要同时使用shareable字段和multiattach字段,此时,请确保两个字段的参数值相同。当不指定该字段时,系统默认创建普通云硬盘。

hw:passthrough

Boolean

数据卷是否使用SCSI锁。

  • true表示云硬盘的设备类型为SCSI类型,即允许ECS操作系统直接访问底层存储介质。支持SCSI锁命令。
  • false表示云硬盘的设备类型为VBD (虚拟块存储设备 , Virtual Block Device)类型,即为默认类型,VBD只能支持简单的SCSI读写命令。
  • 该字段不存在时,云硬盘默认为VBD类型。
说明:

此参数为boolean类型,若传入非boolean类型字符,程序将按照【false】方式处理。

extendparam

Object

磁盘的产品信息。

详情请参见表7

data_image_id

String

数据镜像的ID,UUID格式。

如果使用数据盘镜像创建数据盘,则data_image_id为必选参数,且不支持使用metadata。

metadata

Object

创建云硬盘的metadata信息,metadata中的key和value长度不大于255个字节。

仅在创建加密盘时使用metadata字段。

如果使用数据盘镜像创建数据盘,不支持使用metadata。

详情请参见创建磁盘的metadata字段数据结构说明

响应消息

表5 响应参数

参数

是否必选

参数类型

描述

order_id

string

订单号,创建包年包月的弹性云服务器时返回该参数。

说明:

message

string

出现错误时,返回的错误消息。

code

string

出现错误时,返回的错误码。

details

列表数据结构

任务异常时错误详情,请参见表6

该信息主要包含任务异常时的细化错误编码和错误描述信息,便于开发者读取该字段信息处理任务异常。

表6 details数据结构说明

参数

是否必选

参数类型

描述

message

String

出现错误时,返回的错误消息。

code

String

出现错误时,返回的错误码。

请求示例

  • 请求URL示例
    POST https://{endpoint}/v1.1/{project_id}/cloudservers
  • 请求示例1(创建包年包月的弹性云服务器,且使用密钥方式远程登录)
    {
        "server": {
            "availability_zone":"az1-dc1", //可用区名称 
            "name": "newserver", 
            "imageRef": "5ef3a512-1c65-418e-8764-a4413c2f9277", 
            "root_volume": {
                "volumetype": "SATA"
            }, 
            "data_volumes": [
                {
                    "volumetype": "SATA", 
                    "size": 100
                }, 
                {
                    "volumetype": "SSD", 
                    "size": 100,
                    "multiattach": true,
                    "hw:passthrough": "true"
                }
            ], 
            "flavorRef": "s2.small.1", 
            "vpcid": "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68", 
            "security_groups": [
                {
                    "id": "6242ef48-4d35-49c8-8711-a6e54902e44a"
                }
            ], 
            "nics": [
                {
                    "subnet_id": "ef039b60-6a14-42d1-963b-687b627fea08"
                }
            ], 
            "publicip": {
                "eip": {
                    "iptype": "5_sbgp",
                    "bandwidth": {
                        "size": 1, 
                        "sharetype": "PER"
                    }
                }
            }, 
            "key_name": "id_rsa", 
            "count": 1, 
            "metadata": {
                "op_svc_userid": "f79791beca3c48159ac2553fff22e166"
            },
            "extendparam": { 
                "chargingMode": "prePaid",
                "periodType": "month",
                "periodNum": 1,
                "isAutoRenew": "true",
                "isAutoPay": "true",
                "regionID": "cn-north-1",
                "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb"
            },
            "os:scheduler_hints": {
              "group": "cdbbfffe-ef18-47b4-a5c8-f61a984c0ecc"
            }
            
        }
    }
  • 请求示例2(创建包年包月的弹性云服务器,且使用密码方式远程登录)
    {
        "server": {
            "availability_zone":"az1-dc1", //可用区名称
            "name": "newserver",
            "adminPass": "P@ssw0rd123",
            "imageRef": "9b04ad7e-6d97-40bf-9d62-57873382eab0",
            "root_volume": {
                "volumetype": "SATA"
            },
            "data_volumes": [
                {
                    "volumetype": "SATA",
                    "size": 100
                },
                {
                    "volumetype": "SSD",
                    "size": 100,
                    "multiattach": true,
                    "hw:passthrough": "true"
                }
            ],
            "flavorRef": "s2.small.1",
            "vpcid": "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68",
            "security_groups": [
                {
                    "id": "6242ef48-4d35-49c8-8711-a6e54902e44a"
                }
            ],
            "nics": [
                {
                    "subnet_id": "ef039b60-6a14-42d1-963b-687b627fea08"
                }
            ],
            "publicip": {
                "eip": {
                    "iptype": "5_sbgp",
                    "bandwidth": {
                        "size": 1,
                        "sharetype": "PER"
                    }
                }
            },
            "key_name": "",
            "count": 1,
            "metadata": {},
            "extendparam": {
                "chargingMode": "prePaid",
                "periodType": "month",
                "periodNum": 1,
                "isAutoRenew": "true",
                "isAutoPay": "true",
                "regionID": "cn-north-1",
                "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb"
            },
            "os:scheduler_hints": {
                "group": "cdbbfffe-ef18-47b4-a5c8-f61a984c0ecc"
            }
        }
    }
  • 请求示例3(创建包年包月的弹性云服务器和按需计费的弹性IP)
    {
        "server": {
            "availability_zone":"az1-dc1", //可用区名称 
            "name": "newserver", 
            "imageRef": "5ef3a512-1c65-418e-8764-a4413c2f9277", 
            "root_volume": {
                "volumetype": "SATA"
            }, 
            "data_volumes": [
                {
                    "volumetype": "SATA", 
                    "size": 100
                }, 
                {
                    "volumetype": "SSD", 
                    "size": 100,
                    "multiattach": true,
                    "hw:passthrough": "true"
                }
            ], 
            "flavorRef": "s2.small.1", 
            "vpcid": "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68", 
            "security_groups": [
                {
                    "id": "6242ef48-4d35-49c8-8711-a6e54902e44a"
                }
            ], 
            "nics": [
                {
                    "subnet_id": "ef039b60-6a14-42d1-963b-687b627fea08"
                }
            ], 
            "publicip": {
                "eip": {
                    "iptype": "5_sbgp",
                    "bandwidth": {
                        "size": 1, 
                        "sharetype": "PER",
                        "chargemode": "traffic"
                    },
                    "extendparam": {
                        "chargingMode": "postPaid"
                    }
                }
            }, 
            "key_name": "id_rsa", 
            "count": 1, 
            "metadata": {
                "op_svc_userid": "f79791beca3c48159ac2553fff22e166"
            },
            "extendparam": { 
                "chargingMode": "prePaid",
                "periodType": "month",
                "periodNum": 1,
                "isAutoRenew": "true",
                "isAutoPay": "true",
                "regionID": "cn-north-1",
                "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb"
            },
            "os:scheduler_hints": {
              "group": "cdbbfffe-ef18-47b4-a5c8-f61a984c0ecc"
            }
        }
    }
  • 请求示例4(创建包年包月的弹性云服务器和共享带宽的弹性IP)
    {
        "server": {
            "availability_zone":"az1-dc1", //可用区名称
            "name": "newserver", 
            "imageRef": "5ef3a512-1c65-418e-8764-a4413c2f9277", 
            "root_volume": {
                "volumetype": "SATA"
            }, 
            "data_volumes": [
                {
                    "volumetype": "SATA", 
                    "size": 100
                }, 
                {
                    "volumetype": "SSD", 
                    "size": 100,
                    "multiattach": true,
                    "hw:passthrough": "true"
                }
            ], 
            "flavorRef": "s2.small.1", 
            "vpcid": "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68", 
            "security_groups": [
                {
                    "id": "6242ef48-4d35-49c8-8711-a6e54902e44a"
                }
            ], 
            "nics": [
                {
                    "subnet_id": "ef039b60-6a14-42d1-963b-687b627fea08"
                }
            ], 
            "publicip": {
                "eip": {
                    "iptype": "5_sbgp",
                    "bandwidth": {
                        "id": "a0d4b26f-699d-49a0-bcc8-6f707a925abf",
                        "sharetype": "WHOLE"
                    }
                }
            }, 
            "key_name": "id_rsa", 
            "count": 1, 
            "metadata": {
                "op_svc_userid": "f79791beca3c48159ac2553fff22e166",
                "agency_name": "test"
            },
            "extendparam": { 
                "chargingMode": "prePaid",
                "periodType": "month",
                "periodNum": 1,
                "isAutoRenew": "true",
                "isAutoPay": "true",
                "regionID": "cn-north-1",
               "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb"
            },
            "os:scheduler_hints": {
              "group": "cdbbfffe-ef18-47b4-a5c8-f61a984c0ecc"
            }
        }
    }

响应示例

{
    "order_id": "CS1711152257C60TL"
}

{
    "error": {
        "message": "Ecs.0005", 
        "code": "request body is illeagal."
    }
}

{
    "error": {
        "message": "privateIp [%s] is not in this subnet [%s]",
        "code": "Ecs.0005",
        "details": [
            {
                "code": "Ecs.0039"
            }
        ]
    }
}

返回值

请参考通用请求返回值

错误码

请参考错误码说明

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区