-
云商店API商品发布信息填写请参考以下模板:(您可点击图片后点击右上角“新窗”或下载文末PDF附件,以便更清晰地查看填写说明)
-
事情是这样的,公司成立了一个新项目,要给项目建官网,并搭建一个web服务器。按照我的习惯,搭建一个本地虚拟机就好了,部署简单方便还好配置,云服务器嘛,写了10年代码,还是不习惯那玩意儿。我这刚开始动手,就看见实习生屁颠屁颠地跑过来,我心想这小子肯定是想来学虚拟机搭建部署的,这么简单的事都不会,真是白瞎了他那985的学校了。可是...万万没想到啊,小实习生跑到我老大那里邀功去了!!!远远地听见他说:“公司新项目跑在云服务器上了,以后可以根据访问量随时进行弹性扩展,安全稳定还快。”啥?云服务器?这小子居然会配置云服务器?听完汇报,老大看向了我,带着小实习生往我这边走过来……“哼,叫你邀功,撞枪口上了吧,我就说云服务器配置没那么容易,还不是得来找我~”这么想着有点得意,老大走过来拍拍我的肩膀,说:“你跟他学一下怎么配置云服务器,别再用虚拟机了,以后都是麻烦事。”我...他...让我跟一个实习生学???实习生冲我微微一笑,就走了,没过一会扔给我一份文档,上面写着:“创建弹性云服务器流程详解”。打开粗略扫了一眼,代码都直接贴上来了?瞧不起谁?感觉有被冒犯到。技术人嘛,看到代码还是没忍住跑一遍,等我发现bug或跑不通,再给他上上课!结果……真香。内容是这样的:通过API创建云服务器的9个步骤(以指定镜像方式创建云服务器为例)(内容来源:https://support.huaweicloud.com/api-ecs/ecs_04_0001.html)步骤一:确定待创建云服务器所在的可用区。1、查询可用区。(1)接口相关信息URI格式:GET/v2.1/{project_id}/os-availability-zone(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-availability-zone(3)响应示例{ "availabilityZoneInfo":[ { "hosts":null, "zoneState":{ "available":true }, "zoneName":"zone_01" }, { "hosts":null, "zoneState":{ "available":true }, "zoneName":"zone_01" } ] } 2、根据实际需要选择可用区,并记录可用区的zoneName。步骤二:确定待创建云服务器的规格。1、查询云服务器规格信息。(1)接口相关信息URI格式:GET/v2.1/{project_id}/flavors/detail{?minDisk,minRam,is_public,sort_key,sort_dir}其中,“?”后的字段为查询规格时可选的查询检索参数。(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/flavors/detail(3)响应示例 { "flavors":[ { "name":"c1.2xlarge", "links":[ { "href":"https://xxx/v2.1/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge", "rel":"self" }, { "href":"https://xxx/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge", "rel":"bookmark" } ], "ram":8192, "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":"c1.2xlarge" } ] } 2、 根据实际需要选择规格,并记录规格的ID。步骤三:确定待创建云服务器使用的镜像。1、查询镜像。(1)接口相关信息URI格式:GET /v2.1/{project_id}/images/detail(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/images/detail(3)响应示例 { "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" } ] }2、根据需要选择镜像,并记录镜像ID。步骤四:确定云服务器的网络信息。1、查询网络。(1)接口相关信息URI格式:GET /v2.1/{project_id}/os-networks(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-networks(3) 响应示例 { "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 } ] }2、根据需要选择网络,并记录网络ID。步骤五:设置密钥对登录方式。如需设置为密码登录方式,请直接跳转至步骤七。1、创建密钥对。(1)接口相关信息URI格式:POST /v2.1/{project_id}/os-keypairs(2)请求示例POST: Body: { "keypair":{ "type":"ssh", "name":"demo1", "user_id":"fake" } }(3)响应示例 { "keypair":{ "public_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrR5Gcwlh5ih7JOvzIUuQxS5qzWWPMYHeDXkDKSQ9W5pumOV05SiO3WCswnaQ5xMdOl31mNiHtwlwq9dJi7X6jJBB2shTD+00G5WuwkBbFU4CLvt1B44u0NUiaTJ35NAvW2/4XvpXm9OwiQ3B5ge6ZY7Esi38Unh+pkbhPkYxNBCK8yoOlojQhWs75abdxZBi811/8RwLcNiFiocA2RGxtRjBdpEScj+1TU+OcfZdQnr0AFbO11z7yxfIygwwzVTgUuJNbMbKHStQqRbklfMlHY4RBPQgb7RN/YaXKTQSXT84k+D9xlDNo7Wj4fwOJTOz/s/PvbIOqjRHt9D6Y4IKd 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+mOCCnQIDAQABAoIBAA6/c9dGmK2mae4z\nyQ5KrOFdvC1TNhej+sZx+CwyzEJUSvSuHcvQCXFBAz8FY92hhvPKcX66jINXZ+4/\nCmWAQ5YyhcRiow0Y91HvsS0bywoknX3q6kxBFodmyyCWFkgd5iMTADb1Lx0a27Y7\njlS4Dl5gyiGmxUN2Ng24wWEAjE8ZNuI0lrtr5IZKp+s5IAi/rb5AG/mL7EzicE8c\nmGP+QAa+nzwhAwNhFwVID230xen/ZcoL1d77hxeARNqJUxoR25gwJd6Ebg2y9pDW\nVu6cbbzgdGUCfQYlMEoAamAkCswOsDpVDBXwQnt2A537n6Wq2bgYIKusHr9thtxP\n/5ubQLUCgYEA4zYuBG2vtLHnvce26P8o2j1xcJS9K0ozkah9JFl3hqFN0sAqLlz7\n/Fm1jA4kzHJS3d0UqP3AMDxY3HkIqCn4Be7lqeAAe2AfqkOZpt9MDNv4VwKe9sPb\nViW1qjL3FxziLC/YWTRNSlpwRjqJJGhA+UQt8rOia1k/zXmrEs7bXLcCgYEAwPsu\nK3j5QoAiziYVMYf5iCzWwAM9Ljpf9gw23lefTdIzhhfFtJplVRSyxRGU0UZ84GMI\nTd5zmcIF/1KUfhqmeiQzz6NIPEYEReahjpQ/sOH/Gk5Rwr3QwYPrwAu5x+kk/SRi\nKPkqw7APTR0sMQBcUq+ZYwGYLGPMdd1zUdLfb0sCgYBkuz11iydtxb3G/obSD2WO\nM9VaIycmzRPFzNwGRH/gOR0mhTluKp0wyJjbSd34oeqpH/2r2ivddrOysxoqa8jg\n4IQDZyLvj7MaKjQxrieqP89+y9Or9TMFo1xB46x2G8EN8/xHuA9YGnZSPFtWv72m\nhRqV0hv82amWsA0vHnRUSwKBgDsKHXvrTMbNkNhkykMXCH5iyWiBFSyZa1ZJMlgf\nknsqfdzeVPwF6E55QKAN2uuTlwzG/3ljPxahR1hvmUJjQN9JSBiUKbtW6GPCRVbr\nf/jLi1Iu99COZdluVKeybqn8Z/aSNP24DR9FM8kxzZ1IMPaTBmhFypp6BclhcLBt\nxTG1AoGAfcrkVbV1SOy7fECUtMpUECcw0yU4GWj3sR2RbII63C500RVYQlUpUaRR\naANbASHTVR4myOKtGSxEUhAQHlxFDwsDL7W3gzAqTFbEDp1xAAUyT/nkOAhQjEm4\nORFdDETeXLQG1KMUj+8AdnhfYp3JTdft6rmPpZEBUFiCAUMAvb0=\n-----END RSA PRIVATE KEY-----\n", "user_id":"f79791beca3c48159ac2553fff22e166", "name":"demo1", "fingerprint":"57:a7:a2:ed:5f:aa:e7:54:62:2e:bb:e7:92:22:cb:40" } }2、导入密钥。(1)接口相关信息URI格式:POST /v2.1/{project_id}/os-keypairs(2)请求示例POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-keypairs Body: { "keypair":{ "public_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh3lxL8MM61gyfpKzeKkwkEpSFj27Rgh6zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n", "type":"ssh", "name":"demo2", "user_id":"fake" } }(3)响应示例 { "keypair":{ "public_key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh3lxL8MM61gyfpKzeKkwkEpSFj27Rgh6zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n", "user_id":"f79791beca3c48159ac2553fff22e166", "name":"demo2", "fingerprint":"dd:44:45:49:d9:f6:4f:c0:24:2d:81:aa:c4:4b:83:c2" } }2、记录响应消息体中的name信息。如本例中为“demo2”。步骤六:创建密钥对登录鉴权的云服务器。(1)接口相关信息URI格式:POST /v2.1/{project_id}/servers说明: 本示例是指定image创建云服务器,因此:•block_device_mapping_v2.1中,“source_type”需设置为“image”,“uuid”设置为选择的镜像ID,“destination_type”设置为“volume”,“boot_index”设置为“0”。•“volume_size”应大于等于镜像元数据中指定的最小值。(2)请求示例POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers Body: { "server":{ "flavorRef":"c1.large", "name":"zttestvm1", "block_device_mapping_v2.1":[{ "source_type":"image", "destination_type":"volume", "volume_type":"SATA", "volume_size":"40", "delete_on_termination":"true", "uuid":"11e8f727-d439-4ed1-b3b8-33f46c0379c4", "boot_index":"0" }], "networks":[{ "uuid":"fb68519f-a7c0-476e-98d4-2e4cf6de6def" }], "key_name":"demo2", "availability_zone":"az_test_01" } }(3)响应示例 { "server":{ "security_groups":[ { "name":"default" } ], "OS-DCF:diskConfig":"MANUAL", "links":[ { "rel":"self", "href":"https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077" }, { "rel":"bookmark", "href":"https://None/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077" } ], "id":"6d311127-bce1-48db-bf0f-cac9f8f7f077", "adminPass":"WcC4QoVZPXpV" } }步骤七:设置密码登录方式。(1)使用非cloud-init镜像创建云服务器时,Windows和Linux系统都使用“adminPass”参数实现密码注入。(2)使用cloud-init镜像创建云服务器时:对于Linux系统,只能使用“user_data”进行密码注入,“user_data”字符串长度小于65535,且必须是base64加密的;对于Windows系统,只能通过元数据“admin_pass”进行密码注入。步骤八:创建密码方式登录鉴权的弹性云服务器。说明: 本示例是指定image创建弹性云服务器,因此:block_device_mapping_v2.1中,“source_type”需设置为“image”,“uuid”设置为选择的镜像ID,“destination_type”设置为“volume”,“boot_index”设置为“0”。volume_size”应大于等于镜像元数据中指定的最小值。1、创建非cloud-init镜像、密码方式登录鉴权的弹性云服务器。(1)接口相关信息URI格式:POST /v2.1/{project_id}/servers(2)请求示例POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers Body: { "server":{ "flavorRef":"c1.large", "name":"zttestvm1", "adminPass":"NOVAGLANCEI@123", "block_device_mapping_v2.1":[{ "source_type":"image", "destination_type":"volume", "volume_type":"SATA", "volume_size":"40", "delete_on_termination":"true", "uuid":"11e8f727-d439-4ed1-b3b8-33f46c0379c4", "boot_index":"0" }], "networks":[{ "uuid":"fb68519f-a7c0-476e-98d4-2e4cf6de6def" }], "availability_zone":"az_test_01" } }(3)响应示例 { "server":{ "security_groups":[ { "name":"default" } ], "OS-DCF:diskConfig":"MANUAL", "links":[ { "rel":"self", "href":"https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/73991cff-37c6-491a-9a8a-377397729fce" }, { "rel":"bookmark", "href":"https://None/74610f3a5ad941998e91f076297ecf27/servers/73991cff-37c6-491a-9a8a-377397729fce" } ], "id":"73991cff-37c6-491a-9a8a-377397729fce", "adminPass":"NOVAGLANCEI@123" } }2、创建cloud-init镜像(以Linux为例)、密码方式登录鉴权的弹性云服务器。(1)接口相关信息URI格式:POST /v2.1/{project_id}/servers(2)请求示例POST: Body: { "server":{ "flavorRef":"c1.large", "name":"zttestvm2", "user_data":"IyEvYmluL2Jhc2gKZWNobyAncm9vdDokNiRuaERlcUIkajBkelVMbkFrbWo4bWlFREFzT0VONkVPdGg1RmdqWnQybUVWZVRocC5OVDJXelZVdzFuNzhnL3dNdDE0dVpSQ1V3LzhHS3VGdEViQ0lPQS5vN1BZQzEnIHwgY2hwYXNzd2QgLWU7", "block_device_mapping_v2.1":[{ "source_type":"image", "destination_type":"volume", "volume_type":"SATA", "volume_size":"40", "delete_on_termination":"true", "uuid":"11e8f727-d439-4ed1-b3b8-33f46c0379c4", "boot_index":"0" }], "networks":[{ "uuid":"fb68519f-a7c0-476e-98d4-2e4cf6de6def" }], "availability_zone":"az_test_01" } }(3)响应示例 { "server":{ "security_groups":[ { "name":"default" } ], "OS-DCF:diskConfig":"MANUAL", "links":[ { "rel":"self", "href":"https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/7c11f362-cc96-4306-85b6-b432a639ca5e" }, { "rel":"bookmark", "href":"https://None/74610f3a5ad941998e91f076297ecf27/servers/7c11f362-cc96-4306-85b6-b432a639ca5e" } ], "id":"7c11f362-cc96-4306-85b6-b432a639ca5e", "admin_pass":"J3xMSivHCuq5" } } 步骤九:确认云服务器创建成功。(1)接口相关信息URI格式:GET /v2.1/{project_id}/servers/{server_id}(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6其中:0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6为创建的云服务器UUID。(3)响应示例 { "server":{ "tenant_id":"74610f3a5ad941998e91f076297ecf27", "addresses":{ "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68":[ { "OS-EXT-IPS-MAC:mac_addr":"fa:16:3e:88:01:1b", "OS-EXT-IPS:type":"fixed", "addr":"192.168.2.192", "version":4 } ] }, "metadata":{}, "OS-EXT-STS:task_state":null, "OS-DCF:diskConfig":"MANUAL", "OS-EXT-AZ:availability_zone": "az_test_01", "links":[ { "rel":"self", "href":"https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6" }, { "rel":"bookmark", "href":"https://None/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6" } ], "OS-EXT-STS:power_state":1, "id":"0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6", "os-extended-volumes:volumes_attached":[ { "id":"b551445a-e749-4d53-932a-638a455cb6c3" } ], "OS-EXT-SRV-ATTR:host":"pod1_test_01", "image":{ "links":[ { "rel":"bookmark", "href":"https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4" } ], "id":"11e8f727-d439-4ed1-b3b8-33f46c0379c4" }, "OS-SRV-USG:terminated_at":null, "accessIPv4":"", "accessIPv6":"", "created":"2018-05-25T01:47:11Z", "hostId":"b2792bef989888d2df1f51bff81de5ac58a4117f4e9ec3059c1a0410", "OS-EXT-SRV-ATTR:hypervisor_hostname":"nova001@36", "key_name":null, "flavor":{ "links":[ { "rel":"bookmark", "href":"https://None/74610f3a5ad941998e91f076297ecf27/flavors/c1.large" } ], "id":"c1.large" }, "security_groups":[ { "name":"default" } ], "config_drive":"", "OS-EXT-STS:vm_state":"active", "OS-EXT-SRV-ATTR:instance_name":"instance-001883cd", "user_id":"f79791beca3c48159ac2553fff22e166", "name":"zttestvm1", "progress":0, "OS-SRV-USG:launched_at":"2018-05-25T01:47:55.755922", "updated":"2018-05-25T01:47:55Z", "status":"ACTIVE" } }按照步骤指示,我很快完成了云服务器的搭建,不禁有些惊讶,这小子怎么懂这么多?等等...华为云API Explorer?打开华为云API Explorer的官网,我好像打开了新世界的大门,有很多已配置好的环境和接口,直接调用调试就可以了,以后怕是没有什么能够难住我了!目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《华为云一站式API解决方案平台API Explorer上线》据悉,华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l 报名地址l 奖项设置API入门学习赛·探险寻宝之旅l 报名地址l 奖项设置
-
我如果在华为平台注册设备时,时区只有北京 ,如下:但是我在Api调用时设置timezone 只看到了如下另外这个时区有什么有呢 ?
-
本期体验产品: 华为云API Explorer体验采用问卷调查的形式,(正式开始活动后详见附件)体验人数不限,体验官完成问卷即可。我们将于5月6日开启招募~~最后将会按照问卷内容,从中筛选出高质量体验报告,给予礼品奖励。中奖率超高哟~~☆奖品设置如下☆ 金牌测评体验报告奖:3名奖品:雷柏(Rapoo) 机械键盘 银牌测评体验报告奖:7名奖品:颈枕1个 体验评测报告优秀参与奖:15名奖品:3合1数据线1个API Explorer为开发者提供一站式API解决方案平台,集成华为云服务所有开放API,支持全量快速检索、可视化调试、帮助文档、交流咨询,现诚邀您来参与体验,更有机会获得精美礼品!产品链接:https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview☆如何报名华为云产品体验官☆请先填写报名表单,报名成为华为云产品体验官。审核成功后,小助手会添加您的微信邀您进入华为云产品体验官群成为华为云产品体验官后续产品体验通知会在体验官群内发布~ 产品体验官可免费参与产品体验并获得相应奖励 扫描二维码,填写报名表
-
使用Roma开发一个接口在LiveData阶段测试都没有问题,但是授权后在API网关却没有返回数据以下是截图:
-
请问,新版的ioTDA物联网平台的api不适合用在oceanConnect吗?我用新的api查询设备消息,返回的结果说没有此设备物联网平台和oceanConnect是本来就分开的吗?
-
作为一个技术服务人员,经常对外支撑;简洁、准确的信息;让支撑技术人员感知到提问者是高手、提问者是满满的求知诚意。 首先是版本好、版本号、版本号【比如:版本号XXX,越详细越好;避免“用最新版本、你们摸人给的版本、下载的版本”,这信息就没有含金量了】 其次是需求场景化描述,即你原来的目标是什么 【比如:用XX API/SDK实现VR直播场景;避免直接说XXX问题,被带入坑了】 提交问题或疑问,用证据【比如:API接口说明、日志、配置项、代码 ;避免“提交问题点,不说明上下文”,“只有主观感受,无客观(书面)证据”】 尽量让技术支持人员做选择题/判断题【比如:是否这样先XX再XXX,最后XXX 的使用 ? 接口返回值为以下3类XXXX 吗?做了如下尝试,哪种方式对性能损耗最多了 ?避免“如何搞定了?”“方案是什么了 ”“为什么性能不达标了”】 如此套路以后,技术支撑人员会快速对齐目标,快速利用经验来解决;另外,如果他真不会,有了以上信息,可高效转接第二人、第三人;也会快速了。;
-
https://mp.weixin.qq.com/s?__biz=MzA5MjM5OTYzNA==&mid=2247483912&idx=1&sn=92bad07f28b09a17dcb2f10462b629d8&chksm=906cf375a71b7a6340f2de361aade758826c83d4716d23c337a0fcf6021738674a52feeeecca&token=109181865&lang=zh_CN#rd
-
背景XX Android App使用WebView+JavaScript的方式构建应用。最近项目工程升级了打包SDK版本至Api28,出现一个奇怪的问题:使用应用管理杀掉App后,再次启动App,进入Web页面后,按后退键,本来应该返回上一个Web页面,但是直接却退出了。初步分析,应该和Android SDK的Api28的变更有关系。参考Android开发者网站的Api28变更说明(https://developer.android.com/about/versions/pie/android-9.0-changes-28),但是没有找到确切的原因。经过多次测试发现:异常场景:安装App->启动App->杀掉App进程->启动App->进入Web页面->进入另一个Web页面->按后退键->App直接退出;正常场景:安装App->启动App->进入Web页面->进入另一个Web页面->按后退键->App后退至上一个Web页面。因此打算使用Android Studio进行单步调试1. 正常情况下,Activity收到的按钮事件能够正常传递到WebView事件处理方法中,异常情况下,Activity收到的按钮事件无法传递到WebView的时间处理方法中;2. 按钮事件从Activity到WebView需要经过SDK的处理逻辑,需要走读SDK源码,查看可能的原因;3. SDK代码复杂,单步调试容易跟丢;4. 单步调试定位到的行号和SDK源码的行号有差别,无法对上,加大单步调试的难度。这时,想到有正常情况和异常情况作对比,是不是可以通过正常情况下方法调用栈信息,来指导异常情况的单步调试?第一步:在正常情况下,单步调试至WebView的按钮事件处理方法,此时方法调用栈信息如下图所示,其中按钮事件从CordovaViewActivity->SystemWebView。第二步:在异常情况下,从CordovaViewActivity类的dispatchKeyEvent方法,一步一步按照上面的方法调用栈的行号,到达对应行号后,进入方法。例如当单步调试到dispatchKeyEvent:557,AppCompatActivity时,按F8进入下一行558,这时dispatchKeyEvent:558,AppCompatActivity在上面的堆栈中有,此时按F7进入函数dispatchKeyEvent:xxx,CompatActivity中。第三步:按照第二步的方法,直到发现与调用栈不一致的执行顺序。在这里,我们发现程序从DecorView:529走到ViewGroup类dispatchKeyEvent方法1903行时,直接跳至1910行,因此可以初步判断程序在这里未按预期执行。第四步:通过查看ViewGroup类dispatchKeyEvent方法(代码行稍微有些偏移),结合内存变量mFocused的值为null,可知是mFocused的值为空导致异常。到这里,我们就发现了这个mFocused值是问题的关键。经过上网查看资料,这个mFocused的值指向当前焦点的View。结合Android Api28的一个变更:不会再轻触模式下隐式分配初始焦点,基本可以确定就是焦点的问题了。解决方法在SystemWebView中增加请求焦点的代码requestFoucus(),问题解决。博文引自:https://bbs.huaweicloud.com/blogs/152470问题请在本贴讨论。
-
首先能以“php + 文件名”的形式执行成功,说明代码没问题。因为在代码中设置了:不检测服务器的证书是否由正规浏览器认证过的授权CA颁发的,不检测服务器的域名与证书上的是否一致。所以接口是单向认证。官方文档只在用postman调测这一章中提到要关闭证书校验,使Postman不再校验服务端的证书。把代码放到apache下,用浏览器访问代码,接口服务端返回的是400 No required SSL certificate was sent。这个是我不解的地方。
-
最近在做能连上华为云的独立的安卓APP,先是使用pastman模拟请求,只有api 鉴权成功了,其他的都失败了,一点原因没找到,也设置了证书啊。另外有没有大佬能提供一下安卓的demo,或者是给一点思路呢?如果可以的话就谢谢啦!
-
ECS相关API中没有获取ECS实例到期日期的信息,通过订单相关API也对应不到具体实例里,不好用啊!**********/cloudservers/{server_id}返回值根本没有过期时间,/v1.0/**********/common/order-mgr/orders/detail?page_size=1000&page_index=1返回值有过期时间,但又和具体的实例对应不上,真不知道api设计时候这人是不是脑子有水?
-
1 订单接口说明ManageOne中,用户通过申请订单的方式对云资源进行申请、变更、释放操作,实现对云资源生命周期的管理,订单接口具有以下特点:订单支持关联审批流程(最大支持五级审批,详情参考ManageOne用户指南),用户完成资源配置并提交后,如果审批通过,Manageone会自动完成订单实施;订单接口对云服务接口(经加固后对外开放的OpenStack接口)进行了一定程度的封装,通过调用订单接口,可以同步完成云资源的多个操作,如,申请虚拟机的同时,为虚拟机挂载数据盘,绑定弹性IP;通过订单接口申请、释放云资源时,会同步扣除、恢复租户配额,当租户配额不够时,会导致订单实施失败;订单接口只提供资源的申请,延期,变更,释放功能,不提供云服务的查询,操作(如虚拟机的开关机,列表查询等)功能,不能独立使用,需要配合云服务接口使用,也就是说,您需要通过ManageOne订单接口申请,延期,变更,释放云资源,使用云服务接口查询,操作云资源说明: 云服务接口也支持申请云资源,与使用ManageOne订单接口的区别是:通过云服务接口创建的资源,在ManageOne页面上,可以查询,操作这些资源,但不能执行变更(如扩容,减容),释放云资源的操作ManageOne中为该租户设置的配额也将不再生效(即使用云服务接口申请、释放资源,ManageOne中对应租户的配额不会变化),这也意味着,如果您不加约束,租户可以超配额申请资源2 订单接口使用场景如第1部分所述,ManageOne订单接口是在云服务接口的基础上封装得到的,包含了ManageOne自身的运营特性,例如产品、服务、区域、配额等,使用上有一定的约束,如果您希望通过调用接口实现对华为云Stack中云资源的生命周期管理,请参考以下几个场景进行评估,符合以下任何一种场景的,建议您选择使用ManageOne订单接口进行对接:如果您公司购买了并部署了华为云Stack产品,您希望通过自动化工具实现云服务资源的自动化发放,从而提高资源申请效率;如果您购买了并部署了华为云Stack产品,公司围绕IT资产的运营运维有一整套流程,您希望已有的流程平台(如ITSM、BOSS等)能够与华为云Stack进行对接,实现现有流程与云服务的整合,在简化服务的申请周期,提高应用上线效率的同时,还能够实现云资源的全流程监控;如果您是云服务提供商,将华为云Stack提供的云服务,按照租户的形式租售给了客户,客户希望实现云服务的自动化发放,需要您提供对接接口;如果您是云服务提供商,希望现有运营平台能够与华为云Stack对接,实现租户的自动化创建,并为每个租户预置指定类型的云资源,租户的日常运维由运维部门通过ManageOne进行运维。如果您购买了多家厂商的云平台,希望通过一套云管理软件进行纳管,建议您直接对接云服务接口进行对接,这样可以屏蔽ManageOne的运营特性,只关注云服务特性,对接起来更加灵活。3 对接准备订单接口参数较为复杂,建议您使用可视化工具对接口进行测试,如postman(使用前请关闭SSL证书校验),restclient等。请参考帖子:【华为云Stack ManageOne 运营侧北向对接】北向接口对接准备工作,获取接口文档,接口对接需要的IP,域名等信息本帖提供的方法,适配华为云Stack 6.5.X,8.0版本4 订单接口对接步骤我们知道ManageOne订单接口不能独立使用,需要配合云服务接口使用,这里给出主要的对接步骤,如下:通过用户名和密码调用鉴权接口获取Token和user_id。(可选)通过user_id查询用户关联的project,用户是以project维度操作资源,资源也必须属于某一个project根据选择的project的id查询project详细信息,获取region_id、支持的云服务列表、每个云服务的资源池id和包含的az(可用分区)列表。选择需要申请的云服务类型,比如云硬盘的service_type为evs。订购接口还需要product_id,因此通过查询可用产品列表接口获取。根据不同的云服务定义的数据结构获取对应的参数,这部分由每个云服务具体的订购章节详细描述,参考《ManageOne 6.5.x 云服务Params参数说明》。组合订购接口所需的所有参数,调用接口完成订购。下面给出通过订单接口创建、释放弹性IP(仅type1和type2场景支持弹性IP服务)的详细步骤:5 申请弹性IP这里先给出涉及到的接口清单,如下:序号接口功能URL涉及到的接口文档调用接口使用的域名(样例)1鉴权【POST】/v3/auth/tokens《ManageOne 6.5.X OTenantSecurity服务API参考.doc》iam-apigateway-proxy.demo.com2查询用户关联的project列表【GET】/rest/vdc/v3.0/users/{user_id}/projects《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com3查询project详情,获取该project关联的资源池信息【GET】/rest/vdc/v3.1/projects/{project_id}《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com4查询可申请的产品列表【GET】/rest/product/v3.0/apply/products《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com5查询云资源池可用分区【GET】/rest/serviceaccess/v3.0/available-zones《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com6创建订购【POST】/rest/subscription/v3.0/subscriptions《ManageOne 6.5.X 运营面API参考.doc》《ManageOne 6.5.x 云服务Params参数说明》sc.demo.com7查询订单详情【GET】/rest/order/v3.0/orders/{order_id}《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com8获取外部网络列表【GET】/v2.0/networks《华为云Stack 6.5.X API接口参考.chm》>网络>VPC>VPC>网络vpc.sa-fb-1.demo.com具体接口调用步骤如下:步骤 1 获取token调用示例:URL:https://{IAM对外访问域名}/v3/auth/tokens 请求方法:POST 请求头: Content-Type: application/json;charset=UTF-8 Accept: application/json;charset=UTF-8 Connection: keep-alive 请求体: { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "租户名" }, "name": "XXXXXX", "password": "XXXXXX" } } }, "scope": { "project": { "domain": { "name": "租户名" }, "id": "项目Id" } } } }响应消息如下:响应头: X-Subject-Token→MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 响应体: { "token": { "expires_at": "2019-09-09T07:38:55.643000Z", "methods": [ "password" ], "catalog": [], "roles": [ { "name": "vdc_adm", "id": "880ed0477e684b1db7634572ecf19c5c" }, { "name": "te_admin", "id": "7849dd0fc806417c908bb21ea93b5def" }, { "name": "tag_adm", "id": "7ef11d3399a44a56b722b3c017478e34" }, { "name": "approv_adm", "id": "5528afb8b7c946b5bda00a10ca041748" }, { "name": "vdc_owner", "id": "2034341ae2b44fee94c244a8069cde0b" } ], "project": { "domain": { "name": "xssvdc", "id": "15488ac7aec547a68d9451c91173c68c" }, "name": "xssvdc", "id": "27a008f1b83e4dfdbf1143dd336006df" }, "issued_at": "2019-09-08T07:38:55.643000Z", "user": { "domain": { "name": "xssvdc", "id": "15488ac7aec547a68d9451c91173c68c" }, "name": "xssvdc", "id": "b54310fb838b4f8ebf1e9d23bf9691d5" //用户Id } } }从响应头中我们可以获得X-Subject-Token的值,即为我们所需要的token的值;从响应体中还可以获得用户的Id,以便后续查询用户关联的所有的project步骤2 查询用户关联的project(可选)创建资源时,需要指定该资源所属的project,若一个租户下有多个project,第三方平台需要指明需要使用的project,此时需要查询该用户关联的project,若仅涉及单个project,则不涉及此操作。需要说明的是,当选择某个project创建资源时,需要用该project参考步骤1去获取token。调用示例如下:URL: https://{ManageOne运营侧API对外域名}/rest/vdc/v3.1/users/{user_id}/projects 请求方法:GET 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "total": 1, "projects": [ { "domain_id": "15488ac7aec547a68d9451c91173c68c", "tenant_id": "39d881e6-e6a6-4516-8d8e-83446abc263b", "role_name": null, "tenant_name": "tt002", "regions": [ { "region_status": "normal", "region_id": "dg-tky-1", "region_name": { "en_us": "东莞", "zh_cn": "东莞" } } ], "level": "2", "role_id": null, "name": "pj002", "iam_project_name": "pj002", "description": null, "id": "4313bc0e240e4086995e606f6601b730", "enabled": true }, { "domain_id": "15488ac7aec547a68d9451c91173c68c", "tenant_id": "1cfbb21d-3e45-4a0a-887f-c9e6ab215cec", "role_name": null, "tenant_name": "test001", "regions": [ { "region_status": "normal", "region_id": "dg-tky-1", "region_name": { "en_us": "东莞", "zh_cn": "东莞" } } ], "level": "2", "role_id": null, "name": "test001", "iam_project_name": "test001", "description": null, "id": "147c59f42277405e854e7a3123dea3a9", "enabled": true } ] }步骤 3 查询资源池信息创建、变更、删除资源时,需要指定资源所在的region、资源池、可用分区,我们可以通过查询project详情获取该project关联的region、资源池、可用分区信息,接口调用示例如下:URL: https://{ManageOne运营侧API对外域名}/rest/vdc/v3.1/projects/{project_id} 请求方法:GET 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "project": { "domain_id": "15488ac7aec547a68d9451c91173c68c", "tenant_id": "d58cc7b4-59a8-49ff-8f0c-0c7dff90b5e9", "tenant_name": "xssvdc", "regions": [ { "region_status": "normal", "cloud_infras": [ { "cloud_infra_status": "normal", "cloud_infra_name": "OpenStack_dg-tky-1", "cloud_infra_type": "FUSION_CLOUD", "azs": [ { "az_status": "normal", "az_name": "华为", "az_id": "az0.dc0" } ], "cloud_infra_id": "FUSION_CLOUD_dg-tky-1" } ], "region_id": "dg-tky-1", "region_name": { "en_us": "东莞", "zh_cn": "东莞" } } ], "is_shared": false, "name": "xssvdc", "tenant_type": "vdc", "region_name": null, "id": "27a008f1b83e4dfdbf1143dd336006df", "enabled": true } }此处我们可以获得region_id、cloud_infra_id、az_id,需要注意的是,创建资源时指定的AZ必须与cloud_infra_id、region_id匹配,不能交叉混用!!!步骤4 查询产品列表不同的云服务在ManageOne中体现为对外提供不同的产品,查询时需要指定产品类型(service_type),常用类型有:service_type云服务名称ecs弹性云服务器evs云硬盘ims镜像服务vpc虚拟私有云vfw虚拟防火墙elb弹性负载均衡as弹性伸缩bms裸金属服务调用示例如下:URL: https://{ManageOne运营侧API对外域名}/rest/product/v3.0/products?limit=100&start=1&status=online&service_type=eip®ion_id={region_id}(region_id取值由步骤3获取)请求方法:GET 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体(本示例为查询ecs,请结合实际情况,选择需要查询的产品类别): { "total": 1, "products": [ { "product_id": "b507d3d5c88b4b64adf7d87a20cdf655", "service_type": "ecs", "create_vdc_id": "all", "create_user_id": "32cb5a3c9de44bcf9696db98c1db828a", "icon_id": "defaulticonecs", "catalog_id": "1", "region_id": "dg-dg-1", "params": "{}", "name": "{\"en_US\":\"ECS\",\"zh_CN\":\"弹性云服务器\"}", "description": "{\"zh_CN\": \"由CPU、内存、磁盘等组成的随时可获取、弹性可扩展、按需使用的虚拟的计算服务器。\",\"en_US\": \"Provides scalable virtual compute servers consisting of CPUs, memory, and disks resources.\"}", "create_time": 1585897648000, "publish_status": "publish", "deletable_status": "normal", "is_default": true, "publish_scope": "[]", "online_scope": "[{\"vdcName\":\"all\",\"vdcId\":\"all\"}]", "online_status": "online", "approval": false, "price": null, "resource_pool_id": "", "project_id": "", "az_id": "", "secret_params": null, "product_type": null } ] }响应体中,approval字段值为false的产品表示该产品没有关联人和审批流程,申请该产品后,不需要经过任何审批流程,提交订单后就会实施,对接时建议使用此类产品。步骤 5 查询可用外部网络查询可用的外部网络,请求示例如下:URL: https://{VPC对外访问域名}/v2.0/networks?router:external=True&tags=service_type=Internet 请求方法:GET 请求头: Content-Type: application/json;charset=UTF-8 Accept: application/json;charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "networks": [ { "provider:physical_network": "physnet1", "ipv6_address_scope": null, "port_security_enabled": true, "mtu": 1500, "id": "cfd58c32-eb48-4fe4-8744-749940b73b72", "router:external": true, "availability_zone_hints": [], "availability_zones": [ "nova" ], "provider:segmentation_id": 210, "ipv4_address_scope": null, "shared": true, "project_id": "a3f457bbf1054e27a59804f4050f24e1", "status": "ACTIVE", "subnets": [ "39385d8e-0d67-4ecc-a1f0-1db294c3f21f" ], "description": "", "tags": [ "group=group1", "service_type=Internet", "az=az0.dc0", "location=DG:localcloud", "name=exNet_02" ], "updated_at": "2019-06-11T01:24:17", "is_default": false, "qos_policy_id": null, "name": "ext_net02", "admin_state_up": true, "tenant_id": "a3f457bbf1054e27a59804f4050f24e1", "created_at": "2019-06-11T01:24:17", "provider:network_type": "vlan" }, { "provider:physical_network": "physnet1", "ipv6_address_scope": null, "port_security_enabled": true, "mtu": 1500, "id": "eaded83b-1f76-42a0-84ea-df711e01db3e", "router:external": true, "availability_zone_hints": [], "availability_zones": [ "nova" ], "provider:segmentation_id": 209, "ipv4_address_scope": null, "shared": true, "project_id": "a3f457bbf1054e27a59804f4050f24e1", "status": "ACTIVE", "subnets": [ "dd6e78b3-aa76-406e-b81a-947f31f0c584" ], "description": "", "tags": [ "group=group2", "service_type=Internet", "az=az0.dc0", "location=DG:localcloud", "name=exNet_01" ], "updated_at": "2019-06-11T01:24:04", "is_default": false, "qos_policy_id": null, "name": "ext_net01", "admin_state_up": true, "tenant_id": "a3f457bbf1054e27a59804f4050f24e1", "created_at": "2019-06-11T01:24:04", "provider:network_type": "vlan" } ] }provider:physical_network的值即为物理网络名称,Id即为外部网络的Id。若查询出来的外部网络为空,请联系现场运维工程师为一级VDC分配外部网络。我们现在获得了创建弹性Ip所需的所有参数,订购接口所需主要参数如下:序号参数名称参考值备注1operate_typeapply申请,固定值2service_typeeip弹性IP,固定值3region_idsa-fb-11区域id,步骤3获取4tenancy30租期截止时间,永久有效则填写05product_id产品id,步骤4获取,查找eip的产品id6tenant_id云服务中的tenant_id和manageOne中的project_id相同,与获取token时指定的project相同7params配置EIP所需参数,见后续表格说明params参数说明参数类型必选值域描述regionIdString是-区域id,步骤3获取publicipObject是-弹性IP信息。tenant_idString是-与获取token时指定的project相同bandwidthObject是-带宽信息。countInteger是-申请弹性IP的数量,用户输入值displayObject是-订单页面呈现的内容。publicip参数说明-参数类型必选值域描述typeString是-弹性IP类型,参考步骤5,填写外部网络名称即可external_net_idString否-外部网络ID,参考步骤5,填写外部网络Idsubnet_idString是-弹性IP所属子网ID,参考步骤5,填写外部网络子网IdportIdString否-弹性IP关联的端口ID。ip_addressString否-弹性IP地址。若不传此参数,系统会自动分配。isCreateBandwidthBoolean否-是否创建带宽。profileMap<String, Object>否-弹性IP资源详情,以key-value形式存储。tagsList<String>否-标签列表。expiredString否-弹性IP到期时间。profile参数说明参数类型必选值域描述product_idString否-产品ID。regionIdString否-区域ID。user_idString否-用户Id,参考步骤1bandwidth参数说明参数类型必选值域描述idString否-带宽ID。共享带宽必选,独占带宽不选。nameString是由中文、英文字母、数字、下划线、中划线组成,长度1-64位。带宽名称。独占带宽必选,共享带宽不选。sizeInteger是-带宽大小。独占带宽必选,共享带宽不选。share_typeString是WHOLE,PER带宽共享类型(共享WHOLE/独占PER)。public_ip_id_specList<PublicIpAndId>否-此字段暂不使用。billing_infoString否-账单信息。tenant_idString否-项目id。bandwidth_typeString否-带宽类型。charge_modeString否-收费模式。descriptionString否长度0-64位。带宽描述。publicip_infoList<PublicIpInfo>否-关联的EIP信息。sharedBoolean否-是否租户级别的资源。rule_typeString否-带宽类型(fip qos/端口qos)。display参数说明参数类型必选值域描述zh_CNList<Resource>是-中文显示内容。en_USList<Resource>是-英文显示内容。Resource参数说明参数类型必选值域描述labelString是-显示key值。valueString是-显示value值。typeString是-显示value的类型(string,array)。步骤6 创建订单,申请弹性IP订单接口中的params参数说明,请参考《ManageOne 6.5.x 云服务Params参数说明》URL: https://{ManageOne运营侧API对外域名}/rest/subscription/v3.0/subscriptions 请求方法:POST 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJK4rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体: { "subscriptions": [ { "operate_type": "apply", "product_id": "a67a5dee639d4278915b3ca05de80a2c", "region_id": "boc-test-1", "project_id": "1e0685ced7e04698b88f6268bce3af97", "service_type": "eip", "tenancy": 0, "params": "{\"regionId\":\"boc-test-1\",\"tenant_id\":\"1e0685ced7e04698b88f6268bce3af97\",\"bandwidth\":{\"name\":\"bandwidth-ed7c\",\"share_type\":\"PER\",\"size\":\"5\",\"description\":\"\"},\"publicip\":{\"ip_address\":\"\",\"subnet_id\":\"f81af9a8-b241-4f5e-a5ed-7fb25b4b16c2\",\"type\":\"exNet_02\",\"profile\":{\"product_id\":\"\",\"regionId\":\"boc-test-1\",\"user_id\":\"1e0685ced7e04698b88f6268bce3af97\"}},\"count\":1,\"display\":{\"en_US\":[{\"label\":\"Region\",\"value\":\"boc-test-1\",\"type\":\"string\"},{\"label\":\"External Network\",\"value\":\"exNet_02\",\"type\":\"string\"},{\"label\":\"Subnet\",\"value\":\"160.104.17.0/24\",\"type\":\"string\"},{\"label\":\"Assignment Mode\",\"value\":\"Automatic\",\"type\":\"string\"},{\"label\":\"Bandwidth Name\",\"value\":\"bandwidth-ed7c\",\"type\":\"string\"},{\"label\":\"Bandwidth Size \",\"value\":\"5Mbit/s\",\"type\":\"string\"},{\"label\":\"Description\",\"value\":\"\",\"type\":\"string\"}],\"zh_CN\":[{\"label\":\"地域\",\"value\":\"boc-test-1\",\"type\":\"string\"},{\"label\":\"外部网络\",\"value\":\"exNet_02\",\"type\":\"string\"},{\"label\":\"子网\",\"value\":\"160.104.17.0/24\",\"type\":\"string\"},{\"label\":\"分配方式\",\"value\":\"自动分配\",\"type\":\"string\"},{\"label\":\"带宽名称\",\"value\":\"bandwidth-ed7c\",\"type\":\"string\"},{\"label\":\"带宽大小\",\"value\":\"5Mbit/s\",\"type\":\"string\"},{\"label\":\"描述\",\"value\":\"\",\"type\":\"string\"}]}}" } ] } 响应体: { "purchases": [ { "subscription_id": "20190914113546169610061" } ], "expected_total": 0, "error_details": null }subscription_id即为订单ID步骤7 查询订单详情,确认订单实施状态订单提交成功后,需要定时轮询订单状态,直到订单状态(status字段)为成功URL: https://{ManageOne运营侧API对外域名}/rest/order/v3.0/orders/{order_id}(order_id由上一步响应体获得) 请求方法:POST 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "order_id": "20190914113546169610061", "parents_id": null, "type": "apply", "service_type": "vpc", "params": "{\"regionId\":\"dg-tky-1\",\"tenant_id\":\"27a008f1b83e4dfdbf1143dd336006df\",\"vpc\":{\"name\":\"vpc-5e10\",\"ntp\":[],\"ntp_v6\":[]},\"subnet\":{\"regionId\":\"dg-tky-1\",\"tenantId\":\"27a008f1b83e4dfdbf1143dd336006df\",\"availableZoneId\":\"\",\"name\":\"subnet-5e10\",\"dhcpEnable\":true,\"cidr\":\"192.168.10.0/24\",\"physicalNetwork\":\"physnet1\",\"segmentationId\":\"177\",\"routed\":false,\"dnsList\":[\"160.102.8.53\",\"160.102.8.54\"]},\"display\":{\"en_US\":[{\"label\":\"Region\",\"value\":\"东莞\",\"type\":\"string\"},{\"label\":\"VPC Name\",\"value\":\"vpc-5e10\",\"type\":\"string\"},{\"label\":\"External Network\",\"value\":\"\",\"type\":\"string\"}],\"zh_CN\":[{\"label\":\"区域\",\"value\":\"东莞\",\"type\":\"string\"},{\"label\":\"VPC名称\",\"value\":\"vpc-5e10\",\"type\":\"string\"},{\"label\":\"外部网络\",\"value\":\"\",\"type\":\"string\"}]}}", "create_user_id": "b54310fb838b4f8ebf1e9d23bf9691d5", "create_user_name": "xssvdc", "vdc_id": "d58cc7b4-59a8-49ff-8f0c-0c7dff90b5e9", "vdc_name": "xssvdc", "status": "successed", "create_time": "2019-06-11 01:53:42", "implement_time": "2019-06-11 01:53:43", "complete_time": "2019-06-11 01:53:48", "project_id": "27a008f1b83e4dfdbf1143dd336006df", "cloud_infra_id": null, "product_id": "04e12eba75e243368f5cb6a0f52db4af", "region_id": "dg-tky-1", "product_defination_params": "{\"en_US\":\"VPC\",\"zh_CN\":\"虚拟私有云\"}", "tenancy": "0", "original_tenancy": "0", "time_zone": null, "comments": null, "contract_number": null, "rate_params": null, "domain_id": null }6 删除弹性IP删除弹性IP,我们需要指定弹性IP的Id,所属的区域,AZ等信息,步骤如下:步骤 1 获取token参考第5章 步骤1即可步骤2 查询区域列表参考 第5章 步骤3即可步骤3 查询弹性IP列表URL: https://{VPC对外访问域名}/v2.0/floatingips 请求方法:GET 请求头: Content-Type: application/json;charset=UTF-8 Accept: application/json;charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "floatingips": [ { "fixed_ip_address": "44.0.0.124", "floating_ip_address": "8.0.0.11", "floating_network_id": "6c136cc7-3e0b-457e-9316-1a9970e639e2", "id": "046fa5d9-bf50-460c-9ba2-3d069ff5ee4a", "port_id": "291171a7-3be2-4369-896d-9714108c085b", "router_id": "77b15706-4a9e-4e06-b8ce-0b4fea07af3c", "status": "ACTIVE", "tenant_id": "4ffcfaa890994422b23ed46bb98e8df6", "created_at": "2018-12-16T23:47:30", "updated_at": "2018-12-17T00:01:52" } ] }至此,我们获得了创建删除弹性IP订单所需要的参数,如下:序号参数名称参考值备注1operate_typedelete删除,固定值delete2service_typeeip弹性IP,固定值eip3region_idsa-fb-11区域id,步骤3获取4tenant_id云服务中的tenant_id和manageOne中的project_id相同,与步骤1中获取token时指定的project相同5params删除EIP请求参数,见后续表格说明params参数说明参数类型必选值域描述publicIpIdString是-弹性IP ID,参考步骤3获取tenant_idString是-项目ID,与步骤1中获取token时指定的project相同regionIdString是-区域ID,参考步骤2获取idsList<Map<String, String>>是-资源信息。displayObject是-订单页面呈现的内容。ids参数信息参数类型必选值域描述idString是-资源id。必须和publicIpId保持一致。参考步骤3获取service_typeString是-服务类型。取值为eip。display参数说明参数类型必选值域描述zh_CNList<Resource>是-中文显示内容。en_USList<Resource>是-英文显示内容。Resource参数说明参数类型必选值域描述labelString是-显示key值。valueString是-显示value值。typeString是-显示value的类型(string,array)。步骤5 调用订单接口删除弹性IP订单接口中的params参数说明,请参考《ManageOne 6.5.x 云服务Params参数说明》URL: https://{ManageOne运营侧API对外域名}/rest/subscription/v3.0/subscriptions 请求方法:POST 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体: { "subscriptions": [ { "operate_type": "delete", "service_type": "eip", "region_id": "boc-test-1", "project_id": "1e0685ced7e04698b88f6268bce3af97", "params": "{\"publicIpId\":\"0a6948ad-3e79-4c0c-bba5-728d7427a826\",\"tenant_id\":\"1e0685ced7e04698b88f6268bce3af97\",\"regionId\":\"boc-test-1\",\"display\":{\"en_US\":[{\"label\":\"Region\",\"value\":\"boc-test-1\",\"type\":\"string\"},{\"label\":\"External Network\",\"value\":\"exNet_02\",\"type\":\"string\"},{\"label\":\"Elastic IP Address\",\"value\":\"160.104.17.172\",\"type\":\"string\"}],\"zh_CN\":[{\"label\":\"地域\",\"value\":\"boc-test-1\",\"type\":\"string\"},{\"label\":\"外部网络\",\"value\":\"exNet_02\",\"type\":\"string\"},{\"label\":\"弹性IP地址\",\"value\":\"160.104.17.172\",\"type\":\"string\"}]},\"ids\":[{\"id\":\"0a6948ad-3e79-4c0c-bba5-728d7427a826\",\"service_type\":\"eip\"}]}" } ] } 响应体: { "purchases": [ { "subscription_id": "20190914110658422269247" } ], "expected_total": 0, "error_details": null }同样的,我们需要调用订单查询接口(参考底5章 步骤7),查询订单状态,直到弹性IP删除完成补充说明:弹性IP的查询、属性更新等操作均需要调用云服务的接口,具体接口参考文档《华为云Stack 6.5.X API接口参考.chm》中“网络”-->“EIP”章节。弹性IP的申请、删除、扩容需要使用ManageOne订单接口,不可将ManageOne订单接口与弹性IP接口混用(如:使用ManageOne订单接口创建资源,使用弹性IP接口删除资源),否则会导致ManageOne上数据展示异常
-
1 订单接口说明ManageOne中,用户通过申请订单的方式对云资源进行申请、变更、释放操作,实现对云资源生命周期的管理,订单接口具有以下特点:订单支持关联审批流程(最大支持五级审批,详情参考ManageOne用户指南),用户完成资源配置并提交后,如果审批通过,Manageone会自动完成订单实施;订单接口对云服务接口(经加固后对外开放的OpenStack接口)进行了一定程度的封装,通过调用订单接口,可以同步完成云资源的多个操作,如,申请虚拟机的同时,为虚拟机挂载数据盘,绑定弹性IP;通过订单接口申请、释放云资源时,会同步扣除、恢复租户配额,当租户配额不够时,会导致订单实施失败;订单接口只提供资源的申请,延期,变更,释放功能,不提供云服务的查询,操作(如虚拟机的开关机,列表查询等)功能,不能独立使用,需要配合云服务接口使用,也就是说,您需要通过ManageOne订单接口申请,延期,变更,释放云资源,使用云服务接口查询,操作云资源说明: 云服务接口也支持申请云资源,与使用ManageOne订单接口的区别是:通过云服务接口创建的资源,在ManageOne页面上,可以查询,操作这些资源,但不能执行变更(如扩容,减容),释放云资源的操作ManageOne中为该租户设置的配额也将不再生效(即使用云服务接口申请、释放资源,ManageOne中对应租户的配额不会变化),这也意味着,如果您不加约束,租户可以超配额申请资源2 订单接口使用场景如第1部分所述,ManageOne订单接口是在云服务接口的基础上封装得到的,包含了ManageOne自身的运营特性,例如产品、服务、区域、配额等,使用上有一定的约束,如果您希望通过调用接口实现对华为云Stack中云资源的生命周期管理,请参考以下几个场景进行评估,符合以下任何一种场景的,建议您选择使用ManageOne订单接口进行对接:如果您公司购买了并部署了华为云Stack产品,您希望通过自动化工具实现云服务资源的自动化发放,从而提高资源申请效率;如果您购买了并部署了华为云Stack产品,公司围绕IT资产的运营运维有一整套流程,您希望已有的流程平台(如ITSM、BOSS等)能够与华为云Stack进行对接,实现现有流程与云服务的整合,在简化服务的申请周期,提高应用上线效率的同时,还能够实现云资源的全流程监控;如果您是云服务提供商,将华为云Stack提供的云服务,按照租户的形式租售给了客户,客户希望实现云服务的自动化发放,需要您提供对接接口;如果您是云服务提供商,希望现有运营平台能够与华为云Stack对接,实现租户的自动化创建,并为每个租户预置指定类型的云资源,租户的日常运维由运维部门通过ManageOne进行运维。如果您购买了多家厂商的云平台,希望通过一套云管理软件进行纳管,建议您直接对接云服务接口进行对接,这样可以屏蔽ManageOne的运营特性,只关注云服务特性,对接起来更加灵活。3 对接准备订单接口参数较为复杂,建议您使用可视化工具对接口进行测试,如postman(使用前请关闭SSL证书校验),restclient等。请参考帖子:【华为云Stack ManageOne 运营侧北向对接】北向接口对接准备工作,获取接口文档,接口对接需要的IP,域名等信息本帖提供的方法,适配华为云Stack 6.5.X,8.0版本4 订单接口对接步骤我们知道ManageOne订单接口不能独立使用,需要配合云服务接口使用,这里给出主要的对接步骤,如下:通过用户名和密码调用鉴权接口获取Token和user_id。(可选)通过user_id查询用户关联的project,用户是以project维度操作资源,资源也必须属于某一个project根据选择的project的id查询project详细信息,获取region_id、支持的云服务列表、每个云服务的资源池id和包含的az(可用分区)列表。选择需要申请的云服务类型,比如云硬盘的service_type为evs。订购接口还需要product_id,因此通过查询可用产品列表接口获取。根据不同的云服务定义的数据结构获取对应的参数,这部分由每个云服务具体的订购章节详细描述,参考《ManageOne 6.5.x 云服务Params参数说明》。组合订购接口所需的所有参数,调用接口完成订购。下面给出通过订单接口创建、释放VPC的详细步骤5 申请VPC这里先给出涉及到的接口清单,如下:序号接口功能URL涉及到的接口文档调用接口使用的域名(样例)1鉴权【POST】/v3/auth/tokens《ManageOne 6.5.X OTenantSecurity服务API参考.doc》iam-apigateway-proxy.demo.com2查询用户关联的project列表【GET】/rest/vdc/v3.0/users/{user_id}/projects《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com3查询project详情,获取该project关联的资源池信息【GET】/rest/vdc/v3.1/projects/{project_id}《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com4查询可申请的产品列表【GET】/rest/product/v3.0/apply/products《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com5查询云资源池可用分区【GET】/rest/serviceaccess/v3.0/available-zones《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com6创建订购【POST】/rest/subscription/v3.0/subscriptions《ManageOne 6.5.X 运营面API参考.doc》《ManageOne 6.5.x 云服务Params参数说明》sc.demo.com7查询订单详情【GET】/rest/order/v3.0/orders/{order_id}《ManageOne 6.5.X 运营面API参考.doc》sc.demo.com8获取外部网络列表【GET】/v2.0/networks《华为云Stack 6.5.X API接口参考.chm》>网络>VPC>VPC>网络vpc.sa-fb-1.demo.com具体接口调用步骤如下:步骤 1 获取token调用示例:URL:https://{IAM对外访问域名}/v3/auth/tokens 请求方法:POST 请求头: Content-Type: application/json;charset=UTF-8 Accept: application/json;charset=UTF-8 Connection: keep-alive 请求体: { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "租户名" }, "name": "XXXXXX", "password": "XXXXXX" } } }, "scope": { "project": { "domain": { "name": "租户名" }, "id": "项目Id" } } } }响应消息如下:响应头: X-Subject-Token→MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 响应体: { "token": { "expires_at": "2019-09-09T07:38:55.643000Z", "methods": [ "password" ], "catalog": [], "roles": [ { "name": "vdc_adm", "id": "880ed0477e684b1db7634572ecf19c5c" }, { "name": "te_admin", "id": "7849dd0fc806417c908bb21ea93b5def" }, { "name": "tag_adm", "id": "7ef11d3399a44a56b722b3c017478e34" }, { "name": "approv_adm", "id": "5528afb8b7c946b5bda00a10ca041748" }, { "name": "vdc_owner", "id": "2034341ae2b44fee94c244a8069cde0b" } ], "project": { "domain": { "name": "xssvdc", "id": "15488ac7aec547a68d9451c91173c68c" }, "name": "xssvdc", "id": "27a008f1b83e4dfdbf1143dd336006df" }, "issued_at": "2019-09-08T07:38:55.643000Z", "user": { "domain": { "name": "xssvdc", "id": "15488ac7aec547a68d9451c91173c68c" }, "name": "xssvdc", "id": "b54310fb838b4f8ebf1e9d23bf9691d5" //用户Id } } }从响应头中我们可以获得X-Subject-Token的值,即为我们所需要的token的值;从响应体中还可以获得用户的Id,以便后续查询用户关联的所有的project步骤2 查询用户关联的project(可选)创建资源时,需要指定该资源所属的project,若一个租户下有多个project,第三方平台需要指明需要使用的project,此时需要查询该用户关联的project,若仅涉及单个project,则不涉及此操作。需要说明的是,当选择某个project创建资源时,需要用该project参考步骤1去获取token。调用示例如下:URL: https://{ManageOne运营侧API对外域名}/rest/vdc/v3.1/users/{user_id}/projects 请求方法:GET 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "total": 1, "projects": [ { "domain_id": "15488ac7aec547a68d9451c91173c68c", "tenant_id": "39d881e6-e6a6-4516-8d8e-83446abc263b", "role_name": null, "tenant_name": "tt002", "regions": [ { "region_status": "normal", "region_id": "dg-tky-1", "region_name": { "en_us": "东莞", "zh_cn": "东莞" } } ], "level": "2", "role_id": null, "name": "pj002", "iam_project_name": "pj002", "description": null, "id": "4313bc0e240e4086995e606f6601b730", "enabled": true }, { "domain_id": "15488ac7aec547a68d9451c91173c68c", "tenant_id": "1cfbb21d-3e45-4a0a-887f-c9e6ab215cec", "role_name": null, "tenant_name": "test001", "regions": [ { "region_status": "normal", "region_id": "dg-tky-1", "region_name": { "en_us": "东莞", "zh_cn": "东莞" } } ], "level": "2", "role_id": null, "name": "test001", "iam_project_name": "test001", "description": null, "id": "147c59f42277405e854e7a3123dea3a9", "enabled": true } ] }步骤 3 查询资源池信息创建、变更、删除资源时,需要指定资源所在的region、资源池、可用分区,我们可以通过查询project详情获取该project关联的region、资源池、可用分区信息,接口调用示例如下:URL: https://{ManageOne运营侧API对外域名}/rest/vdc/v3.1/projects/{project_id} 请求方法:GET 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "project": { "domain_id": "15488ac7aec547a68d9451c91173c68c", "tenant_id": "d58cc7b4-59a8-49ff-8f0c-0c7dff90b5e9", "tenant_name": "xssvdc", "regions": [ { "region_status": "normal", "cloud_infras": [ { "cloud_infra_status": null, "cloud_infra_name": null, "cloud_infra_type": null, "azs": [], "cloud_infra_id": null }, { "cloud_infra_status": "normal", "cloud_infra_name": "OpenStack_dg-tky-1", "cloud_infra_type": "FUSION_CLOUD", "azs": [ { "az_status": "normal", "az_name": "华为", "az_id": "az0.dc0" } ], "cloud_infra_id": "FUSION_CLOUD_dg-tky-1" }, { "cloud_infra_status": "normal", "cloud_infra_name": "VMware_dg-tky-1", "cloud_infra_type": "VMWARE", "azs": [], "cloud_infra_id": "VMWARE_dg-tky-1" } ], "region_id": "dg-tky-1", "region_name": { "en_us": "东莞", "zh_cn": "东莞" } } ], "is_shared": false, "name": "xssvdc", "tenant_type": "vdc", "region_name": null, "id": "27a008f1b83e4dfdbf1143dd336006df", "enabled": true } }此处我们可以获得region_id、cloud_infra_id、az_id,需要注意的是,创建资源时指定的AZ必须与cloud_infra_id、region_id匹配,不能交叉混用!!!步骤4 查询产品列表不同的云服务在ManageOne中体现为对外提供不同的产品,查询时需要指定产品类型(service_type),常用类型有:service_type云服务名称ecs弹性云服务器evs云硬盘ims镜像服务vpc虚拟私有云vfw虚拟防火墙elb弹性负载均衡as弹性伸缩bms裸金属服务调用示例如下:URL: https://{ManageOne运营侧API对外域名}/rest/product/v3.0/products?limit=100&start=1&status=online&service_type=vpc®ion_id={region_id}(region_id取值由步骤3获取)请求方法:GET 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "total": 1, "products": [ { "product_id": "1222c648ff284296b0f5d848806aba9b", "service_type": "vpc", "create_vdc_id": "all", "create_user_id": "32cb5a3c9de44bcf9696db98c1db828a", "icon_id": "defaulticonvpc", "catalog_id": "3", "region_id": "dg-dg-1", "params": "{}", "name": "{\"en_US\":\"VPC\",\"zh_CN\":\"虚拟私有云\"}", "description": "{\"zh_CN\": \"虚拟私有云即VPC,是一套为云服务器构建的逻辑隔离的、由用户自主配置和管理的虚拟网络环境,同时提供灵活可靠的数据连接方式和全方位的安全防护层,旨在提升用户资源的安全性,简化用户的网络部署。\",\"en_US\": \"Virtual Private Cloud (VPC) lets you provision logically isolated, configurable, and manageable virtual networks for cloud servers. VPC also provides flexible and reliable network connection modes and comprehensive security protection. VPC is designed to improve the security of user resources and simplify network deployment.\"}", "create_time": 1585897486000, "publish_status": "publish", "deletable_status": "normal", "is_default": true, "publish_scope": "[]", "online_scope": "[{\"vdcName\":\"all\",\"vdcId\":\"all\"}]", "online_status": "online", "approval": false, "price": null, "resource_pool_id": "", "project_id": "", "az_id": "", "secret_params": null, "product_type": null } ] }响应体中,approval字段值为false的产品表示该产品没有关联人和审批流程,申请该产品后,不需要经过任何审批流程,提交订单后就会实施,对接时建议使用此类产品。步骤 5 查询可用外部网络查询可用的外部网络,请求示例如下:URL: https://{VPC对外访问域名}/v2.0/networks?router:external=True&tags=service_type=Location(若使用参数tags=service_type=Location查不到列表,请更换为tags=service_type=Intranet) 请求方法:GET 请求头: Content-Type: application/json;charset=UTF-8 Accept: application/json;charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体:{ "networks": [ { "provider:physical_network": "physnet1", "ipv6_address_scope": null, "port_security_enabled": true, "mtu": 1500, "id": "cfd58c32-eb48-4fe4-8744-749940b73b72", "router:external": true, "availability_zone_hints": [], "availability_zones": [ "nova" ], "provider:segmentation_id": 210, "ipv4_address_scope": null, "shared": true, "project_id": "a3f457bbf1054e27a59804f4050f24e1", "status": "ACTIVE", "subnets": [ "39385d8e-0d67-4ecc-a1f0-1db294c3f21f" ], "description": "", "tags": [ "group=group1", "service_type=Intranet", "az=az0.dc0", "location=DG:localcloud", "name=exNet_02" ], "updated_at": "2019-06-11T01:24:17", "is_default": false, "qos_policy_id": null, "name": "ext_net02", "admin_state_up": true, "tenant_id": "a3f457bbf1054e27a59804f4050f24e1", "created_at": "2019-06-11T01:24:17", "provider:network_type": "vlan" }, { "provider:physical_network": "physnet1", "ipv6_address_scope": null, "port_security_enabled": true, "mtu": 1500, "id": "eaded83b-1f76-42a0-84ea-df711e01db3e", "router:external": true, "availability_zone_hints": [], "availability_zones": [ "nova" ], "provider:segmentation_id": 209, "ipv4_address_scope": null, "shared": true, "project_id": "a3f457bbf1054e27a59804f4050f24e1", "status": "ACTIVE", "subnets": [ "dd6e78b3-aa76-406e-b81a-947f31f0c584" ], "description": "", "tags": [ "group=group2", "service_type=Intranet", "az=az0.dc0", "location=DG:localcloud", "name=exNet_01" ], "updated_at": "2019-06-11T01:24:04", "is_default": false, "qos_policy_id": null, "name": "ext_net01", "admin_state_up": true, "tenant_id": "a3f457bbf1054e27a59804f4050f24e1", "created_at": "2019-06-11T01:24:04", "provider:network_type": "vlan" } ] }provider:physical_network的值即为物理网络名称,Id即为外部网络的Id我们现在获得了创建VPC所需的所有参数,订购接口所需主要参数如下:序号参数名称参考值备注1operate_typeapply申请,固定值apply2service_typevpc虚拟私有云,固定值vpc3region_idsa-fb-11区域id,步骤3获取4tenancy2018-07-27 15:59:59租期租期截止时间,永久有效则填写05product_id产品id,步骤4获取6tenant_id云服务中的tenant_id和manageOne中的project_id相同,步骤3获取7nametestvpc自定义新建vpc的名称8external_gateway_info:network_id外部网关的网络ID,参考步骤5,Type3场景下不需要填写,Type1、Type2场景必填9display订单显示信息,可根据需要填写,值可以为空,属性名必须有10subnetregionId子网区域id,和vpc区域id相同tenant_id和vpc的tenant_id相同,公共参数章节获取namesubnet_test子网名称,用户自定义cidr192.168.0.0/24子网IP地址段,用户自定义gatewayIp192.168.0.1子网网关地址,用户自定义dnsListDNS服务器列表physicalNetworkphysnet1外部网关的网络ID,查询接口为:【GET】/v2.0/networks,参考《华为云Stack 6.5.X API接口参考.chm》,Type1、Type2场景下不需要填写,Type3场景必填步骤6 创建订单,申请VPC订单接口中的params参数说明,请参考《ManageOne 6.5.x 云服务Params参数说明》当华为云Stack组网场景为type1、type2时,申请VPC请求示例如下:URL: https://{ManageOne运营侧API对外域名}/rest/subscription/v3.0/subscriptions 请求方法:POST 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体: { "subscriptions": [ { "operate_type": "apply", "product_id": "e50123fc503049fa9e5f9072d8b47585", "region_id": "sa-fb-11", "project_id": "1d998b1c7e264baba3203cfe9867b011", "service_type": "vpc", "tenancy": "2018-07-27 15:59:59", "params": "{\"regionId\":\"sa-fb-11\",\"tenant_id\":\"1d998b1c7e264baba3203cfe9867b011\",\"vpc\":{\"name\":\"vpc-eabb\",\"external_gateway_info\":{\"network_id\":\"27e6e110-8d29-481c-93af-c3ba39c22c37\"}},\"subnet\":{\"regionId\":\"sa-fb-11\",\"tenantId\":\"1d998b1c7e264baba3203cfe9867b011\",\"availableZoneId\":\"\",\"name\":\"subnet-eabc\",\"cidr\":\"192.168.0.0/24\",\"gatewayIp\":\"192.168.0.1\",\"dhcpEnable\":true,\"dnsList\":[\"18.125.1.51\",\"18.125.1.52\"]},\"display\":[{\"label\":\"Region\",\"value\":\"sa-fb-11\",\"type\":\"string\"},{\"label\":\"VPC Name\",\"value\":\"vpc-eabb\",\"type\":\"string\"},{\"label\":\"External Network\",\"value\":\"dummy_external_network\",\"type\":\"string\"}]}" } ] } 响应体: { "purchases": [ { "subscription_id": "20190914113546169610061" } ], "expected_total": 0, "error_details": null }subscription_id即为订单ID当华为云Stack组网场景为type3时,申请VPC请求示例如下:URL: https://{ManageOne运营侧API对外域名}/rest/subscription/v3.0/subscriptions 请求方法:POST 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体: { "subscriptions": [ { "operate_type": "apply", "product_id": "04e12eba75e243368f5cb6a0f52db4af", "region_id": "dg-tky-1", "project_id": "27a008f1b83e4dfdbf1143dd336006df", "service_type": "vpc", "tenancy": 0, "params": "{\"regionId\":\"dg-tky-1\",\"tenant_id\":\"27a008f1b83e4dfdbf1143dd336006df\",\"vpc\":{\"name\":\"vpc-97f0\",\"ntp\":[],\"ntp_v6\":[]},\"subnet\":{\"regionId\":\"dg-tky-1\",\"tenantId\":\"27a008f1b83e4dfdbf1143dd336006df\",\"availableZoneId\":\"\",\"name\":\"subnet-97f1\",\"dhcpEnable\":true,\"cidr\":\"192.168.100.0/24\",\"gatewayIp\":\"192.168.100.1\",\"physicalNetwork\":\"physnet1\",\"segmentationId\":\"\",\"routed\":false,\"dnsList\":[\"160.102.8.53\",\"160.102.8.54\"],\"allocation_pools\":[{\"start\":\"192.168.100.2\",\"end\":\"192.168.100.254\"}]},\"display\":{\"en_US\":[{\"label\":\"Region\",\"value\":\"东莞\",\"type\":\"string\"},{\"label\":\"VPC Name\",\"value\":\"vpc-97f0\",\"type\":\"string\"},{\"label\":\"External Network\",\"value\":\"\",\"type\":\"string\"}],\"zh_CN\":[{\"label\":\"区域\",\"value\":\"东莞\",\"type\":\"string\"},{\"label\":\"VPC名称\",\"value\":\"vpc-97f0\",\"type\":\"string\"},{\"label\":\"外部网络\",\"value\":\"\",\"type\":\"string\"}]}}" } ] } 响应体: { "purchases": [ { "subscription_id": "20190914113546169610061" } ], "expected_total": 0, "error_details": null }subscription_id即为订单ID步骤7 查询订单详情,确认订单实施状态订单提交成功后,需要定时轮询订单状态,直到订单状态(status字段)为成功URL: https://{ManageOne运营侧API对外域名}/rest/order/v3.0/orders/{order_id}(order_id由上一步响应体获得) 请求方法:POST 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体:无 响应体: { "order_id": "20190914113546169610061", "parents_id": null, "type": "apply", "service_type": "vpc", "params": "{\"regionId\":\"dg-tky-1\",\"tenant_id\":\"27a008f1b83e4dfdbf1143dd336006df\",\"vpc\":{\"name\":\"vpc-5e10\",\"ntp\":[],\"ntp_v6\":[]},\"subnet\":{\"regionId\":\"dg-tky-1\",\"tenantId\":\"27a008f1b83e4dfdbf1143dd336006df\",\"availableZoneId\":\"\",\"name\":\"subnet-5e10\",\"dhcpEnable\":true,\"cidr\":\"192.168.10.0/24\",\"physicalNetwork\":\"physnet1\",\"segmentationId\":\"177\",\"routed\":false,\"dnsList\":[\"160.102.8.53\",\"160.102.8.54\"]},\"display\":{\"en_US\":[{\"label\":\"Region\",\"value\":\"东莞\",\"type\":\"string\"},{\"label\":\"VPC Name\",\"value\":\"vpc-5e10\",\"type\":\"string\"},{\"label\":\"External Network\",\"value\":\"\",\"type\":\"string\"}],\"zh_CN\":[{\"label\":\"区域\",\"value\":\"东莞\",\"type\":\"string\"},{\"label\":\"VPC名称\",\"value\":\"vpc-5e10\",\"type\":\"string\"},{\"label\":\"外部网络\",\"value\":\"\",\"type\":\"string\"}]}}", "create_user_id": "b54310fb838b4f8ebf1e9d23bf9691d5", "create_user_name": "xssvdc", "vdc_id": "d58cc7b4-59a8-49ff-8f0c-0c7dff90b5e9", "vdc_name": "xssvdc", "status": "successed", "create_time": "2019-06-11 01:53:42", "implement_time": "2019-06-11 01:53:43", "complete_time": "2019-06-11 01:53:48", "project_id": "27a008f1b83e4dfdbf1143dd336006df", "cloud_infra_id": null, "product_id": "04e12eba75e243368f5cb6a0f52db4af", "region_id": "dg-tky-1", "product_defination_params": "{\"en_US\":\"VPC\",\"zh_CN\":\"虚拟私有云\"}", "tenancy": "0", "original_tenancy": "0", "time_zone": null, "comments": null, "contract_number": null, "rate_params": null, "domain_id": null }6 删除VPC删除VPC,我们需要指定VPC的Id,所属的区域,AZ等信息,步骤如下:步骤 1 获取token参考第5章 步骤1即可步骤2 查询指定VPC下关联的子网列表涉及接口如下:接口功能接口方法接口URL提供接口的云服务调用接口使用的域名(样例)获取VPC信息GET/v2.0/routers虚拟私有云vpc.sa-fb-1.demo.com获取端口列表GET/v2.0/ports?device_id={vpc_id}虚拟私有云vpc.sa-fb-1.demo.com获取子网详情GET/v2.0/subnets/{subnet-id}虚拟私有云vpc.sa-fb-1.demo.com接口调用步骤略,上表所列接口的具体参数说明,请参考接口文档《华为云Stack 6.5.X API接口参考.chm》“网络”-->“VPC”-->“VPC”章节步骤3 删除指定VPC下的所有子网涉及接口如下:接口功能接口方法接口URL提供接口的云服务调用接口使用的域名(样例)获取子网详情DELETE/v2.0/subnets/{subnet-id}虚拟私有云vpc.sa-fb-1.demo.com上表所列接口的具体参数说明,请参考接口文档《华为云Stack 6.5.X API接口参考.chm》“网络”-->“VPC”-->“VPC”章节步骤4 查询区域列表参考 第5章 步骤3即可至此,我们获得了创建删除VPC订单所需要的参数,如下:序号参数名称参考值备注1operate_typedelete删除,固定值delete,必选2service_typevpc虚拟私有云,固定值vpc,不选3region_idsa-fb-11区域id,步骤4获取4vpcIdvpc的id,即router的Id,查询接口为:【GET】/v2.0/routers,参考《华为云Stack 6.5.X API接口参考.chm》5tenant_id云服务中的tenant_id和manageOne中的project_id相同,此处与步骤1中获取token时指定的project相同6display订单显示信息,可根据需要填写,值可以为空,属性名必须有步骤5 调用订单接口删除VPC订单接口中的params参数说明,请参考《ManageOne 6.5.x 云服务Params参数说明》URL: https://{ManageOne运营侧API对外域名}/rest/subscription/v3.0/subscriptions 请求方法:POST 请求头: Content-Type: application/json; charset=UTF-8 Accept: application/json; charset=UTF-8 Connection: keep-alive X-Auth-Token: MIIEeAYJKoASASn04rMqff-Q8fk7kqiCDMLfVxqj7wIdgkM1yD4= 请求体: { "subscriptions": [ { "operate_type": "delete", "service_type": "vpc", "region_id": "sa-fb-11", "project_id": "1d998b1c7e264baba3203cfe9867b011", "params": "{\"vpcId\":\"d887af5c-1d20-43b3-8bb8-7c284813b3a9\",\"tenant_id\":\"1d998b1c7e264baba3203cfe9867b011\",\"regionId\":\"sa-fb-11\",\"display\":[{\"label\":\"Region\",\"value\":\"sa-fb-11\",\"type\":\"string\"},{\"label\":\"VPC Name\",\"value\":\"vpc-eabb\",\"type\":\"string\"}],\"ids\":[{\"id\":\"d887af5c-1d20-43b3-8bb8-7c284813b3a9\",\"service_type\":\"vpc\"}]}" } ] } 响应体: { "purchases": [ { "subscription_id": "20190914110658422269247" } ], "expected_total": 0, "error_details": null }同样的,我们需要调用订单查询接口(参考底5章 步骤7),查询订单状态,直到VPC删除完成补充说明:VPC的查询、属性更新等操作均需要调用云服务的接口,具体接口参考文档《华为云Stack 6.5.X API接口参考.chm》中“网络”-->“VPC”-->“VPC”章节。VPC的申请、删除、扩容需要使用ManageOne订单接口,不可将ManageOne订单接口与VPC接口混用(如:使用ManageOne订单接口创建资源,使用VPC接口删除资源),否则会导致ManageOne上数据展示异常
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签