云服务器内容精选

  • IEF权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 IEF部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京四)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问IEF时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。具有Tenant Administrator系统角色的用户可以操作IEF所有资源。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。多数细粒度策略以API接口为粒度进行权限拆分。 如表1所示,包括了IEF的所有系统权限。 表1 IEF系统权限 系统角色/策略名称 描述 类别 依赖关系 IEF FullAccess IEF管理员权限,拥有该权限的用户可以操作并使用IEF的基本资源。注意:如需操作IEF所有资源,请配置Tenant Administrator系统角色。 系统策略 无 IEF ReadOnlyAccess IEF只读权限,拥有该权限的用户仅能查看IEF资源。 系统策略 无 表2列出了IEF常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表2 常用操作与系统权限的关系 操作 IEF FullAccess IEF ReadOnlyAccess Tenant Administrator 创建/删除/修改服务实例 √ x √ 查看服务实例 √ √ √ 切换实例 √ √ √ 创建/删除/修改边缘节点 √ x √ 查看边缘节点 √ √ √ 创建/删除/修改边缘节点组 √ x √ 查看边缘节点组 √ √ √ 创建/删除/修改边缘容器应用 √ x √ 查看边缘容器应用 √ √ √ 创建/删除/修改设备 √ x √ 查看设备 √ √ √ 创建/删除/修改应用部署 √ x √ 查看应用部署 √ √ √ 创建/删除/修改应用模板 √ x √ 查看应用模板 √ √ √ 创建/删除/修改节点注册作业 √ x √ 查看节点注册作业 √ √ √ 创建/删除/修改消息端点 √ x √ 查看消息端点 √ √ √ 创建/删除/修改消息路由 √ x √ 查看消息路由 √ √ √ 创建/删除/修改批量作业 √ x √ 查看批量作业 √ √ √ 创建/删除/修改配置项 √ x √ 查看配置项 √ √ √ 创建/删除/修改密钥 √ x √ 查看密钥 √ √ √ 创建/删除/修改加密数据 √ x √ 查看加密数据 √ √ √ 创建/删除/修改系统订阅 √ x √ 查看系统订阅 √ √ √ 创建/删除/修改插件 √ x √ 查看插件 √ √ √
  • 为什么选择智能边缘平台 云计算是集中化的,离终端设备(如摄像头、传感器等)较远,对于实时性要求高的计算需求,把计算放在云上会引起网络延时变长、网络拥塞、服务质量下降等问题。而终端设备通常计算能力不足,无法与云端相比。在此情况下,边缘计算顺应而生,通过在靠近终端设备的地方建立边缘节点,将云端计算能力延伸到靠近终端设备的边缘节点,从而解决上述问题。 智能边缘平台(Intelligent EdgeFabric)通过纳管您的边缘节点,提供将云上应用延伸到边缘的能力,联动边缘和云端的数据,满足客户对边缘计算资源的远程管控、数据处理、分析决策、智能化的诉求,同时,在云端提供统一的边缘节点/应用监控、日志采集等运维能力,为企业提供边、云协同的一体化边缘计算解决方案。
  • 验证作业运行效果 登录任一节点(该节点需与边缘节点网络互通),安装mosquitto软件。 mosquitto软件的下载请参见https://mosquitto.org/download/。 执行如下命令订阅数据。 mosquitto_sub -h 127.0.0.1 -t abcd abcd为作业中定义的topic名称。 打开一个新的窗口,执行如下命令发布数据。 mosquitto_pub -h 127.0.0.1 -t abcd -m '{"student":{"score":90,"name":"1bc2"}}' abcd为作业中定义的topic名称。 数据发布后,在2中订阅就能收到对应的数据。
  • 安全接入 实践 描述 通过专线或VPN连接IEF 线下边缘节点无法通过公网访问IEF时,可以选择通过云专线(DC)或VPN连接华为云VPC,然后通过VPC终端节点在VPC提供私密安全的通道连接IEF,从而使得线下边缘节点在无法访问公网时连接IEF。 使用开源C语言库连接MQTT Broker MQTT是一种发布/订阅模式的消息协议,能够在硬件性能低下的远程设备以及网络状况糟糕的情况下工作。 本最佳实践介绍一种开源的C语言库Eclipse Paho C Client Library连接使用IEF的内置MQTT Broker。
  • 边云协同 实践 描述 智能园区人脸检测 通常园区视频功能主要集中在存储和查看,视频分析和态势感知能力较弱。通过使用智能边缘平台与视频分析服务(VAS),提升视频分析和感知能力,实现智慧园区人脸识别检测功能。本最佳实践提供了全面的智能园区人脸检测搭建教程,包括环境准备、IEF服务配置和下发人脸检测算法。 工业IoT边缘实时流分析 终端设备可以产生大量的数据,为了减少数据上云的数据量或提高数据处理实时性,有时需要在靠近数据产生的地方对其进行分析处理。智能边缘平台可以和数据湖探索服务(DLI)结合,通过在边缘节点上部署系统提供的流计算应用,将实时流计算能力从云端延伸到边缘。然后通过数据湖探索服务编辑流处理作业并下发到边缘执行,可以帮助您在边缘快速实现对流数据的实时、快速、准确地分析处理。
  • 整体方案 图1 架构图 上图中方案构成的系统完成了如下能力: 通过IEF构建的数据通道对边缘侧数据集成组件的生命周期进行管理。 通过IEF的配置通道对边缘侧数据集成规则进行配置。该规则为可处理流数据的SQL语句。 通过IEF将边缘侧获取到的数据转入相应的云服务或用户自己部署在云端的应用中。 边缘侧的Kuiper Container负责对接边缘侧其他系统获取数据。 边缘侧Kuiper的数据处理函数和数据源为插件式,可以由社区、ISV或华为等开发并预置。该插件也可以由IEF在云端进行管理进行插拔。 该方案由如下几个角色构成,在实际项目中可能其中的某些角色是合并为一个实体的: 华为云IEF 提供IEF服务,提供整合了Kuiper的边缘、边云数据集成系统。 EMQ 提供对边缘侧数据集成组件Kuiper的商业支持。 插件开发者 根据业务需求在Kuiper上开发对应的source和数据处理function。 业务开发者 使用IEF提供的整合式数据集成平台,配置边缘侧数据处理逻辑,配置数据到云端服务的转发规则,在云端部署应用对边缘侧数据进行消费处理。
  • 请求示例 创建一个应用模板,应用图标存储地址为空,添加应用模板标签,key为“ief-application-type”,value为“test”。 { "app" : { "name" : "ief-application-test", "alias" : "test", "description" : "This is an application test", "icon_url" : null, "tags" : [ { "key" : "ief-application-type", "value" : "test" } ] } }
  • 响应示例 状态码: 201 ok { "app" : { "name" : "test-app-1", "icon_url" : null, "created_at" : "2018-05-26T08:41:33", "visibility" : null, "alias" : null, "project_id" : "{project_id}", "id" : "6c2c5f97-5c1d-408e-a0ee-c35c287afefe", "description" : "test", "app_versions" : [ ] } }
  • 请求示例 更新应用部署,应用部署副本数为1,应用实例启用主机网络,重启策略为“always”。 { "deployment" : { "replicas" : 1, "template" : { "configs" : { "host_network" : true, "host_pid" : true, "migration" : true, "restart_policy" : "Always", "toleration_seconds" : 300 }, "containers" : [ { "name" : "container-0", "image_url" : "swr.cn-north-1.myhuaweicloud.com/ief-test/nginx:0705", "args" : [ "-c", "sleep 1000" ], "command" : [ "/bin/bash" ], "resources" : { "limits" : { "cpu" : "0.25", "memory" : "500", "gpu" : "500" }, "requests" : { "cpu" : "0.25", "memory" : "500", "gpu" : "500" } }, "envs" : [ { "name" : "CERT_PATH", "value" : "/opt/cert" } ], "ports" : [ { "container_port" : 80, "host_port" : 80 } ], "privileged" : true, "readiness_probe" : { "http_get" : { "path" : "/", "port" : 80, "scheme" : "HTTP" }, "initial_delay_seconds" : 10, "timeout_seconds" : 10 }, "liveness_probe" : { "http_get" : { "path" : "/", "port" : 80, "scheme" : "HTTP" }, "initial_delay_seconds" : 10, "timeout_seconds" : 10 }, "version" : "1.0" } ] } }, "description" : "this is a test app" }
  • 响应示例 状态码: 200 ok { "id" : "3e64d98a-37c5-43a6-9bfe-052b9083e362", "name" : "app-test", "replicas" : 1, "ready_replicas" : 1, "description" : "this is a test app", "group_id" : "", "node_ids" : [ "29d20c18-c20c-4a45-a087-42c766fc5d97" ], "tags" : [ { "key" : "app", "value" : "test" } ], "api_version" : "v3", "source" : "userdefine", "project_id" : "bcd83056c918480f8f190844bd425b23", "created_at" : "2019-10-10T02:21:38.489Z", "updated_at" : "2019-10-10T02:21:38.489Z", "template" : { "configs" : { "host_network" : true, "host_pid" : true, "migration" : true, "restart_policy" : "Always", "toleration_seconds" : 300 }, "init_containers" : [ ], "containers" : [ { "name" : "container-0", "image_url" : "swr.cn-north-1.myhuaweicloud.com/ief-test/nginx:0705", "npu_type" : "", "args" : [ "-c", "sleep 1000" ], "command" : [ "/bin/bash" ], "resources" : { "limits" : { "cpu" : "0.25", "memory" : "500", "gpu" : "500" }, "requests" : { "cpu" : "0.25", "memory" : "500", "gpu" : "500" } }, "envs" : [ { "name" : "CERT_PATH", "value" : "/opt/cert" } ], "ports" : [ { "container_port" : 80, "host_port" : 80 } ], "privileged" : true, "readiness_probe" : { "http_get" : { "path" : "/", "port" : 80, "scheme" : "HTTP" }, "initial_delay_seconds" : 10, "timeout_seconds" : 10 }, "liveness_probe" : { "http_get" : { "path" : "/", "port" : 80, "scheme" : "HTTP" }, "initial_delay_seconds" : 10, "timeout_seconds" : 10 }, "version" : "1.0" } ] } } 状态码: 400 error { "error_code" : "IEF.100001", "error_msg" : "PROJECT_ID not found" } 状态码: 500 error { "error_code" : "IEF.100158", "error_msg" : "Fail to extract gpu infomation" }
  • 请求示例 创建部署,应用部署到指定节点,容器网络为主机网络。 { "name" : "app", "description" : "this is a test app", "node_ids" : [ "9ebd8efb-9fdd-44a1-abda-9cdbc287a867" ], "tags" : [ { "key" : "app", "value" : "test" } ], "deployment" : { "replicas" : 1, "template" : { "configs" : { "host_network" : true, "host_pid" : true, "restart_policy" : "Always", "toleration_seconds" : 300 }, "containers" : [ { "name" : "container-0", "image_url" : "nginx:alpine", "resources" : { "limits" : { "cpu" : "0.25", "memory" : "500" }, "requests" : { "cpu" : "0.25", "memory" : "500" } } } ] } } }
  • 响应示例 状态码: 201 ok { "created_at" : "2020-09-23 02:38:17.894471458 +0000 UTC", "replicas" : 1, "ready_replicas" : 0, "description" : "this is a test app", "group_id" : "", "node_ids" : [ "9ebd8efb-9fdd-44a1-abda-9cdbc287a867" ], "id" : "66a7fe7e-699a-41b2-9119-f9468a5ed78e", "name" : "app", "source" : "", "template" : { "configs" : { "host_network" : true, "host_pid" : true, "restart_policy" : "Always", "migration" : false, "toleration_seconds" : 300 }, "init_containers" : [ ], "containers" : [ { "name" : "container-0", "image_url" : "nginx:alpine", "npu_type" : "", "resources" : { "limits" : { "cpu" : "0.25", "memory" : "500" }, "requests" : { "cpu" : "0.25", "memory" : "500" } }, "privileged" : false, "version" : "" } ] }, "state" : "", "project_id" : "05e1aef9040010e22fccc009adecb056", "updated_at" : "2020-09-23 02:38:17.894471458 +0000 UTC", "api_version" : "v3", "source_id" : "" } 状态码: 400 error { "error_code" : "IEF.100001", "error_msg" : "PROJECT_ID not found" } 状态码: 500 error { "error_code" : "IEF.100158", "error_msg" : "Fail to extract gpu infomation" }
  • 响应参数 状态码: 201 表6 响应Body参数 参数 参数类型 描述 encrypt_data EncryptData object 加密数据信息 表7 EncryptData 参数 参数类型 描述 id String 加密数据ID name String 加密数据名称 description String 加密数据描述 config Array of EncryptDataItem objects 加密数据项配置 project_id String 项目ID ief_instance_id String 铂金版实例ID,专业版实例为default domain_id String 租户账户ID created_time Long 加密数据创建时间 updated_time Long 加密数据更新时间 表8 EncryptDataItem 参数 参数类型 描述 name String 加密数据项键名,小写英文字母、数字、中划线,以小写字母或数字开头,最大长度为32个字符,不能为空 value String 加密数据项键值 is_encrypted Boolean 加密数据项键值是否已加密,默认为true
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json” X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 ief-instance-id 否 String 铂金版实例ID,专业版实例为空值 表3 请求Body参数 参数 是否必选 参数类型 描述 encrypt_data 是 EncryptDataIn object 加密数据信息 表4 EncryptDataIn 参数 是否必选 参数类型 描述 name 是 String 加密数据名称,小写英文字母、数字、中划线,以小写字母或数字开头,最大长度为64个字符,不能为空 description 否 String 加密数据描述 config 是 Array of EncryptDataItem objects 加密数据项配置 表5 EncryptDataItem 参数 是否必选 参数类型 描述 name 是 String 加密数据项键名,小写英文字母、数字、中划线,以小写字母或数字开头,最大长度为32个字符,不能为空 value 是 String 加密数据项键值 is_encrypted 否 Boolean 加密数据项键值是否已加密,默认为true
  • 请求示例 新增加密数据,加密数据键名为“test”,键值为“test”,键值不加密。 { "encrypt_data" : { "name" : "test-demo", "description" : "example", "config" : [ { "name" : "test", "value" : "test", "is_encrypted" : false } ] } }