华为云用户手册

  • 约束与限制 边缘节点磁盘占用超过70%时,会启动镜像回收机制回收容器镜像占用的磁盘空间,此时部署容器应用会导致容器启动变慢,请在部署容器应用前规划好边缘节点磁盘空间。 创建容器应用时,边缘节点会从 容器镜像服务 拉取镜像,如果镜像超大且边缘节点下载带宽较小,容器镜像没有拉取完成,从而导致控制台上容器应用显示创建失败。虽然应用创建失败,但容器镜像拉取不会中断,等容器镜像拉取成功后,容器应用的状态会刷新为创建成功。此情况下也可以先将容器镜像拉取到边缘节点,然后再创建容器应用。 容器镜像的架构必须与节点架构一致,比如节点为x86,那容器镜像的架构也必须是x86。
  • 参数说明 IEF转发自定义Topic内容是透传,可以转发任意内容。 “{custom_topic}”支持通配符“#”和“+”,可以将多条符合通配规则的消息进行统一转发。 “#”是一个匹配主题中任意层次数的通配符,多层通配符可以表示大于等于0的层次。“+”是单层通配符,只匹配主题的一层。 对于符合通配规则的Topic消息进行最小范围匹配后进行路由消息转发。如消息Topic为123/aaa/567和123/bbb/567,可以配置通配转发规则123/+/567进行统一转发。
  • 示例 终端设备绑定到边缘节点时可收到如下消息。 $hw/events/device/{device_id}/twin/update/document{ "event_id":"", "timestamp":1557314742122, "twin":{ "state":{ "last":null, "current":{ "expected":{ "value":"running", "metadata":{ "timestamp":1557314742122 } }, "optional":true, "metadata":{ "type":"string" } } } } }
  • 注意事项 为了让您的边缘节点应用更稳定可靠的运行,IEF不会主动升级您的边缘节点上的EdgeCore,需要由您在业务影响最小的时间窗内进行节点升级,以减轻对您业务的影响。 处于维护周期中的版本升级,边缘节点上的应用业务不会中断,如果您有使用消息路由功能,可能会有短暂影响。 处于维护周期外的版本升级,可能会因为容器重启引起业务的短暂中断。 请勿在节点升级过程中变更节点配置,比如重启Docker、安装卸载GPU/NPU驱动、OS内核升级、变更网络配置等,这些操作会增大节点升级失败风险。
  • 边缘节点概述 边缘节点是您自己的边缘计算机器,用于运行边缘应用,处理您的数据,并安全、便捷地和云端应用进行协同。您可以通过智能边缘平台部署系统应用来延伸云服务能力到边缘节点,或者通过部署您自己的应用来构建您自己的边缘计算能力。 为了使智能边缘平台能够管理您的边缘节点,您需要做如下步骤: 准备边缘节点,边缘节点需要满足一定的规格要求,具体请参见配置边缘节点环境。 在IEF中创建边缘节点,获取边缘节点的安装工具和配置文件,具体请参见注册自建边缘节点。 使用上一步获取的安装工具和配置文件纳管边缘节点,具体请参见纳管边缘节点。 图1 使用流程 父主题: 节点管理
  • 支持审计的关键操作列表 表1 云审计 服务支持的IEF操作列表 操作名称 资源类型 事件名称 注册边缘节点 node createEdgeNode 更新边缘节点 node updateEdgeNode 删除边缘节点 node deleteEdgeNode 创建设备模板 deviceTemplate createDeviceTemplate 更新设备模板 deviceTemplate updateDeviceTemplate 删除设备模板 deviceTemplate deleteDeviceTemplate 注册设备 device createDevice 更新设备 device updateDevice 删除设备 device deleteDevice 部署Edge-Connector device deployConnector 更新设备孪生 device updateDeviceTwin 更新设备访问配置 device updateDeviceAccessConfig 创建应用模板 application createApplication 更新应用模板 application updateApplication 删除应用模板 application deleteApplication 创建应用模板版本 appVersion createAppVersion 更新应用模板版本 appVersion updateAppVersion 删除应用模板版本 appVersion deleteAppVersion 创建配置项 configmap createConfigMap 更新配置项 configmap updateConfigMap 删除配置项 configmap deleteConfigMap 创建容器应用 deployment createDeployment 更新容器应用 deployment updateDeployment 删除容器应用 deployment deleteDeployment 查询容器应用列表 deployment getDeploymentList 查询容器应用 deployment getDeployment 创建端点 endpoint createEndpoint 删除端点 endpoint deleteEndpoint 添加节点证书 node AddNodeCert 删除节点证书 node deleteNodeCert 升级固件 nodeFirmware UpgradeNodeFirmware 查询应用实例列表 Pods getPods 查询实例 Pod getPod 创建节点注册作业 product createProduct 删除节点注册作业 product deleteProduct 创建节点升级作业 batchJob createJob 停止节点升级作业 batchJob pauseJob 删除节点升级作业 batchJob deleteJob 查询配额 quota getQuota 更新配额 quota updateQuota 创建规则 rule createRule 删除规则 rule deleteRule 更新规则 rule updateRule 创建密钥 secret createSecret 更新密钥 secret updateSecret 删除密钥 secret deleteSecret 过滤标签 Tags filterTags 批量添加删除标签 Tags batchAddDeleteTags 添加标签 Tags addTag 删除标签 Tags deleteTag 创建系统订阅 Systemevent createSystemevent 删除系统订阅 Systemevent DeleteSystemevent 启用系统订阅 Systemevent startSystemevent 停用系统订阅 Systemevent stopSystemevent
  • 示例 节点告警 { "alarmName": "测试##test", "alarmId": "73ccbccce05de74f9d3dda42f6ecfe20", "detailedInformation": "测试##test", "url": "", "source": "IEF", "cleared": false, "policyID": "", "perceivedSeverity": 4, "resourceId": { "namespace": "PAAS.NODE", "dimension": { "clusterId": "e277befa37a64ed1aa25b522e686bc28", "nameSpace": "default", "nodeIP": "192.168.0.164" } }, "neType": "Host", "eventType": 23} 应用告警 { "alarmName": "应用重启test##Application restart", "alarmId": "b09076ff565c59d4da0db0c9223781", "detailedInformation": "应用重启 test##Application restart test", "url": "", "source": "IEF", "cleared": false, "policyID": "", "perceivedSeverity": 3, "resourceId": { "namespace": "PAAS.CONTAINER", "dimension": { "containerName": "container-e991acd3-864c-4038-8a90-e042eebab496", "containerID": "70b385315c8ac507b3de7dfe1258932cea0b53a850b7d030ce7ed0a55c47877c", "podID": "0e9ce4fd-b732-11e9-8a30-fa163e9b3546", "podName": "hxkapp1-7898f5bd4b-2lj8z" } }, "neType": "Application", "eventType": 23}
  • alarmId生成方法 alarmId可以不使用本方法生成,只要保证唯一就可以。 使用{projectId}_{产生告警的服务名}_{维度信息}_{指标名称}_{告警类型}_{规则信息}生成md5值。 其中: projectId:项目ID,获取方式请参见获取项目ID。 维度信息: 节点信息:{clusterId}_{namespace}_{ip} 容器信息:{clusterId}_{namespace}_{appName}_{podName}_{containerId} 应用信息:{clusterId}_{namespace}_{appName} 告警类型: 21:动态阈值告警 22:批量阈值告警 23:阈值告警 24:系统类告警 25:新增/删除探针 26:agent安装类告警 规则信息:阈值规则的告警使用阈值规则名称;业务自己触发的告警(没有规则)则填写NA。动态阈值的则填写policyId。
  • 参数说明 参数 类型 说明 alarmName String 告警名称,需要支持中英文两个版本,格式为“中文##English”。 alarmId String 告警ID,需要保证为唯一值。可以参考alarmId生成方法。 detailedInformation String 告警描述,需要支持中英文两个版本,格式为“中文##English”。 url String 根因分析跳转入口,如果没有则填空。 source String 告警源,只能是由大小写字母组成的字符串。 cleared Boolean 清除告警标示。 true:表示上报的告警已经清除。 false:表示需要手动清除。 policyID String 告警的规则ID,阈值规则填写ruleId,没有则填写空。 objectInstance String 定位信息,如果没传此字段,则该字段默认取alarmId的值。 perceivedSeverity Integer 告警级别 1:紧急 2:重要 3:次要 4:提示 resourceId Object 告警信息,具体请参见表1。 neType String 产生告警的资源的类型 Application(应用) DB(数据库) Host(主机) eventType Integer 告警类型 21:动态阈值告警 22:批量阈值告警 23:阈值告警 24:系统类告警 25:新增/删除探针 26:agent安装类告警 27:配额超限类告警 probableCause String 可能原因 proposedRepairActions String 修复建议 表1 resourceId 参数 类型 说明 namespace String 资源类型,有如下几种指标 PAAS.CONTAINER表示容器指标 PAAS.NODE表示节点指标 dimension Object 维度信息,用于跟监控上报的节点应用信息关联起来。具体请参见表2。 目前涉及到告警主要是节点和应用两种类型,所以只需要关注节点和应用这两种维度。 应用维度可以细分为服务、实例、容器和进程,这四个维度可以选择一个或多个上报。 服务维度需要上报:clusterId、nameSpace和serviceID 实例维度需要上报:podID和podName 容器维度需要上报:containerID和containerName 进程维度需要上报:processID和processName 表2 Dimension 参数 类型 说明 clusterId String 项目ID,获取方式请参见获取项目ID。 nameSpace String 默认为default。 nodeIP String 节点IP。 serviceID String 服务ID。 容器应用为{projectId}_{hostid}_{appName}的md5值。 进程应用为{projectId}_{hostid}_{进程名}_{进程pid}的md5值。 processID定义方式:md5({projectId})_{hostid}_md5({进程名})_{进程pid}。 md5(projectId) 表示求projectId的md5值,md5({进程名})表示求进程名的md5值 这些维度信息需要与监控上报的维度信息一致,不一致会导致无法关联到对应的资源。 podID String 实例ID。 podName String 实例名称。 containerID String 容器ID。 containerName String 容器名称。 processID String 进程ID。 processName String 进程名称。 Application String 应用名称。
  • Topic $hw/{project_id}/encryptdatas/{encryptdata_name}/properties/{properties_name}/plaintext 参数 类型 说明 project_id String 项目ID。获取方式请参见获取项目ID。 encryptdata_name String 加密数据集名称。 properties_name String 加密数据的“键名”。
  • 示例 终端设备绑定到边缘节点时可收到如下消息。 $hw/events/device/{device_id}/twin/update/delta{ "event_id":"b9625811-f34f-4252-bee9-98185e7e1ec7", "timestamp":1557314742131, "twin":{ "state":{ "expected":{ "value":"running", "metadata":{ "timestamp":1557314742122 } }, "optional":true, "metadata":{ "type":"string" } } }, "delta":{ "state":"running" } }
  • 示例 终端设备绑定到边缘节点时可收到如下消息。 $hw/events/device/{device_id}/twin/update/document{ "event_id":"", "timestamp":1557314742122, "twin":{ "state":{ "last":null, "current":{ "expected":{ "value":"running", "metadata":{ "timestamp":1557314742122 } }, "optional":true, "metadata":{ "type":"string" } } } } }
  • 参数说明 参数 类型 说明 event_id String 事件ID timestamp Int64 事件发生事件戳 twin Object 设备孪生变更信息集合,每个孪生以key/value形式存在。value中包含是否可选、孪生metadata包含类型信息、孪生期望状态包含期望值和更新时间、孪生真实状态包含真实值和更新时间等。 delta Map 包含设备孪生期望值与真实值不同的孪生名称和期望值。
  • 示例 $hw/events/node/3fbb5b8d-32db-4271-a34f-a013e021b6ce/membership/get/result{ "event_id":"bc876bc-345d-4050-86a8-319a5b13cc10", "timestamp":1557317193524, "devices":[ { "id":"ab39361a-6fc0-4c94-b919-72b1e08ca690", "name":"IEF-device", "state":"unknown", "attributes":{ "address":{ "value":"longgang", "optional":true, "metadata":{ "type":"string" } } } } ] }
  • 状态说明 批量节点升级作业有以下八种状态。 排队中:作业等待执行 执行中:作业处于执行状态 成功:全部任务执行成功 部分成功:部分任务执行成功 失败:全部任务执行失败 停止中:作业处于停止中 已停止:作业已停止 更新超时:作业排队和执行时间超过10分钟仍未完成 批量作业执行过程中可以停止,停止后可以继续。 如果批量作业执行失败、部分成功或更新超时,可以重试执行作业,将未执行成功的作业再次执行一遍。 图2 重试
  • 云端修改孪生属性控制终端设备状态 图3 修改终端设备状态 在IEF中修改终端设备的孪生属性,IEF将终端设备期望状态(Expected State)发送给边缘节点的EdgeHub。 EdgeHub发送终端设备期望状态消息到DeviceTwin,DeviceTwin在边缘节点存储终端设备期望状态。 终端设备实时发消息给MQTT broker查询终端设备期望状态。 EventBus接收到从MQTT broker发过来的消息。 EventBus根据消息去查询终端设备期望状态。 DeviceTwin反馈当前终端设备期望状态给EventBus。 EventBus发送设终端备期望状态的结果给MQTT broker。 终端设备从MQTT broker收到订阅消息,根据期望状态调整实际状态。
  • 注意事项 为了让您的边缘节点应用更稳定可靠的运行,IEF不会主动升级您的边缘节点上的EdgeCore,需要由您在业务影响最小的时间窗内进行节点升级,以减轻对您业务的影响。 处于维护周期中的版本升级,边缘节点上的应用业务不会中断,如果您有使用消息路由功能,可能会有短暂影响。 处于维护周期外的版本升级,可能会因为容器重启引起业务的短暂中断。 请勿在节点升级过程中变更节点配置,比如重启Docker、安装卸载GPU/NPU驱动、OS内核升级、变更网络配置等,这些操作会增大节点升级失败风险。
  • 终端设备上报实际状态到云端 终端设备上报实际状态到云端的过程如图2所示。 图2 设备上报状态 终端设备将实际状态(Actual State)实时上报给MQTT broker。 EventBus从MQTT broker收到订阅消息,消息内容包含终端设备的实际状态。 EventBus把终端设备实际状态发送给DeviceTwin,DeviceTwin在边缘节点存储终端设备实际状态。 DeviceTwin同步实际状态给WebSocket客户端EdgeHub。 EdgeHub发送消息给IEF。
  • 支持订阅的事件 当前支持订阅如下事件。 表1 支持订阅的事件 系统事件 Topic 资源类型 操作 实例创建 $hw/events/instance/+/created 应用实例(instance) created 实例更新 $hw/events/instance/+/updated 应用实例(instance) updated 实例删除 $hw/events/instance/+/deleted 应用实例(instance) deleted 应用删除 $hw/events/deployment/+/deleted 容器应用(deployment) deleted 应用创建 $hw/events/deployment/+/created 容器应用(deployment) created 应用更新 $hw/events/deployment/+/updated 容器应用(deployment) updated 节点上线 $hw/events/edgeNode/+/online 边缘节点(edgeNode) online 节点离线 $hw/events/edgeNode/+/offline 边缘节点(edgeNode) offline
  • 订阅后说明 创建系统订阅后,当有系统事件发生,在IEF控制台系统订阅列表中,会记录消息转发的次数。 图3 转发消息数 同时IEF会调用APIG中注册的API,请求消息体如下所示。请求消息体采用标准的CloudEvents格式,CloudEvents详细信息请参见这里。 {"data": {"event_type": "instance","operation": "created","timestamp": 134567677,"topic": "$hw/events/deployment/+/created","name": "xxxx","attributes": {"ID":"x"}}, "datacontenttype": "application/json","source": "sysevents","id": "xxxx","time": "2020-11-5 xxx"} data:系统事件的数据。 event_type:资源类型,String类型。 operation:资源的操作类型,String类型。 topic:消息发送的Topic,String类型。 timestamp:事件产生的时间戳,Uint64类型。 name:资源名称,String类型。 attributes:资源的属性,删除资源时消息中无此参数,Object类型。 datacontenttype:系统事件数据内容的格式,String类型。 source:系统事件的来源,String类型。 id:系统事件ID,String类型。 time:系统事件产生时间,String类型。 当前支持的资源类型、操作和Topic如表1所示。
  • Topic $hw/{project_id}/encryptdatas/{encryptdata_name}/properties/{properties_name}/plaintext 参数 类型 说明 project_id String 项目ID。获取方式请参见获取项目ID。 encryptdata_name String 加密数据集名称。 properties_name String 加密数据的“键名”。
  • 加密数据的使用 加密数据绑定到边缘节点后,在边缘节点上使用MQTT客户端就可以获取到加密数据。 请求时必须使用证书进行安全认证,认证方法请参见使用证书进行安全认证。 订阅获取加密数据。 Topic:$hw/{project_id}/encryptdatas/{encryptdata_name}/properties/{properties_name}/plaintext 发布请求加密数据。 Topic:$hw/{project_id}/encryptdatas/{encryptdata_name}/properties/{properties_name}/decrypt 请求发布后,1中就能收到解密后的明文数据。
  • 操作步骤 登录 CTS 管理控制台。 选择左侧导航栏的“事件列表”,进入事件列表页面。 事件记录了云资源的操作详情,设置筛选条件,单击“查询”。 当前事件列表支持四个维度的组合查询,详细信息如下: 事件类型、事件来源、资源类型和筛选类型。 在下拉框中选择查询条件。其中,“事件类型”选择“管理事件”,“事件来源”选择“IEF”。 图1 设置筛选条件 其中, 筛选类型选择“按资源ID”时,还需手动输入某个具体的资源ID,目前仅支持全字匹配模式的查询。 筛选类型选择“按资源名称”时,还需选择或手动输入某个具体的资源名称。 操作用户:在下拉框中选择某一具体的操作用户。 事件级别:可选项为“所有事件级别”、“Normal”、“Warning”、“Incident”,只可选择其中一项。 时间范围:可选项为“最近1小时”、“最近1天”、“最近1周”和“自定义时间段”,本示例选择“最近1周”。 在需要查看的事件左侧,单击图标展开该事件的详细信息。 图2 展开事件 在需要查看的事件右侧,单击“查看事件”,弹出一个窗口,显示了该操作事件结构的详细信息。 关于云审计事件结构的关键字段详解,请参见“事件结构”。
  • 示例 $hw/events/node/3fbb5b8d-32db-4271-a34f-a013e021b6ce/membership/get/result{ "event_id":"bc876bc-345d-4050-86a8-319a5b13cc10", "timestamp":1557317193524, "devices":[ { "id":"ab39361a-6fc0-4c94-b919-72b1e08ca690", "name":"IEF-device", "state":"unknown", "attributes":{ "address":{ "value":"longgang", "optional":true, "metadata":{ "type":"string" } } } } ] }
  • 约束与限制 同一节点上的NPU,只支持同一种切分规格。 暂不支持已纳管的节点,通过升级NPU插件到2.1.0版本的方式支持虚拟化切分。用户需要将边缘节点进行卸载重装,手动切分NPU后,再纳管至IEF。 NPU驱动需大于22.0版本,进入驱动所在路径(如“/usr/local/Ascend/driver”),执行cat version.info命令查看。 选择共享模式的情况下,需要在NPU卡上设置所有芯片的容器共享模式。 共享模式必须使用完整的卡,不支持虚拟化切分。 健康芯片数量为物理芯片数,如节点使用了切分或者共享模式,则展示的是切分后或者共享后的芯片数目。
  • 参数说明 IEF转发自定义Topic内容是透传,可以转发任意内容。 “{custom_topic}”支持通配符“#”和“+”,可以将多条符合通配规则的消息进行统一转发。 “#”是一个匹配主题中任意层次数的通配符,多层通配符可以表示大于等于0的层次。“+”是单层通配符,只匹配主题的一层。 对于符合通配规则的Topic消息进行最小范围匹配后进行路由消息转发。如消息Topic为123/aaa/567和123/bbb/567,可以配置通配转发规则123/+/567进行统一转发。
  • alarmId生成方法 alarmId可以不使用本方法生成,只要保证唯一就可以。 使用{projectId}_{产生告警的服务名}_{维度信息}_{指标名称}_{告警类型}_{规则信息}生成md5值。 其中: projectId:项目ID,获取方式请参见获取项目ID。 维度信息: 节点信息:{clusterId}_{namespace}_{ip} 容器信息:{clusterId}_{namespace}_{appName}_{podName}_{containerId} 应用信息:{clusterId}_{namespace}_{appName} 告警类型: 21:动态阈值告警 22:批量阈值告警 23:阈值告警 24:系统类告警 25:新增/删除探针 26:agent安装类告警 规则信息:阈值规则的告警使用阈值规则名称;业务自己触发的告警(没有规则)则填写NA。动态阈值的则填写policyId。
  • 示例 节点告警 { "alarmName": "测试##test", "alarmId": "73ccbccce05de74f9d3dda42f6ecfe20", "detailedInformation": "测试##test", "url": "", "source": "IEF", "cleared": false, "policyID": "", "perceivedSeverity": 4, "resourceId": { "namespace": "PAAS.NODE", "dimension": { "clusterId": "e277befa37a64ed1aa25b522e686bc28", "nameSpace": "default", "nodeIP": "192.168.0.164" } }, "neType": "Host", "eventType": 23} 应用告警 { "alarmName": "应用重启test##Application restart", "alarmId": "b09076ff565c59d4da0db0c9223781", "detailedInformation": "应用重启 test##Application restart test", "url": "", "source": "IEF", "cleared": false, "policyID": "", "perceivedSeverity": 3, "resourceId": { "namespace": "PAAS.CONTAINER", "dimension": { "containerName": "container-e991acd3-864c-4038-8a90-e042eebab496", "containerID": "70b385315c8ac507b3de7dfe1258932cea0b53a850b7d030ce7ed0a55c47877c", "podID": "0e9ce4fd-b732-11e9-8a30-fa163e9b3546", "podName": "hxkapp1-7898f5bd4b-2lj8z" } }, "neType": "Application", "eventType": 23}
  • 参数说明 参数 类型 说明 alarmName String 告警名称,需要支持中英文两个版本,格式为“中文##English”。 alarmId String 告警ID,需要保证为唯一值。可以参考alarmId生成方法。 detailedInformation String 告警描述,需要支持中英文两个版本,格式为“中文##English”。 url String 根因分析跳转入口,如果没有则填空。 source String 告警源,只能是由大小写字母组成的字符串。 cleared Boolean 清除告警标示。 true:表示上报的告警已经清除。 false:表示需要手动清除。 policyID String 告警的规则ID,阈值规则填写ruleId,没有则填写空。 objectInstance String 定位信息,如果没传此字段,则该字段默认取alarmId的值。 perceivedSeverity Integer 告警级别 1:紧急 2:重要 3:次要 4:提示 resourceId Object 告警信息,具体请参见表1。 neType String 产生告警的资源的类型 Application(应用) DB(数据库) Host(主机) eventType Integer 告警类型 21:动态阈值告警 22:批量阈值告警 23:阈值告警 24:系统类告警 25:新增/删除探针 26:agent安装类告警 27:配额超限类告警 probableCause String 可能原因 proposedRepairActions String 修复建议 表1 resourceId 参数 类型 说明 namespace String 资源类型,有如下几种指标 PAAS.CONTAINER表示容器指标 PAAS.NODE表示节点指标 dimension Object 维度信息,用于跟监控上报的节点应用信息关联起来。具体请参见表2。 目前涉及到告警主要是节点和应用两种类型,所以只需要关注节点和应用这两种维度。 应用维度可以细分为服务、实例、容器和进程,这四个维度可以选择一个或多个上报。 服务维度需要上报:clusterId、nameSpace和serviceID 实例维度需要上报:podID和podName 容器维度需要上报:containerID和containerName 进程维度需要上报:processID和processName 表2 Dimension 参数 类型 说明 clusterId String 项目ID,获取方式请参见获取项目ID。 nameSpace String 默认为default。 nodeIP String 节点IP。 serviceID String 服务ID。 容器应用为{projectId}_{hostid}_{appName}的md5值。 进程应用为{projectId}_{hostid}_{进程名}_{进程pid}的md5值。 processID定义方式:md5({projectId})_{hostid}_md5({进程名})_{进程pid}。 md5(projectId) 表示求projectId的md5值,md5({进程名})表示求进程名的md5值 这些维度信息需要与监控上报的维度信息一致,不一致会导致无法关联到对应的资源。 podID String 实例ID。 podName String 实例名称。 containerID String 容器ID。 containerName String 容器名称。 processID String 进程ID。 processName String 进程名称。 Application String 应用名称。
  • 示例 终端设备绑定到边缘节点时可收到如下消息。 $hw/events/node/{node_id}/membership/updated{ "event_id":"04a975ab-fd51-49be-85f5-5967e994f640", "timestamp":1557314742136, "added_devices":[ { "id":"ab39361a-6fc0-4c94-b919-72b1e08ca690", "name":"IEF-device", "state":"unknown", "attributes":{ "address":{ "value":"shenzhen", "optional":true, "metadata":{ "type":"string" } } }, "twin":{ "state":{ "expected":{ "value":"running", "metadata":{ "timestamp":1557314434570 } }, "optional":true, "metadata":{ "type":"string" } } } } ], "removed_devices":null }
共100000条
提示

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