华为云用户手册

  • 示例场景 常见的应用系统(如ERP、采购、财务等)中都会包含人员管理,而人员管理往往都是以组织的形式进行管理和展示。这种场景下,树形结构是此功能的基础核心,所有人员的权限操作都是依附于组织。 图1 某企业组织架构图 某企业的组织架构如图1所示,根据树形结构进行分析,可得知: 黄色方框的部门没有父节点,即为根节点。 红色方框的部门没有子节点,即为叶子节点。 绿色方框的部门均有子节点。 为此,您可在构建数据模型时,创建一个具有“树形结构”功能的数据实体用于管理此企业的组织。而后在其数据实体实例化时,通过指定“ParentNode”的属性值来实现组织管理。 如下操作步骤仅指导您如何通过可视化页面使用树形结构功能。关于如何通过API方式使用树形结构功能请参见全量数据服务。
  • 约束与限制 如果数据实体的父模型具有树形结构,该数据实体自动继承树形结构功能,且不可去除勾选。如果后续父模型删除了树形结构功能,该数据实体将不再继承父模型的树形结构功能,但可以自己重新勾选树形结构功能。 如果数据实体为Master-Version模型实体(即“父模型”选择为“VersionObject”),则只能在Master模型上选择树形结构功能,Version模型和Branch模型不支持选择树形结构功能。 当您需要处理大量 数据实例 并调用DeleteNodeRecursively接口时,建议为“RawFullPath”属性字段创建索引,以提高查询效率和系统性能。
  • 集群联邦版本发布记录 表1 U CS 集群联邦版本发布记录 UCS集群联邦版本号 支持的集群版本 更新特性 当前状态 UCS集群联邦版本商用时间 UCS集群联邦版本EOS(停止服务时间) v1.10.7-r16 v1.19~v1.31 支持Kubernetes 1.31集群版本 支持联邦资源RBAC细粒度权限控制 商用 2025.4 2027.4 v1.10.7-r6 v1.19~v1.30 支持Kubernetes 1.30集群版本 支持MCI配置service维度的健康检查 支持MCI配置参数冲突校验 商用 2024.11 2026.11 v1.10.3-r10 v1.19~v1.29 修复集群状态异常时应用迁移问题 商用 2024.7 2026.7 父主题: 产品发布记录
  • 安卓平台App特征信息基本概念 特征信息 定义 App包名 App包名是Android应用程序的唯一标识符,例如:com.huaweicloud.myApp 公钥 公钥是加密算法中的公钥,用于保护数据的安全性。在App中,公钥通常用于验证应用程序的数字签名,以确保应用程序的完整性和真实性。 备案时,在安卓平台中填写APK signature中模数。 签名MD5值 签名 MD5 值是指应用程序在发布到应用商店之前,由开发者使用签名证书对应用程序进行数字签名后所得到的 MD5 值。 App 特征信息中的 MD5 值,指的是 App 证书的数字指纹值。 备案时在安卓平台中填写证书的MD5值(以16进制形式填写)。
  • 获取App特征信息(安卓应用) 包名、公钥及签名MD5值可通过多种安卓开发工具获得,本文以JadxGUI获取为例。 1. 工具下载。下载JadxGUI工具,下载安装完成后,使用此工具打开apk包。 2. 获取包名。在资源文件下的AndroidManifest.xml文件中找到package属性对应信息。 图7 获取安卓包名 3. 获取公钥。在文件APK signature中查看模数(即公钥,如果公钥显示不完整,可以点击后面的省略号,若仍无法完整显示可直接复制已显示的数据进行填写即可)。 图8 获取安卓公钥 4. 获取签名MD5值。在文件APK signature中查看MD5签名。 图9 获取安卓签名MD5值
  • 获取App特征信息(IOS应用) 1. 登录Developer 控制台,访问 https://developer.apple.com/cn/,使用App对应的IOS 开发者账号登录 。 2. 获取Bundle ID。在账户-计划资源中查看标识符,在Certificates,Identifiers&Profiles – Identifiers中IDENTIFIER列对应的就是Bundle ID。 图10 查看标识符
  • IOS平台App特征信息基本概念 特征信息 定义 Bundle ID Bundle ID是iOS应用程序的唯一标识符。例:com.huaweicloud.App。 公钥 公钥是加密算法中的公钥,用于保护数据的安全性。在App中,公钥通常用于验证应用程序的数字签名,以确保应用程序的完整性和真实性。 备案时,在IOS平台中填写证书中的公共密钥。 签名MD5值 签名 MD5 值是指应用程序在发布到应用商店之前,由开发者使用签名证书对应用程序进行数字签名后所得到的 MD5 值。 App 特征信息中的 MD5 值,指的是 App 证书的数字指纹值。 备案时在IOS平台中填写证书的SHA-1 值(以16进制形式填写)。
  • 鸿蒙平台App特征信息基本概念 特征信息 定义 App包名 App包名是HarmonyOS应用程序的唯一标识符,例如:com.huaweicloud.harmony 公钥 公钥是加密算法中的公钥,用于保护数据的安全性。在App中,公钥通常用于验证应用程序的数字签名,以确保应用程序的完整性和真实性。 备案时,在鸿蒙平台中填写证书中的公钥。 签名MD5值 签名 MD5 值是指应用程序在发布到应用商店之前,由开发者使用签名证书对应用程序进行数字签名后所得到的 MD5 值。 App 特征信息中的 MD5 值,指的是 App 证书的数字指纹值。 备案时在鸿蒙平台中填写证书中的指纹值。
  • 获取App特征信息(鸿蒙应用) 1. 登录AppGallery Connect网站,选择“我的项目”。 2. 选择需要查询的应用。 3. 获取包名。在“应用”信息下,页面中的“App ID”即为应用ID,“包名”即为应用包名。 图1 获取鸿蒙包名 4. 获取公钥和MD5。点击“用户与访问”,在页面左侧点击“证书管理”,下载需要备案的鸿蒙应用开发者证书; 图2 用户与访问 图3 证书管理 5. 使用文本编辑器(如,记事本)打开已下载的证书,按照图示内容删除根证书和中间证书,保留叶子证书后,点击保存; 图4 编辑证书 6. 打开已保存的证书,点击“详细信息-公钥”,获取App的公钥信息;点击“详细信息-指纹”,获取App的MD5签名信息。 图5 获取鸿蒙公钥、MD5(指纹) 7. 若您的操作系统为macOS,在证书编辑完成后需要进入“钥匙串”中打开证书,搜索对应证书后双击打开。 图6 钥匙串
  • 查询、修改、删除设备影子 查询设备影子 方法1:应用服务器调用查询设备影子数据接口。 方法2:登录管理控制台,选择您的实例,单击实例卡片进入。在左侧导航栏选择“设备”,单击具体的设备进入到设备的详情页面,在“设备影子”页签中,可以查看当前设备属性数据,包括“上报值”和“期望值”。 如果当前界面中看到“上报值”与“期望值”不一致,原因可能是设备未在线,暂时存储在设备影子中,待同步给设备,期望值会存在深色底纹。 如果当前界面看到的“上报值”与“期望值”一致,则表示设备最近一次上报的属性值与用户期望下发的属性值一致,期望值为白色底纹。 图1 设备影子-查看 修改设备影子 方法1:应用服务器调用配置设备影子预期数据接口。 方法2:登录管理控制台,选择您的实例,单击实例卡片进入。在左侧导航栏选择“设备-所有设备”,在设备列表中单击具体的设备进入到设备的详情页面,在“设备影子”页面,单击“属性配置”,在弹出窗口中输入服务属性对应的期望值,单击"确定"完成设备影子的修改。 图2 设备影子-属性配置 删除设备影子 用户删除设备影子,平台将会将设备影子中的所有数据(包含上报值和期望值)清空。 图3 删除设备影子
  • 业务流程 修改设备属性值 修改desired区属性值,如果设备在线,则设备影子直接同步设备属性值到设备,否则等待设备上线或上报数据时,再同步设备属性值到设备。 用户通过控制台或应用服务器修改设备属性值。消息样例如下: PUT https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/shadow Content-Type: application/json X-Auth-Token: ******** Instance-Id: ******** { "shadow" : [ { "desired" : { "temperature" : "60" }, "service_id" : "WaterMeter", "version" : 1 } ] } 物联网平台 修改desired区属性值。 物联网平台返回响应消息。 物联网平台判断设备上线或上报数据。 物联网平台将设备属性同步到设备。消息样例如下: Topic: $oc/devices/{device_id}/sys/properties/set/request_id={request_id} 数据格式: { "object_device_id": "{object_device_id} ", "services": [ { "service_id": "Temperature", "properties": { "value": 57, "value2": 60 } }, { "service_id": "Battery", "properties": { "level": 80, "level2": 90 } } ] } 设备返回响应消息。设备影子desired区的属性值发送给设备后,需要设备回响应表示已收到请求。消息样例如下: Topic:$oc/devices/{device_id}/sys/properties/set/response/request_id={request_id} 数据格式: { "result_code": 0, "result_desc": "success" } 7.设备上报数据,当设备进行属性上报时,平台会存储设备最新上报的设备属性值。 设备上报属性时,物联网平台修改设备影子reported区属性值为设备上报的设备属性值。消息样例如下: Topic: $oc/devices/{device_id}/sys/properties/report 数据格式: { "services": [ { "service_id": "Temperature", "properties": { "value": 57, "value2": 60 }, "event_time": "20151212T121212Z" }, { "service_id": "Battery", "properties": { "level": 80, "level2": 90 }, "event_time": "20151212T121212Z" } ] } 设备主动删除设备影子的reported区 设备主动删除reported区service下的单个属性 设备上报属性时,将属性设置为null,平台会将该属性从设备影子reported区删除,消息样例如下: Topic: $oc/devices/{device_id}/sys/properties/report { "services": [ { "service_id": "Temperature", "properties": { "value": null, "value2": 60 }, "event_time": "20151212T121212Z" } ] } 设备主动删除影子reported区的service下的全部的属性 设备上报属性时,将service对应的properties设置为{}时,平台会将reported区该service模块下所有属性从设备影子reported区删除,消息样例如下: Topic: $oc/devices/{device_id}/sys/properties/report { "services": [ { "service_id": "Temperature", "properties": {}, "event_time": "20151212T121212Z" } ] } 查询设备属性值 设备影子保存的是设备最新的设备属性值,一旦设备属性值产生变化,设备会将设备属性值同步到设备影子。用户便可以及时获取查询结果,无需关注设备是否在线。 用户通过控制台或应用服务器查询设备属性值。消息样例如下: GET https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/shadow Content-Type: application/json X-Auth-Token: ******** Instance-Id: ******** 物联网平台返回desired属性值和report属性值,即期望值和上报值。消息样例如下: Status Code: 200 OK Content-Type: application/json { "device_id" : "********", "shadow" : [ { "desired" : { "properties" : { "temperature" : "60" }, "event_time" : "20151212T121212Z" }, "service_id" : "WaterMeter", "reported" : { "properties" : { "temperature" : "60" }, "event_time" : "20151212T121212Z" }, "version" : 1 } ] }
  • 创建MySQL 登录华为云官方网站,访问云数据库 MySQL。 设备接入服务 企业版实例支持通过内网连接MySQL,标准版实例仅支持通过公网连接MySQL。 在购买的MySQ L实例 中,根据流转数据格式设计数据库表,可以通过数据过滤语句编辑流转数据。本示例使用设备属性上报通知的默认格式,将流转数据中的resource、event、notify_data、event_time分别转存至数据库表中的resource、event、content、event_time字段。 图1 创建数据库表样例
  • Fn::ToUpperCase 内部函数Fn::ToUpperCase将字符串转大写函数。 JSON { "Fn::ToUpperCase" : content } 表19 参数说明 参数名称 类型 说明 content String 待转换的字符串。 返回值 String 字符串被转为大写后的值。 示例如下: { "Fn::ToUpperCase": "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::ToLowerCase 内部函数Fn::ToLowerCase将指定字符串转的所有字符转化成小写。 JSON { "Fn::ToLowerCase" : content } 表18 参数说明 参数名称 类型 说明 content String 待转换的字符串。 返回值 String 字符串被转为小写后的值。 示例如下: { "Fn::ToLowerCase": "ABC" ] return: "abc"
  • 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"
  • 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::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"
  • 使用说明 华为云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(字符串拆分函数,截取分隔符前面字符)操作。
  • 策略变量 在策略中定义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携带时间戳。可用主题来区分时间段。
  • 策略通配符 策略中具有不同的通配符,使用前需注意。在策略中,“*”表示字符的任意组合,问号“? ”表示任何单个字符,而通配符“+”和“#”被视为没有特殊含义的字符。 表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”
  • 概述 设备策略主要用于对发布/订阅的非$oc开头自定义topic中的数据进行传输限制。通过灵活访问的控制模型,提供了基于用户角色的访问控制,能够管理客户端发布/订阅主题的授权。借助策略功能,可以用于管理一个或多个设备/产品/群组发布、订阅的权限,以保证非$oc开头的自定义Topic的通信安全。设备Topic策略用于发布、订阅机制的协议,比如说设备侧的MQTT、MQ TTS 协议。 对于使用IOTDA的用户,新增的资源空间会默认加入策略“system_default_policy”,system_default_policy策略会允许该资源空间下所有设备的非$oc开头的自定义Topic的订阅与发布。当业务场景不适用时,可以删除该策略。 图1 策略概念图
共100000条
提示

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