华为云用户手册

  • 共享资源创建流程 本文以共享ANC为例,介绍共享资源创建流程。 作为ANC的所有者,您可以将ANC共享给其他账号的使用者,使用者接受该共享请求后,ANC共享才会成功。基于 RAM 服务实现ANC的共享,您在创建ANC共享时,有以下两种方法: 方法一:创建全新的RAM共享,添加待共享的ANC,并指定使用者。 方法二:如果您已有可用的RAM共享,您可以将ANC添加到该RAM共享中。此时您可以复用RAM共享中已有的使用者或者根据需求添加其他使用者。 共享ANC创建流程如图4所示。 图4 共享ANC创建流程 您可以使用RAM管理控制台或者ANC管理控制台,创建ANC共享,表4中详细为您介绍方法一和方法二。 表4 共享ANC创建流程说明 方法 说明 操作指导 方法一 所有者创建新的共享: 所有者选择待共享的ANC,可在“共享”页签下,跳转到RAM管理控制台创建新的共享,将ANC共享给使用者。配置如下: 选择共享ANC。 确认共享ANC权限,使用者对该共享ANC默认支持的权限是查看ANC资源信息、创建VPC关联、创建服务关联。 指定共享ANC的使用者,可以指定多个使用者。 共享创建完成后,通过RAM管理控制台,使用者可以选择接受或者拒绝共享申请。 使用者接受共享申请,ANC共享成功。 如果后续使用者不再需要使用该共享ANC,可以退出该共享。 使用者拒绝共享申请,ANC共享失败。 所有者:所有者创建共享 使用者:使用者接受/拒绝共享 使用者:使用者退出共享 方法二 将ANC添加到已有的共享中: 所有者在RAM管理控制台,查找已有的共享。 使用更新共享功能,所有者将ANC添加至已有的共享中。例如,将ANC添加到1中创建的共享中。配置如下: 选择共享ANC。 确认共享ANC权限,使用者对该共享ANC默认支持的权限是查看ANC资源信息、创建VPC关联、创建服务关联。 复用共享中已设置的使用者或者添加新的使用者,可以指定多个使用者。 所有者:查看共享 所有者:更新共享 使用者:使用者接受/拒绝共享 使用者:使用者退出共享
  • 共享资源所有者和使用者权限说明 所有者可以对共享资源执行任何操作,使用者仅可以执行部分操作,使用者支持的操作说明如表2所示。 表2 共享ANC使用者支持的操作列表 角色 支持的操作 操作说明 使用者 查看共享ANC: 查看云原生应用网络 使用者可以查看共享ANC的基本信息。 和所有者的功能差异:使用者查看共享ANC的基本信息时,无法查看描述。 ANC关联VPC: 关联云原生应用网络与VPC 使用者可以在共享ANC中关联VPC,和所有者的功能差异如下: 使用者关联VPC时,无法为关联添加标签。 ANC关联服务: 关联云原生应用网络与服务 使用者可以在共享ANC中关联服务,和所有者的功能差异如下: 使用者关联服务时,无法为关联添加标签。 查看共享ANC关联的VPC和服务: 查看云原生应用网络 使用者可以在共享ANC中查看关联的VPC和服务,和所有者的功能差异如下: 使用者查看关联的VPC和服务时,无法查看连接的标签。 删除共享ANC中的VPC关联和服务关联: 删除VPC关联操作步骤 删除关联服务 使用者可以在共享ANC中删除与自己相关的VPC关联和服务关联,无需所有者审批。具体可删除的VPC关联和服务关联如下: 使用者自己创建的VPC关联和服务关联。 VPC关联中,VPC属于使用者账号。 服务关联中,服务端的业务属于使用者账号。 表3 共享服务使用者支持的操作列表 角色 支持的操作 操作说明 使用者 查看共享服务: 查看服务 使用者可以查看服务的基本信息。 服务关联ANC: 关联ANC 使用者可以在共享服务中关联ANC。 查看共享服务关联的ANC: 查看服务 使用者可以在共享服务中查看自己关联的ANC。 删除共享服务的ANC关联: 删除关联ANC 使用者可以将共享服务移出本账号拥有的ANC,无需所有者审批。
  • 共享简介 依托于 资源访问管理 (Resource Access Manager,简称RAM)服务,可以实现跨账号共享ANC和共享服务,您可以将账号A拥有的ANC或服务同时共享给多个其他账号,比如账号B、账号C等。通过共享ANC和共享服务功能,可以实现统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。 账号A属于共享ANC所有者,以下简称为所有者。 账号B和账号C,均属于共享ANC使用者,以下简称为使用者。 场景1:所有者将ANC共享给使用者,使用者可以在共享ANC中关联VPC,该VPC内的客户端可以访问共享ANC上关联的服务。 场景2:所有者将ANC共享给使用者,使用者可以在共享ANC中关联服务,该服务从与共享ANC关联的VPC的客户端接收请求。 场景3:所有者将服务共享给使用者,使用者可以在ANC中关联共享服务,共享服务从与ANC关联的VPC的客户端接收请求。 接下来,本文档将以账号A、账号B和账号C为例,为您介绍通过共享功能如何构建组网,每个账号下的资源如表1所示。 在同一个ANC中关联不同账号下的VPC,将ANC同时共享给账号B和账号C,就可以将账号B和账号C下的VPC关联到ANC中,组网示例如图1所示。 在同一个ANC中关联不同账号下的服务,将ANC同时共享给账号B和账号C,就可以将账号B和账号C下的服务关联到ANC中,组网示例如图2所示。 同一个服务关联至不用账号下的ANC,将服务共享给账号B、账号C,就可以将账号A的服务分别关联到账号B和账号C的ANC中,组网示例如图3所示。 表1 账号和资源情况说明 账号 云原生应用网络 虚拟私有云 服务 A ANC-A VPC-A 服务A B ANC-B VPC-B 服务B C ANC-C VPC-C 服务C 图1 共享ANC组网示例-关联不同账号下的VPC 图2 共享ANC组网示例-关联不同账号下的服务 图3 共享服务组网示例-不同账号下的ANC关联服务
  • 不支持的范围 在应用设计态添加索引时,不支持选择RdmDeleteFlag和MasterId属性。 不支持JSON、文件、URL和长文本类型的属性。 选择“普通索引”时,如果属性的约束信息包含如下定义,则不支持。 “入库”为“否”的属性。 “多值”为“是”的属性。 “索引”为“是”的属性。 选择“唯一索引”时,如果属性的约束信息包含如下定义,则不支持。 “入库”为“否”的属性。 “多值”为“是”的属性。 “唯一键”为“是”的属性。 选择“唯一索引忽略大小写”时,如果属性的约束信息包含如下定义,则不支持。 “入库”为“否”的属性。 “多值”为“是”的属性。 “唯一键”为“是”的属性。
  • 约束与限制 如果数据实体的父模型具有树形结构,该数据实体自动继承树形结构功能,且不可去除勾选。如果后续父模型删除了树形结构功能,该数据实体将不再继承父模型的树形结构功能,但可以自己重新勾选树形结构功能。 如果数据实体为Master-Version模型实体(即“父模型”选择为“VersionObject”),则只能在Master模型上选择树形结构功能,Version模型和Branch模型不支持选择树形结构功能。 当您需要处理大量 数据实例 并调用DeleteNodeRecursively接口时,建议为“RawFullPath”属性字段创建索引,以提高查询效率和系统性能。
  • 示例场景 常见的应用系统(如ERP、采购、财务等)中都会包含人员管理,而人员管理往往都是以组织的形式进行管理和展示。这种场景下,树形结构是此功能的基础核心,所有人员的权限操作都是依附于组织。 图1 某企业组织架构图 某企业的组织架构如图1所示,根据树形结构进行分析,可得知: 黄色方框的部门没有父节点,即为根节点。 红色方框的部门没有子节点,即为叶子节点。 绿色方框的部门均有子节点。 为此,您可在构建数据模型时,创建一个具有“树形结构”功能的数据实体用于管理此企业的组织。而后在其数据实体实例化时,通过指定“ParentNode”的属性值来实现组织管理。 如下操作步骤仅指导您如何通过可视化页面使用树形结构功能。关于如何通过API方式使用树形结构功能请参见全量数据服务。
  • 集群联邦版本发布记录 表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特征信息(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包名是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特征信息基本概念 特征信息 定义 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 钥匙串
  • 业务流程 修改设备属性值 修改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 } ] }
  • 查询、修改、删除设备影子 查询设备影子 方法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 创建数据库表样例
  • 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::ToUpperCase 内部函数Fn::ToUpperCase将字符串转大写函数。 JSON { "Fn::ToUpperCase" : content } 表19 参数说明 参数名称 类型 说明 content String 待转换的字符串。 返回值 String 字符串被转为大写后的值。 示例如下: { "Fn::ToUpperCase": "abc" ] return: "ABC"
  • 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::SubStringAfter 内部函数Fn::SubStringAfter截取字符串指定分隔符后的子字符串。 JSON { "Fn::SubStringAfter" : ["content", "separator"] } 表16 参数说明 参数名称 类型 说明 content String 待截取的字符串。 separator String 分隔符。 返回值 String 字符串被指定分隔符分割后的子字符串。 示例如下: { "Fn::SubStringAfter": ["content:123456", ":"] ] return: "123456"
  • 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::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"
共100000条
提示

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