华为云用户手册

  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头中,从而通过身份认证,获得操作API的权限。Token可通过调用获取用户Token接口获取。 调用本服务API需要项目级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", // IAM 用户名 "password": "$ADMIN_PASS", //IAM用户密码,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 "domain": { "name": "domainname" //IAM用户所属账号名 } } } }, "scope": { "project": { "name": "xxxxxxxx" //项目名称 } } } } 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 1 2 3 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333。
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小在12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):私有访问密钥。与访问密钥ID结合使用,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • 响应消息 响应参数如表2所示。 表2 响应参数 参数 参数类型 描述 server_group Object 弹性云服务器组信息,参考表3。 表3 server_group参数信息 参数 参数类型 描述 id String 弹性云服务器组UUID。 name String 弹性云服务器组名称。 policies Array of strings 弹性云服务器组类型。 members Array of strings 弹性云服务器组中包含的弹性云服务器的ID列表。 metadata Object 弹性云服务器组元数据。
  • 响应示例 { "server_group": { "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "name": "test", "policies": ["anti-affinity"], "members": [], "metadata": {} } }
  • 响应消息 响应参数如表3所示。 表3 响应参数 参数 参数类型 描述 flavors Array of objects 云服务器规格列表,详情请参见表4。 flavors_links Array of objects 分页查询时,查询下一页数据链接 , 详情请参见表5 flavors_links字段数据结构说明。 表4 flavors数据结构说明 参数 参数类型 描述 id String 云服务器规格ID。 name String 云服务器规格名称。 vcpus Integer 云服务器规格对应的CPU核数。 ram Integer 云服务器规格对应的内存大小,单位为MB。 disk Integer 云服务器规格对应要求系统盘大小。 当前未使用该参数,缺省值为0。 swap String 云服务器规格对应要求的交换分区大小。 当前未使用该参数,缺省值为""。 OS-FLV-EXT-DATA:ephemeral Integer 扩展属性,临时盘大小。 当前未使用该参数,缺省值为0。 OS-FLV-DISABLED:disabled Boolean 扩展属性,该云服务器规格是否禁用。 当前未使用该参数,缺省值为false。 rxtx_factor Float 云服务器可使用网络带宽与网络硬件带宽的比例。 当前未使用该参数,缺省值为1.0。 os-flavor-access:is_public Boolean 扩展属性,flavor是否给所有租户使用。 true:表示给所有租户使用。 false:表示给指定租户使用。 缺省值为true。 links Array of objects 规格相关快捷链接地址,详情请参见表5。 表5 links字段数据结构说明 参数 参数类型 描述 rel String 快捷链接标记名称。 href String 对应快捷链接。
  • 响应示例 { "flavors": [ { "name": "c3.2xlarge.2", "links": [ { "href": "https://compute.region.example.com/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2", "rel": "self" }, { "href": "https://compute.region.example.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.2", "rel": "bookmark" } ], "ram": 16384, "OS-FLV-DISABLED:disabled": false, "vcpus": 8, "swap": "", "os-flavor-access:is_public": true, "rxtx_factor": 1, "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 0, "id": "c3.2xlarge.2" }, { "name": "c3.2xlarge.4", "links": [ { "href": "https://compute.region.example.com/v2.1/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.4", "rel": "self" }, { "href": "https://compute.region.example.com/743b4c0428d94531b9f2add666642e6b/flavors/c3.2xlarge.4", "rel": "bookmark" } ], "ram": 32768, "OS-FLV-DISABLED:disabled": false, "vcpus": 8, "swap": "", "os-flavor-access:is_public": true, "rxtx_factor": 1, "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 0, "id": "c3.2xlarge.4" } ] }
  • 响应消息 响应参数如表2所示。 表2 响应参数 参数 是否必选 参数类型 描述 floating_ips 是 Array of objects floating_ip的对象列表。 表3 floating_ip对象 参数 是否必选 参数类型 描述 floating_ip 是 Object floating_ip对象。 表4 floating_ip对象属性 参数 是否必选 参数类型 描述 fixed_ip 是 String 私有IP地址。 id 是 String 浮动IP的ID,UUID格式。 instance_id 是 String 被绑定主机的ID,UUID格式。 ip 是 String 浮动IP的IP地址。 pool 是 String 网络资源池名称,分配浮动IP地址。
  • 响应示例 { "floating_ips": [ { "id": "05f71f43-f3c9-47ef-ac8d-9f02aef66418", "pool": "external", "ip": "10.154.51.235", "fixed_ip": "192.168.1.2", "instance_id": "8b380f68-5057-4aa2-a33a-170b37218fa8" }, { "id": "a25236cf-dd76-4adc-916a-f0b4a24048d3", "pool": "external", "ip": "10.154.51.237", "fixed_ip": null, "instance_id": null } ] }
  • 响应示例 { "instances": [ { "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "name": "server1", "availability_zone_id": "az1", "flavor_id": "s3.large.2", "status": "ACTIVE", "sell_mode": "onDemand" } ], "page_info": { "next_marker": "616fb98f-46ca-475e-917e-2563e5a8cd19" } }
  • 响应消息 响应参数如表3所示。 表3 响应参数 参数 参数类型 描述 instances Array of objects 实例列表,详情请参见表4。 page_info Object 页标记。 表4 instances参数信息 参数 参数类型 描述 name String 实例名称。 id String 实例ID。 availability_zone_id String 可用区ID。 flavor_id String 实例规格。 status String 实例状态。 sell_mode String 销售模型。 spot:竞价实例 onDemand:按需实例 表5 page_info参数信息 参数 参数类型 描述 next_marker String 返回下一页查询地址。
  • URI GET /v2/{domain_id}/auto-launch-groups/{auto_launch_group_id}/instances 参数说明请参见表1。 表1 参数说明 参数 是否必选 描述 domain_id 是 租户域ID。 auto_launch_group_id 是 智能购买组ID。 表2 查询参数 参数 是否必选 参数类型 描述 limit 否 Integer 查询返回实例的数量限制。 取值范围:1-1000。 marker 否 String 取值为上一页数据的最后一条记录的唯一标识。
  • 操作步骤 确定待创建云服务器所在的可用区。 查询可用区。 接口相关信息 URI格式:GET /v2.1/{project_id}/os-availability-zone 详情请参见查询可用区列表。 请求示例 GET https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-availability-zone {endpoint}信息请从地区和终端节点获取。 响应示例 { "availabilityZoneInfo": [ { "hosts": null, "zoneState": { "available": true }, "zoneName":"zone_01" }, { "hosts": null, "zoneState": { "available": true }, "zoneName": "zone_01" } ] } 根据实际需要选择可用区,并记录可用区的zoneName。 确定待创建云服务器的规格。 查询云服务器规格信息。 接口相关信息 URI格式:GET /v1/{project_id}/cloudservers/flavors?availability_zone={availability_zone} 其中,“?”后的字段为查询规格时可选的查询检索参数,详情请参见查询规格详情和规格扩展信息列表。 请求示例 GET https://{endpoint}/v1/74610f3a5ad941998e91f076297ecf27/cloudservers/flavors?availability_zone=zone_01 {endpoint}信息请从地区和终端节点获取。 availability_zone的值“zone_01”通过步骤1获取。 响应示例 { "flavors": [ { "attachableQuantity": { "free_scsi": 60, "free_blk": 24, "free_disk": 60, "free_nic": 12 }, "id": "c3.2xlarge.2", "name": "c3.2xlarge.2", "vcpus": "8", "ram": 8192, "disk": "0", "swap": "", "links": [ { "rel": "self", "href": "https://xxx/v1.0/74610f3a5ad941998e91f076297ecf27/flavors/c3.2xlarge.2", "type": null }, { "rel": "bookmark", "href": "https://xxx/74610f3a5ad941998e91f076297ecf27/flavors/c3.2xlarge.2", "type": null } ], "OS-FLV-EXT-DATA:ephemeral": 0, "rxtx_factor": 1, "OS-FLV-DISABLED:disabled": false, "rxtx_quota": null, "rxtx_cap": null, "os-flavor-access:is_public": true, "os_extra_specs": { "ecs:virtualization_env_types": "CloudCompute", "ecs:generation": "c3", "ecs:instance_architecture":"arm64" , "ecs:performancetype": "computingv3", "resource_type": "IOoptimizedC3_2" } } ] } 根据实际需要选择规格,并记录规格的ID。 确定待创建云服务器使用的镜像。 查询镜像。 接口相关信息 URI格式:GET /v2.1/{project_id}/images/detail 详情请参见查询镜像列表详情。 请求示例 GET https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/images/detail {endpoint}信息请从地区和终端节点获取。 响应示例 { "images": [ { "OS-EXT-IMG-SIZE:size": 0, "metadata": { "__os_type": "Linux", "hw_vif_multiqueue_enabled": "true", "__imagetype": "gold", "__quick_start": "true", "virtual_env_type": "FusionCompute", "__support_xen": "true", "__support_kvm": "true", "__image_source_type": "uds", "__platform": "EulerOS", "__os_version": "EulerOS 2.2 64bit", "__os_bit": "64", "__isregistered": "false" }, "created": "2018-05-14T06:13:50Z", "minRam": 0, "name": "DBS-MySQL-Image_2.1.3.3", "progress": 100, "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4" }, { "rel": "alternate", "href": "https://None/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4", "type": "application/vnd.openstack.image" } ], "id": "11e8f727-d439-4ed1-b3b8-33f46c0379c4", "updated": "2018-05-14T06:13:52Z", "minDisk": 40, "status": "ACTIVE" } ] } 根据需要选择镜像,并记录镜像ID。 确定云服务器的网络信息。 查询网络。 接口相关信息 URI格式:GET /v2.1/{project_id}/os-networks 详情请参见查询网络列表(废弃)。 请求示例 GET https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-networks {endpoint}信息请从地区和终端节点获取。 响应示例 { "networks": [ { "id": "07a9557d-4256-48ae-847c-415a9c8f7ff6", "label": "b_tt3_td1b", "broadcast": null, "cidr": null, "dns1": null, "dns2": null, "gateway": null, "netmask": null, "cidr_v6": null, "gateway_v6": null, "netmask_v6": null } ] } 根据需要选择网络,并记录网络ID。 设置密钥对登录方式。 如需设置为密码登录方式,请直接跳转至7。 创建密钥对。 接口相关信息 URI格式:POST /v2.1/{project_id}/os-keypairs 详情请参见创建和导入SSH密钥(废弃)。 请求示例 POST https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-keypairs {endpoint}信息请从地区和终端节点获取。 Body: { "keypair": { "type": "ssh", "name": "demo1", "user_id": "fake" } } 响应示例 { "keypair": { "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrR5Gcwlh5ih7JOvzIUuQxS5qzWWPMYHeDXkDKSQ9W5pumOV05SiO3WCswnaQ5xMdOl31mNiHtwlwq9dJi7X6jJBB2shT******************************************************************************************************************************************************************************************************************************************************************************************************* Generated-by-Nova\n", "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAq0eRnMJYeYoeyTr8yFLkMUuas1ljzGB3g15AykkPVuabpjld\nOUojt1grMJ2kOcTHTpd9ZjYh7cJcKvXSYu1+oyQQdrIUw/tNBuVrsJAWxVOAi77d\nQeOLtDVImkyd+TQL1tv+F76V5vTsIkNweYHumWOxLIt/FJ4fqZG4T5GMTQQivMqD\npaI0IVrO+Wm3cWQYvNdf/EcC3DYhYqHANkRsbUYwXaREnI/tU1PjnH2XUJ69ABWz\ntdc+8sXyMoMMM1U4FLiTWzGyh0rUKkW5JXzJR2OEQT0IG+0Tf2Glyk0El0/OJPg/\ncZQzaO1o+H8DiUzs/7Pz72yDqo0R7fQ+mOCCn***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************\n-----END RSA PRIVATE KEY-----\n", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "demo1", "fingerprint": "57:a7:a2:ed:5f:aa:e7:**:**:**:**:**:**:**:**:**" } } 导入密钥。 接口相关信息 URI格式:POST /v2.1/{project_id}/os-keypairs 详情请参见创建和导入SSH密钥(废弃)。 请求示例 POST https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-keypairs {endpoint}信息请从地区和终端节点获取。 Body: { "keypair": { "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CI********************************************************************************************************************************************************************************************************************************************************* Generated-by-Nova\n", "type": "ssh", "name": "demo2", "user_id": "fake" } } 响应示例 { "keypair": { "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CI********************************************************************************************************************************************************************************************************************************************************* Generated-by-Nova\n", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "demo2", "fingerprint": "dd:44:45:49:d9:f6:4f:**:**:**:**:**:**:**:**:**" } } 记录响应消息体中的name信息。如本例中为“demo2”。 创建密钥对登录鉴权的云服务器。 接口相关信息 URI格式:POST /v1/{project_id}/cloudservers 接口约束及请求参数说明详情,请参见创建云服务器(按需)。 请求示例 POST https://{endpoint}/v1/74610f3a5ad941998e91f076297ecf27/cloudservers {endpoint}信息请从地区和终端节点获取。 Body: { "server": { "availability_zone":"zone_01", "name": "newserver", "imageRef": "67f433d8-ed0e-4321-a8a2-a71838539e09", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s3.xlarge.2", "vpcid": "0dae26c9-9a70-4392-93f3-87d53115d171", "security_groups": [ { "id": "507ca48f-814c-4293-8706-300564d54620" } ], "nics": [ { "subnet_id": "157ee789-03ea-45b1-a698-76c92660dd83" } ], "publicip": { "eip": { "iptype": "5_bgp", "bandwidth": { "size": 10, "sharetype": "PER" } } }, "key_name": "sshkey-123", "count": 1, "extendparam": { "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb" }, "server_tags": [ { "key": "key1", "value": "value1" } ], "metadata": { "op_svc_userid": "8ea65f4099ba412883e2a0da72b96873", "agency_name": "test" } } } 响应示例 { "job_id": "ff808082739334d80173941567f21d4f", "serverIds": [ "6d311127-bce1-48db-bf0f-cac9f8f7f077" ] } 创建密码方式登录鉴权的弹性云服务器。 创建非cloud-init镜像、密码方式登录鉴权的弹性云服务器。 接口相关信息 URI格式:POST /v1/{project_id}/cloudservers 接口约束及请求参数说明详情,请参见创建云服务器(按需)。 请求示例 POST https://{endpoint}/v1/74610f3a5ad941998e91f076297ecf27/cloudservers {endpoint}信息请从地区和终端节点获取。 Body: { "server": { "adminPass": "$ADMIN_PASS", //建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 "availability_zone":"zone_01", "name": "newserver", "imageRef": "67f433d8-ed0e-4321-a8a2-a71838539e09", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s3.xlarge.2", "vpcid": "0dae26c9-9a70-4392-93f3-87d53115d171", "security_groups": [ { "id": "507ca48f-814c-4293-8706-300564d54620" } ], "nics": [ { "subnet_id": "157ee789-03ea-45b1-a698-76c92660dd83" } ], "publicip": { "eip": { "iptype": "5_bgp", "bandwidth": { "size": 10, "sharetype": "PER" } } }, "count": 1, "extendparam": { "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb" }, "server_tags": [ { "key": "key1", "value": "value1" } ], "metadata": { "op_svc_userid": "8ea65f4099ba412883e2a0da72b96873", "agency_name": "test" } } } 响应示例 { "job_id": "ff808082739334d80173941567f21d4f", "serverIds": [ "6d311127-bce1-48db-bf0f-cac9f8f7f077" ] } 创建cloud-init镜像(以Linux为例)、密码方式登录鉴权的弹性云服务器。 接口相关信息 URI格式:POST /v1/{project_id}/cloudservers 接口约束及请求参数说明详情,请参见创建云服务器(按需)。 请求示例 POST https://{endpoint}/v1/74610f3a5ad941998e91f076297ecf27/cloudservers {endpoint}信息请从地区和终端节点获取。 Body: { "server": { "availability_zone":"zone_01", "name": "newserver", "imageRef": "67f433d8-ed0e-4321-a8a2-a71838539e09", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s3.xlarge.2", "vpcid": "0dae26c9-9a70-4392-93f3-87d53115d171", "security_groups": [ { "id": "507ca48f-814c-4293-8706-300564d54620" } ], "nics": [ { "subnet_id": "157ee789-03ea-45b1-a698-76c92660dd83" } ], "publicip": { "eip": { "iptype": "5_bgp", "bandwidth": { "size": 10, "sharetype": "PER" } } }, "count": 1, "extendparam": { "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb" }, "server_tags": [ { "key": "key1", "value": "value1" } ], "user_data":"IyEvYmluL2Jhc2gKZWNobyAncm9vdDokNiRuaERlcUIkajBkelVMbkFrbWo4bWlFREFzT0VONkVPdGg1RmdqWnQybUVWZVRocC5OVDJXelZVdzFuNzhnL3dNdDE0dVpSQ1V3LzhHS3VGdEViQ0lPQS5vN1BZQzEnIHwgY2hwYXNzd2QgLWU7", "metadata": { "op_svc_userid": "8ea65f4099ba412883e2a0da72b96873", "agency_name": "test" } } } 响应示例 { "job_id": "ff808082739334d80173941567f21d4f", "serverIds": [ "6d311127-bce1-48db-bf0f-cac9f8f7f077" ] } 确认云服务器创建成功。 接口相关信息 URI格式:GET /v1/{project_id}/cloudservers/{server_id} 详情请参见查询云服务器详情。 请求示例 GET https://{endpoint}/v1/74610f3a5ad941998e91f076297ecf27/cloudservers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6 其中: 0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6为创建的云服务器UUID。 {endpoint}信息请从地区和终端节点获取。 响应示例 { "server":{ "id":"0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6", "name":"ecs-2ecf", "addresses":{ "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68":[ { "version":"4", "addr":"192.168.1.99", "OS-EXT-IPS-MAC:mac_addr":"fa:16:3e:df:18:6d", "OS-EXT-IPS:port_id":"23037c18-027a-44e5-b6b9-f8d8f113fe02", "OS-EXT-IPS:type":"fixed" } ] }, "flavor":{ "disk":"0", "vcpus":"2", "ram":"1024", "id":"s3.large.1", "name":"s3.large.1", "gpus": [], "asic_accelerators": [] }, "accessIPv4":"", "accessIPv6":"", "status":"ACTIVE", "progress":0, "hostId":"c7145889b2e3202cd295ceddb1742ff8941b827b586861fd0acedf64", "updated":"2018-09-13T07:06:51Z", "created":"2018-09-13T07:03:44Z", "image":{ "id":"1ce5800a-e487-4c1b-b264-3353a39e2b4b" }, "metadata":{ "metering.order_id":" CS 1809131459IGC24", "metering.image_id":"c71b64e7-4767-4406-afde-2c7c7ac2242c", "metering.imagetype":"gold", "metering.resourcespeccode":"s3.small.1.linux", "image_name":"HEC_Public_Cloudinit_Oracle_Linux_7.4_64bit_40G", "metering.resourcetype":"1", "metering.product_id":"00301-117024-0--0", "cascaded.instance_extrainfo":"pcibridge:2", "os_bit":"64", "vpc_id":"0431c5e5-bc94-4a44-8263-15da2a642435", "os_type":"Linux", "charging_mode":"1" }, "tags":[ ], "description":"", "locked":false, "config_drive":"", "tenant_id":"74610f3a5ad941998e91f076297ecf27", "user_id":"f79791beca3c48159ac2553fff22e166", "key_name":"KeyPair-d750", "os-extended-volumes:volumes_attached":[ { "device":"/dev/vda", "bootIndex":"0", "id":"80c15cff-2473-4982-a816-d760cad6c42c", "delete_on_termination":"false" } ], "OS-EXT-STS:task_state":null, "OS-EXT-STS:power_state":1, "OS-EXT-STS:vm_state":"active", "OS-EXT-SRV-ATTR:host":"az21.dc1", "OS-EXT-SRV-ATTR:instance_name":"instance-0015147f", "OS-EXT-SRV-ATTR:hypervisor_hostname":"nova003@74", "OS-EXT-SRV-ATTR:user_data":null, "OS-DCF:diskConfig":"MANUAL", "OS-EXT-AZ:availability_zone":"zone_01", "os:scheduler_hints":{ }, "OS-EXT-SRV-ATTR:root_device_name":"/dev/vda", "OS-EXT-SRV-ATTR:ramdisk_id":"", "enterprise_project_id":"0", "OS-SRV-USG:launched_at":"2018-09-13T07:04:09.197749", "OS-EXT-SRV-ATTR:kernel_id":"", "OS-EXT-SRV-ATTR:launch_index":0, "host_status":"UP", "OS-EXT-SRV-ATTR:reservation_id":"r-nrd8b5c4", "OS-EXT-SRV-ATTR:hostname":"ecs-2ecf", "sys_tags":[ { "key":"_sys_enterprise_project_id", "value":"0" } ], "security_groups":[ { "name":"sg-95ec", "id":"6505b5d1-7837-41eb-8a1c-869d4355baa3" } ] } }
  • 涉及接口 创建云服务器时,需要进行规格查询、可用区查询、云硬盘创建等操作,涉及的接口如下: 查询可用区列表:确定待创建云服务器所在的可用区。 查询云服务器规格详情列表:确定待创建云服务器的规格。 查询镜像列表详情:确定待创建云服务器使用的镜像。 查询网络列表:确定云服务器的网络信息。 创建和导入SSH密钥:设置密钥对登录方式。 创建云服务器:创建密钥对登录鉴权的云服务器。 查询云服务器详情:确认云服务器创建成功。
  • URI DELETE /v1/{project_id}/cloudservers/{server_id}/detachvolume/{volume_id}?delete_flag=0 参数说明请参见表1。 表1 参数说明 参数 是否必选 描述 project_id 是 项目ID。 获取方法请参见获取项目ID。 server_id 是 云服务器ID。 volume_id 是 磁盘ID。 delete_flag 否 是否强制卸载数据盘。 是,值为“1”。 否,值为“0”。 默认值为0。
  • 响应示例 { "availability_zones": [ { "availability_zone_id": "br-iaas-test1a", "type": "Edge", "mode": "dedicated", "alias": "IES_test", "public_border_group": "br-iaas-test1a", "az_group_ids": [ "br-iaas-test1a" ], "category": 21 } ] }
  • 查询资源的可用配额 如需查询当前账号的资源配额信息,包括已使用的配额,可以通过调用查询租户配额接口。 GET https://ecs.cn-east-2.myhuaweicloud.com/v1/05041fea8a8025662f4ac00927982f3e/cloudservers/limits 响应信息如下,例如通过maxTotalInstances可以查看云服务器的最大申请数量,通过totalInstancesUsed可以查看当前云服务器使用个数。 { "absolute": { "maxServerMeta": 128, "maxPersonality": 5, "maxImageMeta": 128, "maxPersonalitySize": 10240, "maxSecurityGroupRules": 20, "maxTotalKeypairs": 1000, "total RAM Used": 22528, "totalInstancesUsed": 4, "maxSecurityGroups": 10, "totalFloatingIpsUsed": 0, "maxTotalCores": 8000, "totalSecurityGroupsUsed": 1, "maxTotalFloatingIps": 10, "maxTotalInstances": 1000, "totalCoresUsed": 11, "maxTotalRAMSize": 16384000, "maxServerGroups": 32, "maxServerGroupMembers": 16, "totalServerGroupsUsed": 0, "maxTotalSpotInstances": 20, "maxTotalSpotCores": 320, "maxTotalSpotRAMSize": 655360, "totalSpotInstancesUsed": 0, "totalSpotCoresUsed": 0, "totalSpotRAMUsed": 0, "maxFaultDomainMembers": 200, "limit_by_flavor": [] } }
  • 创建订单后资源未开通 订单创建后未查询到服务器信息,可能是由于指定了自动支付:请求体中extendparam.isAutoPay取值为false或续费时isAutoPay取值为0。 通常服务器创建后会返回一个order_id,即订单ID。 { "job_id": "ff808082739334d80173943ec9b42130", "order_id": "CS2007281506xxxxx", "serverIds": [ "fe0528f0-5b1c-4c8c-9adf-e5d5047b8c17" ] } 通过调用查询订单详情接口查看订单的状态 请求示例 GET https://bss.myhuaweicloud.com/v2/orders/customer-orders/details/CS2007281506xxxxx 响应示例 { "total_count": 1, "order_info": { "order_id": "CS2007281506xxxxx", "customer_id": "982f05775ec94da390c3f174xxxxxxxx", "service_type_code": "hws.service.type.ecs", "source_type": 1, "status": 6, …… } 响应示例中"status": 6说明订单状态为待付款。此时需要手动支付该订单 手动支付可以填写优惠券和折扣券等信息。 手动支付需要调用支付包年/包月产品订单支付,以下示例是使用一张优惠券,优惠券类型为代金券的请求示例。 POST https://bss.myhuaweicloud.com/v2/orders/customer-orders/pay { "coupon_infos": [ { "id": "CP2005270256xxxxxx", "type": 301 } ], "order_id": "CS2007281506xxxxx" }
  • 查询资源价格 使用查询按需产品价格和查询包年/包月产品价格,根据云服务类型、资源类型、云服务区和资源规格四个条件来查询产品价格。 例如查询华东上海二可用区、通用计算型、Linux操作系统、s6.small.1规格的包月,一个月的价格。 POST https://bss.myhuaweicloud.com/v2/bills/ratings/period-resources/subscribe-rate { "product_infos": [ { "id": "1", "cloud_service_type": "hws.service.type.ec2", "resource_type": "hws.resource.type.vm", "resource_spec": "s6.small.1.linux", "region": "cn-east-2", "available_zone": "cn-east-2a", "period_type": 2, "period_num": 1, "subscription_num": 1 } ], "project_id": "05041fea8a8025662f4ac00927982f3e" } 响应信息如下所示,其中official_website_amount字段的取值即为包年/包月产品价格。 { "official_website_rating_result": { "official_website_amount": 32.2, "measure_id": 1, -"product_rating_results": [-{ "id": "1", "product_id": "00301-233164-0--0", "official_website_amount": 32.2, "measure_id": 1 }] }, "optional_discount_rating_results": [], "currency": "CNY" }
  • 包年/包月资源续费 包年/包月资源即将到期时,可进行包年/包月资源的续订。通过调用续订包年/包月资源接口进行续费。 如下所示,指定资源ID,按月续费,续费1个月,到期后转按需,并自动支付订单。 POST https://bss.myhuaweicloud.com/v2/orders/subscriptions/resources/renew { "resource_ids": [ "96308d5efd7841b9a4dac673d84d0e14" ], "period_type": 2, "period_num": 1, "expire_policy": 1, "is_auto_pay": 1 } 续费成功后会返回一个order_id,即订单ID。 { "order_ids": [ "CS190401192xxxxxx" ] } 上面请求体中isAutoPay取值为1,表示自动支付,如果不填该字段或取值为0,则需要手动去支付,手动支付可以填写优惠券和折扣券等信息。手动支付需要调用支付包年/包月产品订单支付,以下示例是使用一张优惠券,优惠券类型为代金券的请求示例。 POST https://bss.myhuaweicloud.com/v2/orders/customer-orders/pay { "coupon_infos": [ { "id": "CP2005270256xxxxxx", "type": 301 } ], "order_id": "CS190401192xxxxxx" }
  • 查询规格资源是否可购买/资源是否售罄 如需查询某一具体的云服务器规格在某可用区是否资源充足,可以通过调用查询规格详情和规格扩展信息列表查看该规格的详细信息。并通过响应信息中的cond:operation:status和cond:operation:az字段的取值判断在区域和可用区的取值。 例如查询华东上海二可用区一的资源情况,请求URI如下。 GET https://ecs.cn-east-2.myhuaweicloud.com/v1/05041fea8a8025662f4ac00927982f3e/cloudservers/flavors?availability_zone=cn-east-2a 响应信息 { "id": "c3.3xlarge.2", "name": "c3.3xlarge.2", ... "os_extra_specs": { "cond:spot_block:operation:az": "cn-east-2a(sellout),cn-east-2b(normal),cn-east-2c(normal),cn-east-2d(normal)", "cond:operation:az": "cn-east-2d(sellout),cn-east-2a(normal),cn-east-2b(normal)" ... "cond:operation:status": "abandon", "cond:spot_block:operation:interrupt_policy": "cn-east-2d(immediate),cn-east-2a(immediate),cn-east-2b(immediate),cn-east-2c(immediate)", "resource_type": "IOoptimizedC3_2" } } 响应信息中通过cond:operation:status和cond:operation:az字段的取值判断资源是否可用。 优先查看cond:operation:az的取值,如果某个可用区没有在cond:operation:az参数中配置时默认使用cond:operation:status的取值。 例如本例中,c3.3xlarge.2在华东上海二的可用区一、可用区二正常商用,可用区四售罄,可用区三在在cond:operation:az中无配置信息,则以cond:operation:status的取值为准,即c3.3xlarge.2在华东上海二的可用区三下线。
  • 付费方式 创建包年/包月的云服务器时(chargingMode为prePaid),通过extendparam.isAutoPay字段控制订单的支付方式。 取值为true在订单创建完成后自动支付。 取值为false订单需要用户手动支付。手动支付可以填写优惠券和折扣券等信息。 手动支付需要调用支付包年/包月产品订单接口进行支付,以下示例是使用一张优惠券,优惠券类型为代金券的请求示例。 POST https://bss.myhuaweicloud.com/v2/orders/customer-orders/pay { "coupon_infos": [ { "id": "CP2005270256xxxxxx", "type": 301 } ], "order_id": "CS190401192xxxxxx" }
  • 查询可用的公共镜像 使用 镜像服务 的查询镜像列表的API可以根据不同条件查询镜像列表信息,在GET请求后通过‘?’和‘&’添加不同的查询条件组合。 如需查询公共镜像列表。 GET /v2/cloudimages?__imagetype=gold&visibility=public&protected=true 请注意调用镜像服务接口注意替换镜像服务的Endpoint信息。 查询镜像列表时,建议使用分页查询才能返回全部的镜像列表。通过指定marker和limit实现镜像列表的分页查询。 marker表示从哪个镜像开始查询,取值为镜像ID。limit表示查询几条镜像记录,取值为整数,默认取值为500。 GET /v2/cloudimages?__imagetype=gold&visibility=public&protected=true&marker=af92bb51-ec9d-4b02-912f-da0b3f0f7635&limit=5 如需查询其他的镜像类型 公共镜像列表查询 GET /v2/cloudimages?__imagetype=gold&visibility=public&protected=true 私有镜像列表查询 GET /v2/cloudimages?owner={project_id} 可以使用的共享镜像列表 GET /v2/cloudimages?member_status=accepted&visibility=shared&__imagetype=shared 被拒绝的共享镜像列表 GET /v2/cloudimages?member_status=rejected&visibility=shared&__imagetype=shared 未接受的共享镜像列表 GET /v2/cloudimages?member_status=pending&visibility=shared&__imagetype=shared 裸金属服务器某规格支持的公共镜像列表 GET /v2/cloudimages?__imagetype=gold&__support_xxx=true&virtual_env_type=Ironic 如果未指定镜像类型,那么可以通过响应信息中的__imagetype字段判断镜像类型。
  • 操作场景 本节内容介绍了使用 API购买 ECS过程中的一些高频场景。 表1 使用API创建ECS的高频场景 场景 说明 购买包年/包月ECS 为您介绍购买包年/包月资源的参数设置。 删除包年/包月ECS/退订包年/包月ECS 包年/包月资源需要通过退订的方式才可以被删除。 查询可用的公共镜像 购买ECS时候前查询公共镜像信息可以通过在GET请求后通过‘?’和‘&’添加不同的查询条件组合。 包年/包月资源续费 包年/包月资源即将到期时,可进行包年/包月资源的续订。指定资源ID,续费方式,续费时间,订单支付方式。 创建订单后资源未开通 创建完成后查不到资源信息可能是订单尚未支付,查看订单的状态并完成订单支付。 查询规格资源是否可购买/资源是否售罄 查询某一具体的云服务器规格在某可用区是否资源充足,通过响应信息中的cond:operation:status和cond:operation:az字段的取值判断在区域和可用区的取值。 付费方式 创建包年/包月的云服务器时(chargingMode为prePaid),通过extendparam.isAutoPay字段控制订单的支付方式。 查询资源的可用配额 调用查询租户配额接口,通过maxTotalInstances可以查看云服务器的最大申请数量,通过totalInstancesUsed可以查看当前云服务器使用个数。 查询资源价格 使用查询按需产品价格和查询包年/包月产品价格,根据云服务类型、资源类型、云服务区和资源规格四个条件来查询产品价格。
  • 购买包年/包月ECS 购买包年/包月ECS可以使用创建弹性云服务接口,相对于创建按需的ECS,只需要在请求body中指定extendparam.chargingMode参数值为“prePaid”,即包年包月,指定订购的周期等。extendparam的详细参数解释请参见创建云服务器的extendparam字段数据结构说明。 如下所示,在cn-north-1区域购买一台包年/包月ECS,时长为一个月,且下单后自动支付,自动续订。 { "server": { "name": "newserver", "availability_zone": "cn-north-1a", "flavorRef": "s3.small.1", "imageRef": "8da46d6d-6079-4e31-ad6d-a7167efff892", "root_volume": { "volumetype": "SATA" }, "vpcid": "7e1a7e70-3f3e-4581-955e-26a4848d8f31", "nics": [ { "subnet_id": "04548cde-4067-48b0-9323-5c7b67ac13fc" } ], "data_volumes": [ { "volumetype": "SSD", "size": 50 } ], "publicip": { "eip": { "iptype": "5_bgp", "bandwidth": { "size": 10, "sharetype": "PER" } } }, "extendparam": { "chargingMode": "prePaid", "periodType": "month", "periodNum": 1, "isAutoRenew": "true", "isAutoPay": "true", "regionID": "cn-north-1" } } } 包年/包月ECS创建后会返回一个order_id,即订单ID。 { "job_id": "ff808082739334d80173943ec9b42130", "order_id": "CS2007281506xxxxx", "serverIds": [ "fe0528f0-5b1c-4c8c-9adf-e5d5047b8c17" ] } 上面请求体中extendparam.isAutoPay取值为true,表示自动支付,如果不填该字段或取值为false,则需要手动去支付,手动支付可以填写优惠券和折扣券等信息。手动支付需要调用支付包年/包月产品订单支付,示例如下。 POST https://bss.myhuaweicloud.com/v2/orders/customer-orders/pay { "order_id": "CS20052715001E4CR" }
  • 删除包年/包月ECS/退订包年/包月ECS 包年/包月ECS无法直接调用ECS接口删除,需要调用退订包年/包月资源接口进行退订。 POST https://bss.myhuaweicloud.com/v2/orders/subscriptions/resources/unsubscribe { "resource_ids": [ "21e09f37c5c9420c8746ad5c71fb3aab" ], "unsubscribe_type": 1 } 其中resource_ids表示资源ID,对退订ECS来说,就是购买包年/包月ECS时返回的serverIds。
  • URI GET /v2.1/{project_id}/servers?changes-since={changes-since}&image={image}&flavor={flavor}&name={name}&status={status}&limit={limit}&marker={marker}¬-tags={not-tags}&reservation_id={reservation_id}&ip={ip} 参数说明请参见表1。 表1 路径参数 参数 是否必选 描述 project_id 是 项目ID。 获取方法请参见获取项目ID。
  • 响应消息 响应参数如表3所示。 表3 响应参数 参数 参数类型 描述 servers Array of objects 查询云服务器信息列表,请参见表4。 servers_links Array of objects 分页查询时,查询下一页数据链接,详情请参见表5 表4 servers字段数据结构说明 参数 参数类型 描述 name String 云服务器名称。 id String 云服务器唯一标识。 links Array of objects 云服务器相关快捷链接信息,详情请参见表5。 表5 servers_links,links字段数据结构说明 参数 参数类型 描述 rel String 快捷链接标记名称。 href String 对应快捷链接。
  • 响应示例 { "servers": [ { "id": "616fb98f-46ca-475e-917e-2563e5a8cd19", "links": [ { "href": "http://openstack.example.com/v2/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19", "rel": "self" }, { "href": "http://openstack.example.com/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19", "rel": "bookmark" } ], "name": "new-server-test" } ] }
  • 请求示例 删除云服务器的ID为“d32019d3-bc6e-4319-9c1d-6722fc136a23”的网卡。 POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/nics/delete { "nics": [ { "id": "d32019d3-bc6e-4319-9c1d-6722fc136a23" } ] }
  • 如何保证请求幂等性 客户端在发送请求时,可以在HTTP请求消息头中增加X-Client-Token作为幂等性标识,字段描述参见表1。 表1 幂等标识消息头 名称 描述 是否必选 示例 X-Client-Token 保证客户端请求幂等性的标识。 该标识为32位UUID格式,由客户端生成,且需确保不同请求之间该标识具有唯一性。 否 46436810-d999-454c-bd85-e515fd258600 通常情况下,客户端只需要在服务端内部异常、连接超时等响应状态码为5xx的错误,或者无法获取响应结果重试请求。重试请求仍然使用相同的幂等标识和请求参数,则服务端会返回与第一次请求相同的请求结果。 幂等标识的详细信息如下所示: 幂等标识是一个大小写敏感的32位UUID,其格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),其中每个x是0-9或a-f范围内的一个十六进制的数字。如果您提供了一个非UUID格式的标识,则服务端会返回Ecs.0123错误码。 幂等标识需要具有唯一性,如果您提供了一个已经使用过的标识,但请求参数有变化,则服务端会返回Ecs.0122错误码。 幂等标识具有时效性(8小时),如果您提供了一个已经失效的标识,则服务端会返回Ecs.0124错误码。 使用幂等标识后: 返回结果状态码为2xx时,重试后客户端可以得到与上次相同的结果,但对您的服务端状态没有影响。 返回结果状态码为4xx时,重试不会成功。您需要根据错误信息排查问题后再重试请求。
共100000条