华为云用户手册

  • 查询、修改、删除设备影子 查询设备影子 方法1:应用服务器调用查询设备影子数据接口。 方法2:登录管理控制台,选择您的实例,单击实例卡片进入。在左侧导航栏选择“设备”,单击具体的设备进入到设备的详情页面,在“设备影子”页签中,可以查看当前设备属性数据,包括“上报值”和“期望值”。 如果当前界面中看到“上报值”与“期望值”不一致,原因可能是设备未在线,暂时存储在设备影子中,待同步给设备,期望值会存在深色底纹。 如果当前界面看到的“上报值”与“期望值”一致,则表示设备最近一次上报的属性值与用户期望下发的属性值一致,期望值为白色底纹。 图1 设备影子-查看 修改设备影子 方法1:应用服务器调用配置设备影子预期数据接口。 方法2:登录管理控制台,选择您的实例,单击实例卡片进入。在左侧导航栏选择“设备-所有设备”,在设备列表中单击具体的设备进入到设备的详情页面,在“设备影子”页面,单击“属性配置”,在弹出窗口中输入服务属性对应的期望值,单击"确定"完成设备影子的修改。 图2 设备影子-属性配置 删除设备影子 用户删除设备影子,平台将会将设备影子中的所有数据(包含上报值和期望值)清空。 图3 删除设备影子
  • 创建MySQL 登录华为云官方网站,访问云数据库 MySQL。 设备接入服务 企业版实例支持通过内网连接MySQL,标准版实例仅支持通过公网连接MySQL。 在购买的MySQ L实例 中,根据流转数据格式设计数据库表,可以通过数据过滤语句编辑流转数据。本示例使用设备属性上报通知的默认格式,将流转数据中的resource、event、notify_data、event_time分别转存至数据库表中的resource、event、content、event_time字段。 图1 创建数据库表样例
  • Fn::ToLowerCase 内部函数Fn::ToLowerCase将指定字符串转的所有字符转化成小写。 JSON { "Fn::ToLowerCase" : content } 表18 参数说明 参数名称 类型 说明 content String 待转换的字符串。 返回值 String 字符串被转为小写后的值。 示例如下: { "Fn::ToLowerCase": "ABC" ] return: "abc"
  • Ref 内部函数Ref将返回指定引用参数的值,引用参数必须在模板中有声明。 JSON { "Ref" : "paramName" } 表20 参数说明 参数名称 类型 说明 paramName String 引用的参数名称。 返回值 String 引用参数对应的值。 示例如下: { "Ref": "iotda::mqtt::username" } 当参数iotda::mqtt::username="device_123" return: "device_123"
  • Fn::ToUpperCase 内部函数Fn::ToUpperCase将字符串转大写函数。 JSON { "Fn::ToUpperCase" : content } 表19 参数说明 参数名称 类型 说明 content String 待转换的字符串。 返回值 String 字符串被转为大写后的值。 示例如下: { "Fn::ToUpperCase": "abc" ] return: "ABC"
  • Fn::Base64Decode 内部函数Fn::Base64Decode将一个字符串按BASE64解码成一个字节数组。 JSON { "Fn::Base64Decode" : "content" } 表2 参数说明 参数名称 类型 说明 content String 待解码的字符串。 返回值 byte[] base64解码后的字节数组。 示例如下: { "Fn::Base64Decode": "123456"] } return: d76df8e7 //为了方便展示,此处转化为16进制字符串
  • Fn::HmacSHA256 内部函数Fn::HmacSHA256将一个字符串按给定密钥进行HmacSHA256算法加密。 JSON {"Fn::HmacSHA256": ["content", "secret"]} 表5 参数说明 参数名称 类型 说明 content String 待加密的字符串。 secret String 或 byte[] 加密密钥,可以是字符串或者字节数组类型 返回值 String 使用HmacSHA256算法加密后的值。 示例如下: { "Fn::HmacSHA256": ["testvalue", "123456"] } return: "0f9fb47bd47449b6ffac1be951a5c18a7eff694940b1a075b973ff9054a08be3"
  • Fn::MathDiv 内部函数Fn::MathDiv将两个整数进行数学除法运算。 JSON {"Fn::MathDiv": [X, Y]} 表8 参数说明 参数名称 类型 说明 X long 被除数。 Y long 除数。 返回值 long X 除Y后的值。 示例如下: { "Fn::MathDiv": [10, 2] } return: 5 { "Fn::MathDiv": [10, 3] } return: 3
  • Fn::SplitSelect 内部函数Fn::SplitSelect将一个字符串按指定的分隔符分割成字符串数组,然后返回数组指定索引的元素。 JSON { "Fn::SplitSelect" : ["String", "Separator", index] } 表14 参数说明 参数名称 类型 说明 String String 被分割的字符串。 Separator String 分隔符。 index int 返回元素在数组中的索引值,从0开始。 返回值 String 字符串按特定分隔符分割后指定索引的子字符串。 示例如下: { "Fn::SplitSelect": ["a|b|c", "|", 1] } return: "b"
  • Fn::SubStringAfter 内部函数Fn::SubStringAfter截取字符串指定分隔符后的子字符串。 JSON { "Fn::SubStringAfter" : ["content", "separator"] } 表16 参数说明 参数名称 类型 说明 content String 待截取的字符串。 separator String 分隔符。 返回值 String 字符串被指定分隔符分割后的子字符串。 示例如下: { "Fn::SubStringAfter": ["content:123456", ":"] ] return: "123456"
  • Fn::Split 内部函数Fn::Split将一个字符串按指定的分隔符分割成字符串数组。 JSON { "Fn::Split" : ["String", "Separator"] } 表13 参数说明 参数名称 类型 说明 String String 被分割的字符串。 Separator String 分隔符。 返回值 String[] 原始参数String被分隔符Separator拆分后的字符串数组。 示例如下: { "Fn::Split": ["a|b|c", "|"] } return: ["a", "b", "c"]
  • Fn::Base64Encode 内部函数Fn::Base64Encode将一个字符串按BASE64编码。 JSON {"Fn::Base64Encode": "content"} 表3 参数说明 参数名称 类型 说明 content String 待编码的字符串。 返回值 String base64编码后的字符串。 示例如下: { "Fn::Base64Encode": "testvalue" } return: "dGVzdHZhbHVl"
  • Fn::GetBytes 内部函数Fn::GetBytes返回一个字符串UTF-8编码的字节数组。 JSON {"Fn::GetBytes": "content"} 表4 参数说明 参数名称 类型 说明 content String 待编码的字符串。 返回值 byte[] 字符串UTF-8编码后的字节数组。 示例如下: { "Fn::GetBytes": "testvalue" } return: "7465737476616c7565" //为了方便展示,此处转化为16进制字符串
  • Fn::Join 内部函数Fn::Join可将多个字符串(数量最大值为10)拼接成一个字符串。 JSON {"Fn::Join": ["element", "element"...]} 表6 参数说明 参数名称 类型 说明 element String 需拼接的字符串。 返回值 String 子字符串拼接在一起后的字符串。 示例如下: { "Fn::Join": ["123", "456", "789"] } return: "123456789"
  • Fn::Sub 内部函数Fn::Sub将输入字符串中的变量替换为指定的值。在模板中您可以使用此函数来构造一个动态的字符串。 JSON { "Fn::Sub" : [ "String", { "Var1Name": Var1Value, "Var2Name": Var2Value } ] } 表15 参数说明 参数名称 类型 说明 String String 一个包含变量的字符串,变量使用“${}”占位符定义。 VarName String 变量名称,必须在参数“String”中定义。 VarValue String 变量的取值,支持函数嵌套。 返回值 String 返回原始“String”参数字符串变量替换后的值。 示例如下: { "Fn::Sub": ["${token};hmacsha256", { "token": { "Fn::HmacSHA256": ["${iotda::mqtt::username}", { "Fn::Base64Decode": "${iotda::mqtt::client_id}" }] } }] } 当变量 ${iotda::mqtt::username}="test_device_username" ${iotda::device::client_id}="OozqTPlCWTTJjEH/5s+T6w==" return:"0773c4fd6c92902a1b2f4a45fdcdec416b6fc2bc6585200b496e460e2ef31c3d"
  • Fn::SubStringBefore 内部函数Fn::SubStringBefore截取字符串指定分隔符前的子字符串。 JSON { "Fn::SubStringBefore" : ["content", "separator"] } 表17 参数说明 参数名称 类型 说明 content String 待截取的字符串。 separator String 分隔符。 返回值 String 字符串被指定分隔符分割前的子字符串。 示例如下: { "Fn::SubStringBefore": ["content:123456", ":"] ] return: "content"
  • 使用说明 华为云IoTDA提供了多个内部函数供用户在模板中使用,使用时请认真阅读每个函数的功能定义,包括入参类型,参数长度,返回值类型等。 整个函数必须是合法的Json格式。 函数中可使用${}变量占位符或者"Ref"函数引用入参定义的参数值。 函数所使用的参数必须在模板参数中声明。 单一入参的函数后面直接跟参数,比如:"Fn::Base64Decode": "${iotda::mqtt::username}"。 多个入参的函数后面接数组格式,比如:"Fn::HmacSHA256": ["${iotda::mqtt::username}", "${iotda::device::secret}"]。 函数可以嵌套使用,即一个函数的参数可以是另一个函数,注意嵌套函数的返回值必须跟当前函数参数类型一致,比如:{"Fn::HmacSHA256": ["${iotda::mqtt::username}", {"Fn::Base64Encode": "${iotda::device::secret}"}]}。 整个鉴权模板中hash函数(Fn::HmacSHA256)最多出现两次。 整个鉴权模板中BASE64函数(Fn::Base64Decode Fn::Base64Encode)个数的和不能超过2个。 鉴权模板中密码进行HmacSHA256Function之后的结果不允许 在进行Fn::Split(字符串拆分函数)Fn::SplitSelect(字符串拆分选取函数)Fn::SubStringAfter(字符串拆分函数,截取分隔符后面字符) Fn::SubStringBefor(字符串拆分函数,截取分隔符前面字符)操作。
  • 策略通配符 策略中具有不同的通配符,使用前需注意。在策略中,“*”表示字符的任意组合,问号“? ”表示任何单个字符,而通配符“+”和“#”被视为没有特殊含义的字符。 表1 策略通配符 通配符 是MQTT通配符 策略配置是否适用 MQTT中主题示例 适用于MQTT主题示例的策略示例 # 是 否 test/# 不适用,“#”被视为没有特殊含义的字符。 + 是 否 test/+/some 不适用,“+”被视为没有特殊含义的字符。 * 否 是 不适用,“*”被视为没有特殊含义的字符。 test/* test/*/some ? 否 是 不适用,“?”被视为没有特殊含义的字符。 test/????/some test/set?????/some 表2 定义策略通配符示例 发布/订阅的Topic 策略Topic定义 解释 假设设备需要订阅/发布以下Topic: “test/topic1/some” “test/topic2/some” “test/topic3/some” “topic:test/topic?/some” 在发布、订阅的Topic中可以发现有共同点:“test/topic”+ 某一字符 + “/some”,而在策略定义中“?”代表某一字符。所以策略Topic可以定义为“topic:test/topic?/some” 假设设备需要订阅/发布以下Topic: “test/topic1/pub/some” “test/topic2/sub/some” “test/topic3/some” “topic:test/topic*/some” 在发布、订阅的Topic中可以发现有共同点:“test/topic”+ 一个或多个字符 + “/some”,而在策略定义中“*”代表多个或一个字符。所以策略Topic可以定义为“topic:test/topic*/some”
  • 策略变量 在策略中定义resource时,如果不知道对设备资源或条件键的精确值,可以使用策略变量作为占位符,进行发布/订阅主题筛选。策略变量在校验MQTT的主题时,会把变量变为接入设备对应的ID值,再进行匹配。 变量使用前缀“$”标记,后面跟一对大括号“{ }”,其中包含请求中值的变量名称。如下表,假设MQTT设备是在客户端ID为test_clientId,产品ID为test_productId,设备ID为test_deviceId。 表3 策略变量 策略变量 描述 MQTT中主题示例 适用于MQTT主题示例的策略示例 ${devices.deviceId} 设备ID test/test_deviceId/topic test/${devices.deviceId}/topic ${devices.clientId} 客户端ID test/test_clientId/topic test/${devices.clientId}/topic ${devices.productId} 产品ID test/test_productId/topic test/${devices.productId}/topic 表4 定义策略变量示例 场景 策略Topic定义示例 描述 想通过topic区分不同设备的自定义上报时。 “test/${devices.deviceId}/topic” 允许Topic为“test/${本设备ID}/topic”的主题订阅或发布。有利于设备间数据隔离。 想通过topic区分不同设备的自定义上报、区分同一设备不同时间段上报的数据时。 “test/${devices.clientId}/topic” 允许Topic为“test/${本设备的clientId}/topic”的主题订阅或发布。与deviceId不同的是,clientId携带时间戳。可用主题来区分时间段。
  • 概述 设备策略主要用于对发布/订阅的非$oc开头自定义topic中的数据进行传输限制。通过灵活访问的控制模型,提供了基于用户角色的访问控制,能够管理客户端发布/订阅主题的授权。借助策略功能,可以用于管理一个或多个设备/产品/群组发布、订阅的权限,以保证非$oc开头的自定义Topic的通信安全。设备Topic策略用于发布、订阅机制的协议,比如说设备侧的MQTT、MQ TTS 协议。 对于使用IOTDA的用户,新增的资源空间会默认加入策略“system_default_policy”,system_default_policy策略会允许该资源空间下所有设备的非$oc开头的自定义Topic的订阅与发布。当业务场景不适用时,可以删除该策略。 图1 策略概念图
  • 连接配置说明 MQTT客户端接入 物联网平台 的连接地址和连接认证参数说明如下: MQTT接入 域名 每个账号会自动生成,请前往控制台-接入信息页面获取。 图1 接入信息-应用侧MQTT接入地址 端口:8883 客户端身份认证参数 clientId:全局唯一即可,建议使用“username”。 username =“accessKey=${accessKey}|timestamp=${timestamp}|instanceId=${instanceId}” password =“${accessCode}” 参数 是否必须 说明 ${accessKey} 是 接入凭证键值,单个键值最多允许10个客户端同时进行建链。 首次建链时候,请参考这里进行预置。 ${timestamp} 是 表示当前时间,13位毫秒值时间戳。服务端校验客户端的时间戳,且时间戳相差5分钟。 instanceId 否 实例Id,同一Region购买多个标准版实例时需要填设置该参数,实例Id参考这里这里获取。 ${accessCode} 是 接入凭证密钥,长度不超过256个。
  • 设置企业版实例公网访问 为了助力企业快速迁移上云,物联网平台提供通过公网、私网、专线等接入形式。 当您需要通过公网地址访问设备接入实例时,可配置实例的公网访问功能。公网访问带宽默认是50Mb/s,无需额外付费。如果您需要扩大带宽,请提交工单说明您的需求。 访问设备接入服务,单击“管理控制台”进入设备接入控制台。 选择左侧导航栏“IoTDA实例”,单击企业版实例对应的“详情”进入实例详情页面。 单击“配置公网接入”,为应用或设备配置公网接入地址,单击“确定”后平台会自动生成公网IP。 图2 实例管理-配置公网接入
  • 修改企业版实例信息 IoTDA企业版实例创建成功后,您可以根据自己的业务情况对IoTDA企业版实例的部分参数进行调整,包括实例名称、描述等信息。 访问设备接入服务,单击“管理控制台”进入设备接入控制台。 选择左侧导航栏“IoTDA实例”,单击企业版实例对应的“详情”进入实例详情页面。 修改实例参数。 单击实例名称后的,修改实例名称。 实例名称支持中文汉字、英文字母、数字、下划线(_)、中划线(-)。长度不能超过64个字符,一个中文汉字计一个字符。 图1 实例管理-修改实例名称
  • 接入信息配置 IoTDA企业版实例创建成功后,您可以根据自己的业务情况配置接入域名和对应的服务器证书。 访问设备接入服务设备接入服务,单击“管理控制台”进入设备接入控制台。 选择左侧导航栏“IoTDA实例”,单击企业版实例对应的“详情”进入实例详情页面。 配置接入域名,单击接入域名下方的“未配置”,配置应用和设备接入平台的域名信息。您需要在域名提供商如华为云 域名注册服务 配置DNS,添加域名到公网接入地址的解析记录。 按照工信部要求,您配置的自定义域名需要提前完成ICP备案。 图3 实例管理-配置接入域名 您可以根据业务情况单击进入更新证书页面,配置自定义的服务器证书。自签名证书存在安全隐患,建议使用 云证书管理服务 购买证书、或购买其他权威机构颁发的证书。证书更新后可以通过浏览器访问公网地址或第三方工具校验证书是否更新成功。 图4 实例管理-更新证书 在支持国密的企业版实例中,MQTTS设备接入协议还允许配置支持国密算法的自定义签名证书和加密证书,签名证书和加密证书的CA必须一致。 图5 IoTDA实例-上传国密证书 更新证书后,可能导致证书校验异常,原有设备或应用无法接入物联网平台,请谨慎操作。
  • 激励金额如何计算? 核算过程: 激励总金额 = ∑人力基线 * 100% * 3*地域系数 激励规则: 激励人员类型 人力基线(元/月) 国家/地区 服务专家 50,000 北京、广州、深圳、上海、南京、杭州、成都、福州、济南、长沙、重庆、武汉、西安、郑州系数为1.2; 其他省会城市系数为1; 非省会城市系数0.9。 高级服务工程师 30,000 高级顾问 80,000 父主题: 服务伙伴-专家服务专职人员激励
  • 伙伴可以先举办完活动,后面再补使用申请、兑付申请吗? 不能。先审批后执行,严格验收活动。 MDF管理责任人对MDF使用进行管理,并监控活动的开展。合作伙伴提交使用申请,建议至少在活动前10个工作日提交。未经事前审批、未按照验收要求进行申付的MDF活动一律不予支付或核销。如活动时间、地点、对象、形式等关键信息发生变化,需在活动发生前重新提交活动申请。 使用申请需列清费用项,实际核销金额不得超过使用申请预算,超出部分由合作伙伴自行承担。 父主题: 市场发展基金(MDF)
  • 配置自定义监控指标 自定义监控指标单独进行计费。 具体收费情况请参考计费详情。 登录CAE控制台。 在左侧导航栏中选择“组件配置”。 在“组件配置”页面上方的下拉框中选择需要操作的组件。 图1 选择组件 单击“自定义监控指标”模块中的“编辑”。 单击,开启自定义监控指标开关。参考表1配置自定义指标监控。 表1 自定义指标监控参数说明 参数 说明 采集路径 组件通过Get方法暴露的供CAE获取自定义指标数据的路径。 例如,/actuator/prometheus。 采集端口 组件通过Get方法暴露的供CAE获取自定义指标数据的端口。 取值范围为1到65535。 例如,9090。 指标名称 组件通过Get方法暴露的自定义指标名称。为了查看时便于理解,请命名时注意名称能反映实际意义,详见:Metric and label naming。 例如,定义某个按钮被单击的次数,可命名为“click_operated_total”。 如果组件暴露出的指标与所填指标名称不相符,则无法生效。 指标名称仅支持英文、数字和下划线,长度为5-100个字符。 (可选)需要添加多条自定义监控指标,单击“新增监控指标”,添加指标名称 单击“确定”,完成配置。 使配置生效。 如已完成组件部署,单击页面上方“生效配置”。在右侧弹框中确认配置信息,并单击“确定”,使配置生效。 如未完成组件部署,单击页面上方“配置并部署组件”。在右侧弹框中单击“确定”待部署执行完成后,配置生效。 配置并部署完成后,可以到“组件监控”选择对应实例查看监控指标数据。 图2 查看自定义监控指标
  • 关闭自定义监控指标 登录CAE控制台。 在左侧导航栏中选择“组件配置”。 在“组件配置”页面上方的下拉框中选择需要操作的组件。 单击“自定义监控指标”模块中的“编辑”。 单击,关闭自定义监控指标。单击“确定”。 在弹框中输入“SWITCHOFF”,单击“确定”。 单击页面上方“生效配置”。在右侧弹框中确认配置变更信息,并单击“确定”,使配置生效。 配置生效后,“组件监控”页面对应实例的自定义指标数据不再展示。
  • 注意事项 当前仅支持获取prometheus支持的四种格式。 在设置应用组件自定义监控前,您需先了解prometheus,并在您的应用组件中提供获取自定义指标数据的GET接口(具体操作请参考java应用如何提供Prometheus指标),以便CAE能够通过该接口获取您的自定义指标数据,Prometheus提供了各种语言的客户端(包括Go,Java,Python,Ruby,Net等),客户端具体请参见Prometheus CLIENT LIBRARIES,开发Exporter具体方法请参见WRITING EXPORTERS。Prometheus社区提供丰富的第三方exporter可以直接使用,具体请参见EXPORTERS AND INTEGRATIONS。
  • 操作步骤 登录CAE控制台。 在左侧导航栏中选择“组件配置”。 在“组件配置”页面上方的下拉框中选择需要操作的组件。 单击“ 云存储 配置”模块中的“编辑”,进入云存储配置页面。 单击选择“授权高性能弹性文件服务”。 从下拉框中选择已授权的高性能弹性文件服务名称。 如需新增授权,可以单击下拉框右侧“去授权高性能弹性文件服务”进行添加,具体操作请参考授权高性能弹性文件服务。 参考表1配置容器挂载的路径和权限。 表1 参数说明 参数 说明 挂载路径 数据存储挂载到组件上的路径。 说明: 数据存储挂载到容器上的路径,请不要挂载到系统目录下,如“/”、“/var/run”等,否则会导致容器异常。 云存储的挂载路径不能重复。 子路径 数据所引用的云存储内的子路径。 说明: 使用子路径挂载本地磁盘,实现在单一Pod中重复使用同一个Volume。 不填写时默认挂载根路径。 权限 挂载路径及挂载路径下文件,有“读写”、“只读”两种权限。 (可选)单击“添加挂载路径”,可配置多条挂载路径。 单击“确定”,完成高性能弹性文件服务配置。 在“云存储配置”页面中可查看配置好的高性能弹性文件服务。 使配置生效。 如已完成组件部署,单击页面上方“生效配置”。在右侧弹框中确认配置信息,并单击“确定”,使配置生效。 如未完成组件部署,单击页面上方“配置并部署组件”,在右侧弹框中单击“确定”,待部署执行完成后,配置生效。
共100000条
提示

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