华为云用户手册

  • 字符串及可变长字符串的编解码插件 如果该烟感设备需要支持描述信息上报功能,描述信息支持字符串和可变长度字符串两种类型,则按照以下步骤创建消息。 产品模型定义 重新创建一个烟感产品,并在烟感产品的开发空间完成产品模型定义。 图20 模型定义-smokedetector携带other_info 编解码插件开发 在烟感产品的开发空间,选择“插件开发”,单击“图形化开发”。 单击“新增消息”,新增消息“other_info”,上报字符串类型的描述信息。配置此步骤的主要目的是,将设备上传的字符串二进制码流消息解码成JSON格式,以便 物联网平台 理解。配置示例如下: 消息名:other_info 消息类型:数据上报 添加响应字段:是。添加响应字段后,物联网平台在收到设备上报的数据后,会下发用户设置的响应数据到设备。 响应数据:AAAA0000(默认) 图21 插件开发-新增消息other_info 单击“添加字段”,添加messageId字段,表示消息种类。在本场景中,0x0用于标识上报火灾等级和温度的消息,0x1用于标识只上报温度的消息,0x2用于标识上报描述信息(字符串类型)的消息。messageId、数据类型、长度、默认值、偏移值的说明可参考1。 图22 插件开发-添加字段messageId(0x2) 添加other_info字段,表示字符串类型的描述信息。在本场景中,字符串类型的字段数据类型选择“string”,“长度”配置 6个字节。字段名、默认值、偏移值的说明可参考2。 图23 插件开发-添加字段other_info 单击“新增消息”,新增“other_info2”消息名,配置数据上报消息,上报可变长度字符串类型的描述信息。配置此步骤的主要目的是,将设备上传的可变长度字符串二进制码流消息解码成JSON格式,以便物联网平台理解。配置示例如下: 消息名:other_info2 消息类型:数据上报 添加响应字段:是。添加响应字段后,物联网平台在收到设备上报的数据后,会下发用户设置的响应数据到设备。 响应数据:AAAA0000(默认) 图24 插件开发-新增消息other_info2 添加messageId字段,表示消息种类。在本场景中,0x0用于标识上报火灾等级和温度的消息,0x1用于标识只上报温度的消息,0x3用于标识上报描述信息(可变长度字符串类型)的消息。messageId、数据类型、长度、默认值、偏移值的说明可参考1。 图25 插件开发-添加字段messageId(0x3) 添加length字段,表示可变字符串长度。“数据类型”根据可变长度字符串的长度进行配置,此场景可变字符串长度在255以内,配置为“int8u”。长度、默认值、偏移值的说明可参考2。 图26 插件开发-添加字段length 添加other_info字段,数据类型选择“varstring”,表示可变长度字符串类型的描述信息。“长度关联字段”选择“length”,表示当前可变长字符串的长度由上报的length的值决定。“掩码”默认为“0xff”,用来计算该字段实际生效的长度,例如:“长度关联字段”length的值为5,其对应的二进制为:00000101,此时若掩码为0xff,对应的二进制为:11111111,那么两者进行“与“运算之后的结果为00000101,即十进制的5,那么该字段实际生效的长度为5个字节。如上报数据为03051234567890,表示当前上报的数据对应的是messageId为03的的message,可变长字符串长度为5个字节,可变长参数other_info对应的码流为1234567890。 图27 插件开发-添加字段other_info为varstring 拖动右侧“设备模型”区域的属性字段,与数据上报消息的相应字段建立映射关系。 图28 插件开发-数据上报字段映射关系 单击“保存”,并在插件保存成功后单击“部署”,将编解码插件部署到物联网平台。 图29 插件开发-部署插件 调测编解码插件 在烟感产品的开发空间,选择“在线调试”,并单击“新增测试设备”。 用户可根据自己的业务场景,选择使用真实设备或者虚拟设备进行调测。具体调测步骤请参考在线调试。本文以虚拟设备为例,调测编解码插件。 在弹出的“新增测试设备”窗口,选择“虚拟设备”,单击“确定”,创建一个虚拟设备。虚拟设备名称包含 “DeviceSimulator”字样,每款产品下只能创建一个虚拟设备。 图30 在线调试-创建虚拟设备 单击“调试”,进入调试界面。 图31 在线调试-进入调试 使用设备模拟器上报字符串类型的描述信息。 十六进制码流示例:0231。02表示messageId,此消息上报字符串类型的描述信息;31表示描述信息,长度为1个字节。 在“应用模拟器”区域查看数据上报的结果:{other_info=null}。描述信息不足6个字节,编解码插件无法解析。 图32 在线调试-模拟数据上报other_info长度不足 十六进制码流示例:02313233343536。02表示messageId,此消息上报字符串类型的描述信息;313233343536表示描述信息,长度为6个字节。 在“应用模拟器”区域查看数据上报的结果:{other_info=123456}。描述信息长度为6个字节,编解码插件解析成功。 图33 在线调试-模拟数据上报other_info长度合适 十六进制码流示例:023132333435363738。02表示messageId,此消息上报字符串类型的描述信息;3132333435363738表示描述信息,长度为8个字节。 在“应用模拟器”区域查看数据上报的结果:{other_info=123456}。描述信息长度超过6个字节,编解码插件截取前6个字节进行解析。 图34 在线调试-模拟数据上报other_info长度过长 十六进制码流示例:02013132333435。02表示messageId,此消息上报字符串类型的描述信息;013132333435表示描述信息,长度为6个字节。 在“应用模拟器”区域查看数据上报的结果:{other_info=\u000112345}。01在ASCII码表里表示“标题开始”,无法用具体字符表示,因此编解码插件解析为\u0001。 图35 在线调试-模拟数据上报other_info ASCII码 使用设备模拟器上报可变长度字符串类型的描述信息。 十六进制码流示例:030141。03表示messageId,此消息上报可变长度字符串类型的描述信息;01表示描述信息长度;41表示描述信息,长度为1个字节。 在“应用模拟器”区域查看数据上报的结果:{other_info=A}。41是A的十六进制ASCII码。 图36 在线调试-模拟数据上报other_info可变长字符串1 十六进制码流示例:03024142。03表示messageId,此消息上报可变长度字符串类型的描述信息;02表示描述信息的长度;4142表示描述信息,长度为2个字节。 在“应用模拟器”区域查看数据上报的结果:{other_info=AB}。4142是AB的十六进制ASCII码。 图37 在线调试-模拟数据上报other_info可变长字符串2 十六进制码流示例:030341424344。03表示messageId,此消息上报可变长度字符串类型的描述信息;03表示描述信息长度;41424344表示描述信息,长度为4个字节。 在“应用模拟器”区域查看数据上报的结果:{other_info=ABC}。描述信息长度超过3个字节,编解码插件截取前3个字节进行解析,414243是ABC的十六进制ASCII码。 图38 在线调试-模拟数据上报other_info可变长字符串3 十六进制码流示例:0304414243。03表示messageId,此消息上报可变长度字符串类型的描述信息;04表示字符串长度;414243表示描述信息,长度为4个字节。 在“应用模拟器”区域查看数据上报的结果:{other_info=null}。描述信息长度不足4个字节,编解码插件解析失败。 图39 在线调试-模拟数据上报other_info可变长字符串4 总结 当数据类型为字符串或可变长度字符串时,插件是按照ASCII码进行编解码的:上报数据时,将16进制码流解码为对应字符串,比如:21解析为“!”、31解析为“1”、41解析为“A”;下发命令时,将字符串编码对应的16进制码流,比如:“!”编码为21,“1”编码为31,“A”编码为41。 当某字段的数据类型为可变长度字符串时,该字段需要关联长度字段,长度字段的数据类型必须为int。 针对可变长度字符串,命令下发和数据上报的编解码插件开发方式相同。 图形化开发的编解码插件使用ASCII码16进制的标准表对字符串和可变长度字符串进行编解码。解码时(数据上报),如果解析结果无法使用具体字符表示,如:标题开始、正文开始、正文结束等,则使用\u+2字节码流值表示(例如:01解析为\u0001,02解析为\u0002);如果解析结果可以使用具体字符表示,则使用具体字符。
  • 数据上报和命令下发 场景说明 有一款烟感设备,具有如下特征: 具有烟雾报警功能(火灾等级)和温度上报功能。 支持远程控制命令,可远程打开报警功能。比如火灾现场温度,远程打开烟雾报警,提醒住户疏散。 支持上报命令执行结果。 产品模型定义 在烟感产品的开发空间,完成产品模型定义。 level:火灾级别,用于表示火灾的严重程度。 temperature:温度,用于表示火灾现场温度。 SET_ALARM:打开或关闭告警命令,value=0表示关闭,value=1表示打开。 图1 模型定义-smokedetector 编解码插件开发 在烟感产品的开发空间,选择“插件开发”,单击“图形化开发”。 单击“新增消息”,新增“smokerinfo”消息。配置此步骤的主要目的是,将设备上传的二进制码流消息解码成JSON格式,以便物联网平台理解。配置示例如下: 消息名:smokerinfo 消息类型:数据上报。 添加响应字段:是。添加响应字段后,物联网平台在收到设备上报的数据后,会下发用户设置的响应数据到设备。 响应数据:AAAA0000(默认) 图2 插件开发-新增消息smokerinfo 单击“添加字段”,勾选“标记为地址域”,添加messageId字段,表示消息类型。在本场景中,上报火灾等级和温度的消息类型是0x0。设备上报消息时,每条消息首个字段就是messageId。如设备上报消息为0001013A,第一个字段00就是表示此条消息是上报火灾级别和温度的消息。后续字段01和013A分别代表火灾级别和温度。如果只有一条数据上报消息和一条命令下发消息,可以不添加messageId字段。 “数据类型”根据数据上报消息种类的数量进行配置。messageId字段默认的数据类型为int8u。 “偏移值”是根据字段位置和字段的字节数的配置自动填充的。messageId为此消息的第一个字段,起始位置为0,字节长度为1,终点位置为1。所以偏移值为0-1。 “长度”是根据“数据类型”的配置自动填充的。 “默认值”可以修改,但必须为十六进制格式,且设备数据上报消息的对应字段必须和此处的默认值保持一致。 图3 插件开发-添加字段messageId 添加level字段,表示火灾级别。 “字段名”只能输入包含字母、数字、_和$,且不能以数字开头的字符。 “数据类型”根据设备上报数据的实际情况进行配置,需要和产品模型相应字段的定义相匹配。产品模型中定义的火灾级别level属性的数据类型为int,最大值为9。所以选择的数据类型为int8u。 “偏移值”是根据字段位置和字段的字节数的配置自动填充的。“level”字段的起始位置就是前一字段的终点,前一字段“messageId”的终点位置为1,所以“level”字段的起始位置为1。“level”字段长度为1个字节,终点为2。所以“偏移值”为1-2。 “长度”根据“数据类型”的配置自动填充。 “默认值”不填。此处火灾级别level不固定,无默认值。 图4 插件开发-添加字段level 添加temperature字段,表示温度。 “数据类型”,在产品模型中,temperature属性的“数据类型”为int,最大值1000,因此在插件中定义temperature字段的“数据类型”为“int16u”,以满足temperature属性的取值范围。 “偏移值”是根据与首字段的间隔的字符数自动配置的。“temperature”字段的起始位置就是前一字段的终点,前一字段“level”的终点位置为2,所以“temperature”字段的起始位置为2。“temperature”字段长度为2个字节,终点为4。所以“偏移值”为2-4。 “长度”根据数据类型的配置自动填充。 “默认值”不填,此处温度temperature的值不固定,无默认值。 图5 插件开发-添加字段temperature 单击“新增消息”,新增“SET_ALARM”消息,设置火灾告警的温度阈值。例如超过60摄氏度,设备上报告警。配置此步骤的主要目的是,将平台下发的JSON格式命令消息编码成二进制数据,以便烟感设备理解。配置示例如下: 消息名:SET_ALARM 消息类型:命令下发 添加响应字段:是。添加响应字段后,设备在接收命令后,可以上报命令执行结果。您可以根据自己的需求,选择是否添加响应字段。 图6 插件开发-新增消息SET_ALARM 单击“添加字段”,添加messageId字段,表示消息类型。例如,设置火灾告警阈值的消息类型为0x3。messageId、数据类型、长度、默认值、偏移值的说明可参考1。 图7 插件开发-添加命令字段messageId(0x3) 添加mid字段。这里的mid字段是由平台生成和下发的,用于将下发的命令和命令下发响应消息关联。mid字段的数据类型默认为int16u。长度、默认值、偏移值的说明可参考2。 图8 插件开发-添加命令字段mid 添加value字段,表示下发命令的参数值。例如,下发火灾告警的温度阈值。数据类型、长度、默认值、偏移值的说明可以参考2。 图9 插件开发-添加命令字段value 单击“添加响应字段”,添加“messageId”字段,表示消息类型。命令下发响应消息为上行消息,需要通过messageId和数据上报消息进行区分。上报火灾告警温度阈值的消息类型为0x4。messageId、数据类型、长度、默认值、偏移值的说明可参考1。 图10 插件开发-添加响应字段messageId(0x4) 添加mid字段。这里的mid字段需要跟平台下发的命令里的mid字段保持一致,用于将下发的命令和命令执行结果进行关联。mid字段的数据类型默认为int16u。长度、默认值、偏移值的说明可参考2。 图11 插件开发-添加响应字段mid 添加errcode字段,用于表示命令执行状态:00表示成功,01表示失败,如果未携带该字段,则默认命令执行成功。errcode字段的数据类型默认为int8u。长度、默认值、偏移值的说明可参考2。 图12 插件开发-添加响应字段errcode 添加result字段,用于表示命令执行结果。例如,设备向平台返回当前的告警阈值。 图13 插件开发-添加响应字段result 拖动右侧“设备模型”区域的属性字段和命令字段,数据上报消息和命令下发消息的相应字段建立映射关系。 图14 插件开发-在线开发插件smokerdetector 单击“保存”,并在插件保存成功后单击“部署”,将编解码插件部署到物联网平台。 图15 插件开发-部署插件 调测编解码插件 在烟感产品的开发空间,选择“在线调试”,并单击“新增测试设备”。 用户可根据自己的业务场景,选择使用真实设备或者虚拟设备进行调测。具体调测步骤请参考在线调试。本文以虚拟设备为例,调测编解码插件。 在弹出的“新增测试设备”窗口,选择“虚拟设备”,单击“确定”,创建一个虚拟设备。虚拟设备名称包含 “DeviceSimulator”字样,每款产品下只能创建一个虚拟设备。 图16 在线调试-创建虚拟设备 单击“调试”,进入调试界面。 图17 在线调试-进入调试 使用设备模拟器进行数据上报。十六进制码流示例:0008016B。00为地址域messageId,08表示火灾级别level,长度为1个字节;016B表示温度,长度为2个字节。 在“应用模拟器”区域查看数据上报的结果:{level=8, temperature=363}。8为十六进制数08转换为十进制的数值;363为十六进制数016B转换为十进制的数值。 在设备模拟器区域看到平台下发的响应数据AAAA0000。 图18 在线调试-模拟数据上报smokerdetector 使用应用模拟器进行命令下发,输入value值为1,可看到应用模拟下发命令{ "serviceId": "Smokeinfo", "method": "SET_ALARM", "paras": "{\"value\":1}" }。 在“设备模拟器”区域查看命令接收的结果:03000101。03为地址域messageId,0001为mid字段,01为十进制数1转换为十六进制的数值。 图19 在线调试-模拟命令下发smokerdetector 使用CoAP的虚拟设备在线调试时,若下发命令后设备模拟器未接收到对应的命令,可以先上报一次属性后,再下发。 总结 如果插件需要对命令执行结果进行解析,则必须在命令和命令响应中定义mid字段。 命令下发的mid是2个字节,对于每个设备来说,mid从1递增到65535,对应码流为0001到FFFF。 设备执行完命令,命令执行结果上报中的mid要与收到命令中的mid保持一致,这样平台才能刷新对应命令的状态。
  • 使用真实设备调测产品 当设备侧开发已经完成,但应用侧开发还未完成时,您可以创建真实设备,使用应用模拟器对设备、产品模型、插件等进行调测。真实设备调测界面结构为三个部分: 左侧应用模拟器展示区域:呈现应用服务器接收到的属性数据和下发的命令。 右侧应用模拟器区域:模拟应用下发命令。 下方消息跟踪区域:呈现设备接入,属性上报和命令下发时,平台的处理日志,帮助开发者进行问题的定界和定位。 图6 在线调试-真实设备结构 在烟感产品的开发空间,选择“在线调试”,并单击“新增测试设备”。 在弹出的“新增测试设备”窗口,选择“真实设备”,输入测试设备的参数,单击“确定”。 图7 在线调试-新增测试设备 注:如果使用DTLS传输层安全协议接入时,请妥善保存密钥。 新添加的设备处于未激活状态,此时不能进行在线调试,可参考连接鉴权,待设备接入平台后,进行调试。 单击“调试”,进入调试界面。 图8 在线调试-进入调试 模拟远程下发控制命令场景,在应用模拟器中,选择服务:StreetLight,命令:SWITCH_LIGHT,命令取值为:ON,单击“发送”,我们可以看到路灯被点亮。
  • 使用虚拟设备调测产品 当设备侧开发和应用侧开发均未完成时,开发者可以创建虚拟设备,使用应用模拟器和设备模拟器对产品模型、插件等进行调测。模拟设备调测界面分为四个部分 1. 左侧应用模拟器展示区域:呈现应用服务器接收到的属性数据和下发的命令。 2. 左侧设备模拟器展示区域:呈现设备上报的属性和接收到的命令。 3. 右侧应用模拟器和设备模拟器区域:模拟应用下发命令或设备上报属性。 4. 下方消息跟踪区域:呈现设备接入,属性上报和命令下发时,平台的处理日志,帮助开发者进行问题的定界和定位。 图1 在线调试-虚拟设备结构 在产品开发空间,选择“在线调测”,并单击“新增测试设备”。 在弹出的“新增测试设备”窗口,选择“虚拟设备”,单击“确定”,创建一个虚拟设备。虚拟设备名称包含 “DeviceSimulator”字样,每款产品下只能创建一个虚拟设备。 在设备列表中,选择新创建的虚拟设备, 图2 在线调试-创建虚拟设备 单击右侧的“调试”,进入调试界面。 图3 在线调试-进入调试 在“设备模拟器”区域,输入十六进制码流或者JSON数据(以十六进制码流为例),单击“发送”,在“应用模拟器”区域查看数据上报的结果,在“消息跟踪”区域查看物联网平台处理日志。 图4 在线调试-模拟数据上报smokeInfo 在“应用模拟器”区域进行命令下发,在“设备模拟器”区域查看接收到的命令(以十六进制码流为例),在“消息跟踪”区域查看物联网平台处理日志。 图5 在线调试-命令下发介绍
  • 创建产品 产品是设备的合集,您可以将相同能力或特征的设备归属在同一个产品下。 登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”。 根据页面提示填写参数,然后单击“立即创建”。 图5 创建产品-MQTT 表1 创建产品基本信息 基本信息 所属资源空间 平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 产品名称 自定义,如StudentCard。支持字母、数字、下划线(_)、连字符(-)的字符组合。 协议类型 选择MQTT。 数据格式 选择JSON。 设备类型选择 选择自定义类型。 设备类型 根据实际填写,例如StudentCard。
  • 开发产品模型 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。 图6 自定义模型-MQTT 新增服务类型“Location”。 在“新增服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 图7 添加服务-Location “服务ID”:Location “服务类型”:建议和服务ID保持一致 “服务描述”:设备上报的位置数据 在“Location”的下拉菜单下单击“添加属性”,填写相关信息后,单击“确定”。 图8 新增属性-longitude 图9 新增属性-latitude 单击添加命令,输入命令名称“FREQUENCY_LOCATION_SET”。 图10 新增命令-FREQUENCY_LOCATION_SET 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。 图11 新增命令参数-period
  • 获取网桥接入信息 代码调试时,需要获取对应的网桥接入信息,并配置到对应的环境变量中。网桥接入信息,环境变量配置参考: 图1 环境变量配置参考 NET_BRIDGE_ID与NET_BRIDGE_SECRET在标准版和企业版支持在界面配置和获取,获取方式如下: 进入泛协议接入页面:登录管理控制台,单击左侧导航栏“IoTDA实例”,选择对应实例,点击右侧“详情”进入实例,选择“泛协议接入”页签后,单击“新增网关”。 图2 泛协议-新增云网关(非托管) 输入网关名,单击“确定”,会弹出网桥创建成功界面,单击“保存并关闭”,获得NET_BRIDGE_SECRET值。 图3 泛协议-创建网桥成功 在界面中可以获取到NET_BRIDGE_ID。 图4 泛协议-获取网桥ID
  • 使用流程&操作步骤 图1 非$oc开头自定义topic通信 为了适配新老客户的使用,策略默认放通所有“非$oc开头的自定义Topic通信”。新增的资源空间会默认加入策略“system_default_policy”,system_default_policy策略会允许所有Topic的订阅与发布。当业务场景不适用时,可以删除该策略。 值得注意的是,策略只会限制“非$oc开头的自定义Topic通信”。“$oc开头的自定义Topic”权限由产品下的设定决定。 目前广州、北京四、上海局点不支持策略,可跳过策略(步骤2、3)、直接使用。
  • 可用区管理 权限 对应的API接口 授权项(Action) 依赖的授权项 IAM 项目 (Project) 企业项目 (Enterprise Project) 实例授权 标签授权 查询可用区列表(OpenStack原生)(废弃) GET /v2.1/{project_id}/os-availability-zone ecs:availabilityZones:list - √ × × × 父主题: 权限和授权项
  • 请求示例 批量删除指定云服务器的2组标签。 POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/tags/action { "action": "delete", "tags": [ { "key": "key1", "value": "value1" }, { "key": "key2", "value": "value3" } ] }
  • 请求消息 请求参数如表2所示。 表2 请求参数 参数 是否必选 参数类型 描述 tags 是 Array of objects 标签列表,详情参见表3 action 是 String 操作标识(仅支持小写):delete(删除) 表3 tags 字段数据结构说明 参数 是否必选 参数类型 描述 key 是 String 键。 不能为空。 同一资源的key值不能重复。 value 否 String 值。 可以为空字符串。
  • 响应(任务类) 正常响应要素说明 名称 参数类型 说明 job_id String 提交任务成功后返回的任务ID,用户可以使用该ID对任务执行情况进行查询。如何根据job_id来查询Job的执行状态,请参考查询Job状态。 异常响应要素说明 名称 参数类型 说明 error Object 提交任务异常时返回的异常信息,详情请参见表1。 表1 error数据结构 名称 参数类型 说明 message String 任务异常错误信息描述。 code String 任务异常错误信息编码。 details Array of objects 任务异常时错误详情。 该信息主要包含任务异常时的细化错误编码和错误描述信息,便于使用本服务API的客户端应用代码处理错误。 该字段属于非必选字段。 表2 details数据结构 名称 参数类型 说明 message String 任务异常错误信息描述。 该字段属于非必选字段。 code String 任务异常错误信息编码。 该字段属于非必选字段。 响应示例 正常响应: { "job_id": "ff80808288d41e1b018990260955686a" } 异常响应: { "error": {"message": "", "code": XXX,""} } 包含错误详情的异常响应: { "error": { "message": "xxxx", "code": "xxxx", "details": [ { "code": "xxxx", "message": "xxxx" } ] } } 父主题: 提交任务类请求结果
  • 付费方式 创建包年/包月的云服务器时(chargingMode为prePaid),通过extendparam.isAutoPay字段控制订单的支付方式。 取值为true在订单创建完成后自动支付。 取值为false订单需要用户手动支付。手动支付可以填写优惠券和折扣券等信息。 手动支付需要调用支付包年/包月产品订单接口进行支付,以下示例是使用一张优惠券,优惠券类型为代金券的请求示例。 POST https://bss.myhuaweicloud.com/v2/orders/customer-orders/pay { "coupon_infos": [ { "id": "CP2005270256xxxxxx", "type": 301 } ], "order_id": " CS 190401192xxxxxx" }
  • 查询资源价格 使用查询按需产品价格和查询包年/包月产品价格,根据云服务类型、资源类型、云服务区和资源规格四个条件来查询产品价格。 例如查询华东上海二可用区、通用计算型、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" }
  • 查询资源的可用配额 如需查询当前账号的资源配额信息,包括已使用的配额,可以通过调用查询租户配额接口。 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": [] } }
  • 查询规格资源是否可购买/资源是否售罄 如需查询某一具体的云服务器规格在某可用区是否资源充足,可以通过调用查询规格详情和规格扩展信息列表查看该规格的详细信息。并通过响应信息中的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在华东上海二的可用区三下线。
  • 操作场景 本节内容介绍了使用 API购买 ECS过程中的一些高频场景。 表1 使用API创建ECS的高频场景 场景 说明 购买包年/包月ECS 为您介绍购买包年/包月资源的参数设置。 删除包年/包月ECS/退订包年/包月ECS 包年/包月资源需要通过退订的方式才可以被删除。 查询可用的公共镜像 购买ECS时候前查询公共镜像信息可以通过在GET请求后通过‘?’和‘&’添加不同的查询条件组合。 包年/包月资源续费 包年/包月资源即将到期时,可进行包年/包月资源的续订。指定资源ID,续费方式,续费时间,订单支付方式。 创建订单后资源未开通 创建完成后查不到资源信息可能是订单尚未支付,查看订单的状态并完成订单支付。 查询规格资源是否可购买/资源是否售罄 查询某一具体的云服务器规格在某可用区是否资源充足,通过响应信息中的cond:operation:status和cond:operation:az字段的取值判断在区域和可用区的取值。 付费方式 创建包年/包月的云服务器时(chargingMode为prePaid),通过extendparam.isAutoPay字段控制订单的支付方式。 查询资源的可用配额 调用查询租户配额接口,通过maxTotalInstances可以查看云服务器的最大申请数量,通过totalInstancesUsed可以查看当前云服务器使用个数。 查询资源价格 使用查询按需产品价格和查询包年/包月产品价格,根据云服务类型、资源类型、云服务区和资源规格四个条件来查询产品价格。
  • 创建订单后资源未开通 订单创建后未查询到服务器信息,可能是由于指定了自动支付:请求体中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" }
  • 查询可用的公共镜像 使用 镜像服务 的查询镜像列表的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字段判断镜像类型。
  • 购买包年/包月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": { "id": "publicip_123", "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。
  • 包年/包月资源续费 包年/包月资源即将到期时,可进行包年/包月资源的续订。通过调用续订包年/包月资源接口进行续费。 如下所示,指定资源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" }
  • 请求消息 请求参数如表2所示。 表2 请求参数 参数 是否必选 参数类型 描述 tags 是 Array of objects 标签列表,详情参见表3 action 是 String 操作标识(仅支持小写):create(创建) 表3 tags 字段数据结构说明 参数 是否必选 参数类型 描述 key 是 String 键。 不能为空。 对于同一资源键值唯一。 长度不超过36个字符。 标签的键必须唯一且输入不能为空。 value 是 String 值。 长度不超过43个字符。
  • 请求示例 批量添加2组标签到指定云服务器。 POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/tags/action { "action": "create", "tags": [ { "key": "key1", "value": "value1" }, { "key": "key2", "value": "value3" } ] }
  • 镜像管理 权限 对应的API接口 授权项(Action) 依赖的授权项 IAM项目 (Project) 企业项目 (Enterprise Project) 实例授权 标签授权 创建镜像(OpenStack原生)(废弃) POST /v2.1/{project_id}/servers/{server_id}/action ecs:servers:createImage evs:volumes:get evs:snapshots:create ims:images:create ims:images:get ims:images:list ims:images:update ims:images:delete √ × × × 父主题: 权限和授权项
  • 请求示例 一键重置指定云服务器的管理员账号(root用户或Administrator用户)的密码,建议将密码在配置文件或者环境变量中密文存放,使用时解密,确保安全。 PUT https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/os-reset-password { "reset-password": { "new_password": "$ADMIN_PASS", } }
  • 操作步骤 查询弹性云服务器详情 接口相关信息 URI格式: GET /v1/{project_id}/cloudservers/{server_id} 详情请参见“查询云服务器详情”。 请求示例 GET https://{endpoint}/v1/743b4c0428d945316666666666666666/cloudservers/893c7791-f1df-4c3d-8383-3caae9656c62 {endpoint}信息请从地区和终端节点获取。 响应示例 { "server": { "fault": null, "id": "b8b1b475-d6c9-4733-a3db-c3a526407286", "name": "ecs-test", "addresses": { "24bbb54c-659f-4141-8db9-a957e12b6ee8": [{ "version": "4", "addr": "192.168.0.16", "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:37:de:ee", "OS-EXT-IPS:type": "fixed", "OS-EXT-IPS:port_id": "390b39b0-9a77-4ec2-ae1e-3af358f78999" }, { "version": "4", "addr": "121.xx.xx.64", "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:37:de:ee", "OS-EXT-IPS:type": "floating", "OS-EXT-IPS:port_id": "390b39b0-9a77-4ec2-ae1e-3af358f78999" }] }, "flavor": { "disk": "0", "vcpus": "2", "ram": "4096", "id": "c6s.large.2", "name": "c6s.large.2" }, "accessIPv4": "", "accessIPv6": "", "status": "SHUTOFF", "progress": null, "hostId": "604599c4eeeaa05d8865749e4c97979e14d74c6639a08460051b3a97", "updated": "2021-02-18T12:38:39Z", "created": "2021-02-18T12:37:42Z", "metadata": { "metering.image_id": "6674d782-54ba-4f04-896d-95edd50f2eb9", "metering.imagetype": "gold", "metering.resourcespeccode": "c6s.large.2.linux", "image_name": "CentOS 8.2 64bit", "os_bit": "64", "cascaded.instance_extrainfo": "stopped_release_resource:True,pcibridge:1", "metering.resourcetype": "1", "vpc_id": "24bbb54c-659f-4141-8db9-a957e12b6ee8", "os_type": "Linux", "charging_mode": "0", "__support_agent_list": "ces" }, "tags": [], "description": "", "locked": false, "config_drive": "", "tenant_id": "0b3ade290700f3612f29c005b9d16666", "user_id": "0b3ade2a03800fec1f20c005d6116666", "key_name": null, "os-extended-volumes:volumes_attached": [{ "device": "/dev/vda", "bootIndex": "0", "id": "0dc13ef4-dcf6-49d2-8d34-395d94767917", "delete_on_termination": "true" }], "OS-EXT-STS:task_state": null, "OS-EXT-STS:power_state": 4, "OS-EXT-STS:vm_state": "stopped", "OS-EXT-SRV-ATTR:host": "604599c4eeeaa05d8865749e4c97979e14d74c6639a08460051b3a97", "OS-EXT-SRV-ATTR:instance_name": "instance-003ef12a", "OS-EXT-SRV-ATTR:hypervisor_hostname": "5edb1b44af14ebaaa784cfba010f78f113b1fd0865fef854c264a925", "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone": "cn-east-3c", "os:scheduler_hints": { }, "OS-EXT-SRV-ATTR:root_device_name": "/dev/vda", "OS-EXT-SRV-ATTR:ramdisk_id": "", "enterprise_project_id": "0", "OS-EXT-SRV-ATTR:user_data": null, "OS-SRV-USG:launched_at": "2021-02-18T12:37:57.000000", "OS-EXT-SRV-ATTR:kernel_id": "", "OS-EXT-SRV-ATTR:launch_index": 0, "host_status": "UP", "OS-EXT-SRV-ATTR:reservation_id": "r-q8xjhqzk", "OS-EXT-SRV-ATTR:hostname": "ecs-test", "OS-SRV-USG:terminated_at": null, "sys_tags": [{ "key": "_sys_enterprise_project_id", "value": "0" }], "security_groups": [{ "id": "d0d30ee2-5b34-44d4-b5a3-68b9d64e7286", "name": "Sys-WebServer" }], "image": { "id": "6674d782-54ba-4f04-896d-95edd50f2eb9" }, "hypervisor": null, "auto_terminate_time": "" } } 根据公网IP查询公网IP详情 接口相关信息 URI格式: GET /v1/{project_id}/publicips 详情请参见“查询弹性公网IP列表”。 请求示例 GET https://{endpoint}/v1/743b4c0428d945316666666666666666/publicips?public_ip_address=121.xx.xx.64 {endpoint}信息请从地区和终端节点获取。 public_ip_address参数传入的公网IP地址从1的返回信息中获取,从返回body体中的"server"下的"address"信息中找到"OS-EXT-IPS:type"为"floating"的"addr"字段,即为公网IP地址。 响应示例 { "publicips": [{ "id": "92597d39-b81d-42b0-8d02-fe8afe7ef076", "type": "5_bgp", "port_id": "390b39b0-9a77-4ec2-ae1e-3af358f78999", "public_ip_address": "121.xx.xx.64", "private_ip_address": "192.168.0.16", "status": "ACTIVE", "tenant_id": "0b3ade290700f3612f29c005b9d16666", "create_time": "2021-02-18 12:38:08", "bandwidth_id": "3a087bbd-0bcf-4401-9e2b-6a96fa2e3471", "bandwidth_name": "ecs-test-bandwidth-891e", "bandwidth_share_type": "PER", "bandwidth_size": 5, "profile": {}, "enterprise_project_id": "0", "ip_version": 4 }] }
  • 添加转储任务 参见初始化DIS客户端的操作初始化一个DIS客户端实例。 参照添加转储任务配置方法中的参数值。 配置如下参数: streamname='dis—test1' #已存在的通道名 task_name='113' 以添加OBS转储服务为例:value参数值设定与key对应 basic_Schema=DumpTask.setSchema(key=['consumer_strategy','deliver_time_int erval','agency_name','retry_duration'], value=['LATEST', 30, 'dis_admin_agency',1800]) obs_dump_task =['destination_file_type','obs_bucket_path','file_prefix', 'partition_format','record_delimiter'] obs_Schema = DumpTask.setSchema(basic_Schema=basic_Schema, key=obs_dump_task,value=['text','obs-1253', '','yyyy', '|']) # 添加OBS转储服务,配置obs_Schema值 cli.add_dump_task(streamname, task_name,'OBS',obs_Schema) 配置好以上参数后,执行add_dump_task_sample.py文件默认调用add_dump_task_test方法,获取响应201创建成功。 父主题: 使用SDK(Python)
  • 操作步骤 在执行退订操作前,请确保将退订的云资源上的数据已完成备份或者迁移,退订完成后云资源将被删除,数据无法找回,请谨慎操作。 进入“退订管理”页面。 单击“创建成功资源退订”页签。 单个资源退订与批量退订可使用不同的操作方式: 退订单个资源:单击待退订资源所在行的“退订资源”。 批量退订:在退订列表中勾选需要退订的资源,单击列表左上角的“退订资源”。 查看退订信息,勾选“我已确认本次退订金额和相关费用”后,单击“退订”。
  • 功能特性 云防火墙 提供了“基础版”、“标准版”、“专业版”供您使用,包括访问控制、入侵防御、流量分析以及日志审计等功能。 表1 功能特性 功能项 功能描述 总览 提供防火墙实例基本信息、资源防护总览、统计信息等内容。 资产管理 管理、查看弹性公网IP和VPC的相关数据及信息。 访问控制 支持基于IP、 域名 、地域等方式对互联网边界和VPC边界流量进行访问控制。 支持通过“策略助手”快速查看防护规则的命中情况,及时调整防护规则。 攻击防御 入侵防御(IPS):结合多年攻防积累的经验规则,针对访问流量进行检测与防护,覆盖多种常见的网络攻击,有效保护您的资产。 基础防御规则库:根据内置的IPS规则库,提供威胁检测和 漏洞扫描 。支持检测流量中是否含有网络钓鱼、特洛伊木马、蠕虫、黑客工具、间谍软件、密码攻击、漏洞攻击、SQL注入攻击、XSS跨站脚本攻击、Web攻击;以及检测是否存在协议异常、缓冲区溢出、访问控制、可疑DNS活动及其它可疑行为。 说明: 基础防御规则库支持手动修改防护动作。 基础防御规则库支持通过“规则ID”、“特征名称”、“风险等级”、“更新年份”、“CVE编号”、“攻击类型”、“规则组”、“当前动作”查询规则信息。 虚拟补丁规则库:在网络层级为IPS提供热补丁,实时拦截高危漏洞的远程攻击行为,同时避免修复漏洞时造成业务中断。 虚拟补丁规则库中展示新增的IPS规则;防火墙新增IPS规则时,会先进入虚拟补丁规则库中,防护一段时间后合入IPS规则库中。 自定义IPS特征:当IPS规则库不满足使用时,CFW支持自定义IPS特征规则,添加后,CFW将基于签名特征检测数据流量是否存在威胁。 说明: 自定义IPS特征支持添加HTTP、TCP、UDP、POP3、SMTP、FTP的协议类型。 “敏感目录扫描防御”:防御对用户主机敏感目录的扫描攻击。 “反弹Shell检测防御”:防御网络上通过反弹shell方式进行的网络攻击。 病毒防御(Anti-Virus,AV):通过病毒特征检测来识别和处理病毒文件,避免由病毒文件引起的数据破坏、权限更改和系统崩溃等情况发生,有效保护您的业务安全。 病毒防御功能支持检测HTTP、SMTP、POP3、FTP、IMAP4、SMB的协议类型。 “安全看板”:快速查看攻击防御功能的防护信息,及时调整IPS防护。 流量分析 为您展示以下流量统计情况。 入云流量:互联网访问云主机的流量统计。 出云流量:云主机主动访问互联网的流量统计。 VPC间访问:VPC间的出入流量统计。 日志审计 支持入侵攻击事件日志、访问控制日志、流量日志。其中: 攻击事件日志:入侵攻击事件的详细信息。 访问控制日志:可以查看哪些访问放行,哪些访问被阻断的详细信息。 流量日志:可以查看具体某个业务的访问流量信息。 CFW支持全量日志功能,您可以将攻击事件日志、访问控制日志、流量日志记录到华为云的 云日志 服务(Log Tank Service,简称LTS) 系统管理 告警通知:您可以通过云防火墙服务对攻击日志和流量超额预警进行通知设置。开启告警通知后,CFW可将IPS攻击日志和流量超额的预警信息通过您设置的接收通知方式(例如邮件或短信)发送给您。 网络抓包:帮助您定位网络故障和攻击。 多账号管理:一个账号下的云防火墙实例同时防护多个账号的EIP资源。 DNS配置:通过域名服务器解析并下发IP地址。 安全报告:生成日志报告,及时掌握资产的安全状况数据。 表2 引擎特性 名称 主要功能描述 支持协议 支持场景 防火墙引擎 用户流量先经过负载均衡组件分发给租户防火墙引擎,进行安全检测与防护后,再将流量送至目标ECS。检测功能丰富,阻断策略灵活。 TCP、UDP、ICMP、Any 可以支持互联网边界和VPC边界的防护。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全