• [热门活动] 【DevRun成长计划——Serverless专场学习笔记】
    完成实操截图实践一:10分钟开发我的个人主页实践二: OBS自动化文件解压实践三:定时拨测场景学习笔记Serverless是什么?- CNCF定义:—种新的云原生计算模型,无需服务器管理而构建和运行应用程序的架构。一个或多个功能的应用上传到平台后执行、扩展和计费.- 信通院定义:以应用为中心,无需关注基础设施的计算模式,FaaS不是其唯—形态。serverless是一整套能力的合集,越来越多的第三方服务演进为全托管的Serverless形态Serverless 函数计算的价值数据来源:IBM 2021调研报告- 36%成本- 34%性能- 33%弹性- 30%效率- 29%人力- 27%简易管理- 28%GTMServerless函数计算适用场景:Web类应用、loT、媒体处理类应用、AI处理应用Serverless典型场景:Web/App/小程序后端、BFF/SSR、事件触发、服务间快速集成、视频转码函数工作流、安全运维函数工作流
  • [其他] 函数工作流python依赖包管理第三方依赖包如何添加才能使用呢?
    函数工作流python依赖包管理第三方依赖包如何添加才能使用呢? 我上传依赖包 说报这个错误FSS.4012不知道哪个流程出错了
  • [热门活动] 【DevRun成长计划——Serverless专场学习笔记】
    完成实操截图实践一:10分钟开发我的个人主页实践二: OBS自动化文件解压实践三:定时拨测场景学习笔记:Serverless是什么?CNCF定义:—种新的云原生计算模型,无需服务器管理而构建和运行应用程序的架构。一个或多个功能的应用上传到平台后执行、扩展和计费信通院定义:以应用为中心,无需关注基础设施的计算模式,FaaS不是其唯—形态。serverless是一整套能力的合集,越来越多的第三方服务演进为全托管的Serverless形态Serverless函数计算适用场景Web类应用解放端侧开发,让端开发者更快、更灵活开发各种应用,无需关注后端服务- 小程序后端- web后端- 问答机器人- 前端BFFloT、媒体处理类应用以事件驱动的方式执行服务,按需供给,开发者无需关注业务波峰波谷,节省闲时成本,最终降低运维的成本- 实时图片处理- 实时数据流处理- IoT事件处理- 运维告警处理AI处理应用各行各业智能化深入带来更多的应用开发历景,通常需要集成各类服务快速上线- 视频直播- AI推理- 人脸识别- 车牌识别典型场景一: Web/App/小程序后端场景需求特点:业务变化快,上线周期短函数计算优势:无需管理服务器开发上线快典型场景二: BFF/SSR场景需求特点:BFF/SSR和业务强相关,通常由前端开发,但前端并不擅长服务器的部署、运维函数计算优势:无需管理服务器、前端可使用熟悉的技术栈开发典型场景三:事件触发场景需求特点:业务事件频次不高或波峰波谷明显函数计算优势:按需付费、毫秒级自动弹性典型场景四:服务间快速集成场景需求特点∶1、业务需要串联多个服务,被集成服务提供了API或 SDK2、业务创新需要方案能快速打通试错,并具有一定的扩展性函数计算优势∶多语言开发,事件驱动特性方便对接各类服务按需自动弹性即保证了扩展性又兼顾了成本典型场景五:视频转码函数工作流场景需求特点:多步骤弹性并发处理,步骤耗时长需要容错函数工作流优势:自动弹性满足大并发、状态维护,失败重试保证可靠典型场景六∶安全运维函数工作流场景需求特点:1.灵活编排2.自动化和人工处理相结合函数工作流优势∶编排更灵活,支持深度自定义逻辑通知+回调的方式支持人工介入流程FunctionGraph 2.0:基于华为元戎的新一代函数计算与编排服务,8大特性发布特性1:丰富的函数开发语言及触发方式让设计更灵活特性2∶可视化拖拽式函数流支持编排复杂业务场景特性3∶统一插件支持云上和云下的开发与调试特性4 : Http函数让WEB服务近乎0成本改造,享受Serverless优势能力特性5∶函数支持容器镜像,简化应用Serverless化特性6∶函数支持在运行时动态指定资源,灵活调度节省成本特性7∶百毫秒冷启动时延,单实例多并发,毫秒级弹性特性8 : 1ms粒度按量计费,节省开支Serverless架构优势秒级快速上线毫秒级弹性伸缩,天然高可用免运维函数代码即服务按实际使用毫秒级计费无需为闲置资源付费启动成本低
  • [热门活动] 【DevRun成长计划——Serverless专场学习笔记】
    本次学习实践,我学习了Serveless在华为云的基本操作。与此同时,我还进行了很多实践。具体说来,一共进行了三项实践:10分钟开发我的个人主页,这个项目是第一个项目,也是唯一使用nodejs的项目,可以使用serveless快速建站,十分方便快捷:第二个项目是OBS自动化文件解压,这个项目中我尝试了使用serveless自动解压obs中的文件,十分方便,而且不用担心性能。第三个项目是定时拨测场景,这个场景中我尝试了使用serveless对网站是否正常进行监控,当出现异常时及时通知我。
  • [技术干货] 华为FusionCompute详解——转载
     FusionCompute产品定位 FusionCompute是云操作系统软件,主要负责硬件资源的虚拟化,以及对虚拟资源、业务资源、用户资源的集中管理。它采用虚拟计算、虚拟存储、虚拟网络等技术,完成计算资源、存储资源、网络资源的虚拟化。同时通过统一的接口,对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性,协助运营商和企业构筑安全、绿色、节能的云数据中心能力。  云机房  云机房是指为云数据中心运营所提供的一系列基本配套设施和空间,主要包括供电系统、消防系统、布线系统、制冷系统等。 华为基于SAFE创新理念,从智能管理(Smart)、高可用性(Availability)、灵活扩展(Flexibility)、高效节能(Efficient)四个方面持续提升数据中心机房竞争力。 硬件基础设施层  硬件资源包括服务器、存储、网络、安全等全面的云计算基础物理设备,支持用户从中小规模到大规模的新建或扩容,可运行从入门级到企业级的各种企业应用。设备类型丰富,可为客户提供灵活的部署选择。 FusionStorage Block  FusionStorage Block是一种存储与计算高度融合的分布式存储软件,在通用服务器上部署该软件后,可以把所有服务器的本地硬盘组织成一个虚拟存储资源池,提供块存储功能。 FusionSphere虚拟化套件  FusionSphere虚拟化套件通过在服务器上部署虚拟化软件,将硬件资源虚拟化,从而使一台物理服务器可以承担多台服务器的工作。通过整合现有的工作负载并利用剩余的服务器以部署新的应用程序和解决方案,可以实现较高的整合率。 FusionCompute  FusionCompute是云操作系统软件,主要负责硬件资源的虚拟化,以及对虚拟资源、业务资源、用户资源的集中管理。它采用虚拟计算、虚拟存储、虚拟网络等技术,完成计算资源、存储资源、网络资源的虚拟化。同时通过统一的接口,对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性,协助运营商和企业构筑安全、绿色、节能的云数据中心能力。 eBackup  eBackup是虚拟化备份软件,配合FusionCompute快照功能和CBT(Changed Block Tracking)备份功能实现FusionSphere的虚拟机数据备份方案。 UltraVR  UltraVR是容灾业务管理软件,利用底层SAN存储系统提供的异步远程复制特性,提供虚拟机关键数据的数据保护和容灾恢复。 API  API(Application Programming Interface,应用程序接口),向上层应用提供接口 FusionAccess  桌面云,华为远程桌面软件 FusionCube 超融合一体机 OpenStack 开源云计算管理平台 FusionCompute产品架构  CNA:Compute Node Agent,CNA部署在需要虚拟化的服务器上。 VRM:Virtual Resource Management,VRM可以部署成VM或者部署在物理服务器上;VRM对外提供网页操作界面供管理维护人员。  FusionCompute软件逻辑组成  模块    功能 CNA    提供虚拟计算功能 管理计算节点上的虚拟机 管理计算节点上的计算、存储、网络资源 VRM    管理集群内的块存储资源 管理集群内的网络资源(IP/VLAN),为虚拟机分配IP地址 管理集群内虚拟机的生命周期以及虚拟机在计算节点上的分布和迁移 管理集群内资源的动态调整 通过对虚拟资源、用户数据的统一管理,对外提供弹性计算、存储、IP等服务 通过提供统一的操作维护管理接口,操作维护人员通过WebUI远程访问FusionCompute对整个系统进行操作维护,包含资源管理、资源监控、资源报表等。 FusionCompute产品功能 虚拟化计算 FusionCompute支持将x86服务器虚拟化为多台虚拟机,最终用户可以在这些虚拟机上安装各种软件,挂载磁盘,调整配置,调整网络,就像普通的x86服务器一样使用它。 对于最终用户,虚拟机比物理机的优势在于它可以很快速的发放,很方便的调整配置和组网。对于维护人员来讲,虚拟机复用了硬件,这样硬件更少,加上云平台的自动维护能力,维护成本显著降低。对于系统管理员,可以很直观的知道资源使用的总量及变化趋势,以便决策是否扩容。  将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,不再受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理。同时硬件辅助虚拟化技术提升虚拟化效率,增加虚拟机的安全性。  虚拟化计算中如cpu、内存、I/O虚拟化将会额外单独介绍  虚拟化存储 FusionCompute支持将SAN设备、计算节点本地存储以及FusionStorage提供的虚拟存储空间统一管理,以虚拟卷的形式分配给虚拟机使用。  存储设备的能力、接口协议等差异性很大,存储虚拟化技术可以将不同存储设备进行格式化,将各种存储资源转化为统一管理的数据存储资源,可以用来存储虚拟机磁盘、虚拟机配置信息、快照等信息。用户对存储的管理更加同质化。 虚拟机磁盘、快照等内存均以文件的形式存放在数据存储上,所有业务操作均可以转化成对文件的操作,操作更加直观、便捷。 基于存储虚拟化平台提供的众多存储业务,可以提高存储利用率,更好的可靠性、可维护性、可以带来更好的业务体验和用户价值。 华为提供基于主机的存储虚拟化功能,用户不需要再关注存储设备的类型和能力。存储虚拟化可以将存储设备进行抽象,以逻辑资源的方式呈现,统一提供全面的存储服务。可以在不同的存储形态,设备类型之间提供统一的功能。 对于最终用户,就像x86服务器使用本地硬盘一样的方式使用,可以格式化,安装文件系统,安装操作系统,读写。同时,虚拟化的存储还具备快照能力,可以调整大小,这是物理硬盘不能实现的。 对于管理员来说,虚拟存储卷并不一对一映射到某块具体的磁盘,而是收敛到几台SAN设备。由于SAN设备已经有了可靠性保障,所以更换硬盘的工作量大规模下降。同时,虚拟存储具备瘦分配,灵活调整,QoS可限制,可迁移等等比物理盘强的特性,在整体成本方面优势很明显。  虚拟化网络 FusionCompute具备支持分布式虚拟交换,可以向虚拟机提供独立的网络平面。像物理交换机一样,不同的网络平面间通过VLAN进行隔离。  分布式虚拟交换机  分布式交换机的功能类似于普通的物理交换机,每台主机都连接到分布式交换机中。分布式交换机的一端是与虚拟机相连的虚拟端口,另一端是与虚拟机所在主机上的物理以太网适配器相连的上行链路。通过它可以连接主机和虚拟机,实现系统网络互通。另外,分布式交换机在所有关联主机之间作为单个虚拟交换机使用。此功能可使虚拟机在跨主机进行迁移时确保其网络配置保持一致。 FusionCompute带来的价值 提高资源利用率 资源共享 分时共享  提高业务可靠性 故障或维护时可以迁移到其他节点,不影响虚拟机其他业务。 FusionCompute规划部署 注意事项 安装FusionCompute时,需要满足一定的要求,才能保证正确安装。  要求 CPU支持硬件虚拟化技术,如Intel的VT-x,并已在BIOS中开启CPU虚拟化功能 内存 > 8G 硬盘 > 70G(VRM最小需求140G) 建议使用1、2号硬盘组RAID 1,用于安装主机操作系统,以提高可靠性 注意事项 安装过程不允许修改本地PC或便携的IP地址 安装FusionCompute时,要求已关闭本地PC的防火墙; 文件夹路径中不能包含中文字符,完整路径长度不超过256位; 环境搭建过程,不要随意对主机进行重启操作。 网络规划  BMC平面 主机BMC网口所使用的平面。通过BMC平面可远程访问服务器的BMC系统。 管理平面 用于管理系统统一管理所有节点,以及节点间内部通信所使用的平面。使用管理平面的IP地址包括: 所有主机的管理IP地址,即主机管理网口使用的IP地址。 管理节点虚拟机的IP地址。 存储设备控制器的IP地址。 存储平面 主机与存储设备的存储单元互通所使用的平面。使用存储平面的IP地址包括:  所有主机的存储IP地址,即主机存储网口使用的IP地址。 存储设备的存储IP地址。 业务平面 用户虚拟机业务数据在网络中使用的平面。 安装流程 安装CNA主机   1. 通过PXE方式批量安装主机  2. 通过ISO挂载手动安装单台主机 安装VRM   1. 可以使用FusionCompute安装工具虚拟化部署VRM  2. 可以在物理主机上挂载ISO方式手动安装VRM,过程同ISO手动安主机  虚拟化部署VRM逻辑视图  VRM主备部署在不同的CNA上,部署后VRM不能迁移  物理部署VRM逻辑视图  VRM部署在不同的物理服务器上 原文链接:https://blog.csdn.net/qq_46254436/article/details/105810195 
  • [技术干货] FunctionGraph+OBS+FRS+IVS实现人证核身
    FunctionGraph+OBS+FRS+IVS实现人证核身目录场景设计方案架构图方案设计云服务介绍环境准备开发流程1.客户端开发——上传图片/视频到OBS2.FunctionGraph函数代码开发3.下载OBS对象+Base64编码4.FRS活体检测5.IVS人证核身6.SMN发布结果消息7.客户端开发——SMN之HTTP(S)终端接口开发8.FunctionGraph函数整合实现效果部署测试示例工程一、场景设计客户通过页面上传人物照片、视频到OBS并触发FunctionGraph函数,函数调用FRS人脸识别服务判断是否为真人,如果是真人继续调用IVS人证核身服务校验身份真实性,最后通过SMN将结果消息发布出去。方案架构图![方案架构图]二、方案设计创建FunctionGraph函数,并为该函数配置OBS触发器,上传图片或视频到OBS后触发FunctionGraph函数,函数下载OBS对象并调用FRS进行活体检测,活体检测通过后函数再调用IVS进行人证核身,最后函数通过SMN发布人证核身结果消息。云产品提供服务作用OBS对象操作实现上传/下载 图片/视频FunctionGraph配置OBS触发器实现OBS上传时触发函数FunctionGraph创建Java函数创建Java语言的函数FRS活体检测对图片或视频进行动作/静默活体检测IVS认证核身标准版实现对上传的人脸图片进行身份验证SMN发送HTTP(S)消息实现将结果发送到HTTP(S)终端三、云服务介绍华为云OBS: 对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,使用时无需考虑容量限制,并且提供多种存储类型供选择,满足客户各类业务场景诉求。产品页面华为云FunctionGraph:函数工作流(FunctionGraph)是一项基于事件驱动的函数托管计算服务。通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。产品页面华为云FRS:人脸识别服务(Face Recognition Service),能够在图像中快速检测人脸、分析人脸关键点信息、获取人脸属性、实现人脸的精确比对和检索。该服务可应用于身份验证、电子考勤、客流分析等场景。产品页面华为云IVS:人证核身服务(Identity Verification Solution)将用户本人与身份证信息关联起来,应用人脸识别与文字识别等技术,对接权威数据库,支持基于二要素(姓名、身份证)认证或三要素(人脸、姓名、身份证)认证,实现对身份真实性的精准核验。产品页面华为云SMN:消息通知服务(Simple Message Notification)为用户提供快速简便、稳定可靠、简化运维、高可扩展、安全可信的消息通知能力。最终用户可以通过HTTP、HTTPS、邮件、短信、触发函数执行、即时通讯工具等方式接收通知信息。华为云用户也可以在应用之间通过消息通知服务实现应用的功能集成,降低系统的复杂性。产品页面四、环境准备| 开发语言:Java| 开发环境:jdk1.8 maven3.6.3| 华为云环境:注册云账号,并完成实名认证五、开发流程| 分为客户端开发和FunctionGraph的Java函数开发。1、客户端开发--上传图片/视频到OBS华为云OBS服务控制台创建桶用来存储人脸图片或视频 如果涉及视频需要压缩上传,需要配置在线解压策略(具体桶中->数据处理>在线解压) 拿到OBS的maven依赖坐标,使用SDK开发上传OBS对象客户端,这里文件传到固定的文件夹下,并使用固定对象名命名,比如face。帮助文档上传对象方法代码参考public void uploadFile(MultipartFile multipartFile){ String endPoint = "https://终端节点"; String ak = "ak"; String sk = "sk"; //1.创建OBS客户端对象 ObsClient obsClient = new ObsClient(ak, sk, endPoint); //2.获取文件输入流 InputStream in = null; try { in = multipartFile.getInputStream(); //3.上传对象,后面根据该对象名下载对象,保持上传下载一致 PutObjectResult putObjectResult = obsClient.putObject("桶名", "对象名", in); System.out.println(putObjectResult); } catch (IOException e) { throw new RuntimeException(e); }finally { if (in!=null){ try { in.close(); } catch (IOException e) { throw new RuntimeException(e); } } } }2、FunctionGraph函数代码开发(1)FunctionGraph函数时序图(2)Java函数环境搭建创建maven项目,导入FunctionGraph提供的Runtime依赖 操作指导创建FunctionGraph Java函数,并配置OBS触发器。 3、下载OBS对象+Base64编码| 终端节点查询 | ak、sk获取从OBS下载对象并进行Base64编码,后面使用该Base64编码结果进行活体检测。导入OBS的Maven依赖。可以从SDK中心查询依赖坐标下载对象+Base64编码示例代码:public static String download() { //1.相关配置数据 String endPoint = "https://终端节点"; String ak = "ak"; String sk = "sk"; //2.创建ObsClient实例 final ObsClient obsClient = new ObsClient(ak, sk, endPoint); //对象名保持和上传对象名一致 ObsObject obsObject = obsClient.getObject("桶名", "对象名"); //3.读取对象内容 ByteArrayOutputStream bos = null; InputStream input = null; String imageStr = null; try { System.out.println("Object content:"); input = obsObject.getObjectContent(); byte[] b = new byte[1024]; bos = new ByteArrayOutputStream(); int len; while ((len = input.read(b)) != -1) { bos.write(b, 0, len); } //4.Base64编码 byte[] data = new byte[bos.size()]; data = bos.toByteArray(); imageStr = new String(Base64.encodeBase64(data)); System.out.println(imageStr); } catch (Exception e) { e.printStackTrace(); } finally { try { bos.close(); } catch (IOException e) { throw new RuntimeException(e); } try { input.close(); } catch (IOException e) { throw new RuntimeException(e); } } return imageStr; }4、FRS活体检测活体检测,判断图片或视频中的人物是否为真人活体。对Base64编码后的结果进行活体检测,图片使用静默活体检测,视频使用动作活体检测。以图片对应的静默活体检测为例,使用SDK开发。开通活体检测服务控制台 导入FRS的Maven依赖。可以从SDK中心查询依赖坐标静默活体检测示例代码://方法参数imageStr:人像图片Base64编码 public static DetectLiveFaceByBase64Response detectLive(String imageStr) { //1.配置基本信息 ICredential credential = new BasicCredentials().withAk("ak").withSk("sk"); FrsClient client = FrsClient.newBuilder() .withCredential(credential) .withRegion(FrsRegion.valueOf("区域")) // 选择服务所在区域,如华北-北京四: FrsRegion.valueOf("cn-north-4") .build(); //2.通过base64编码进行活体检测 DetectLiveFaceByBase64Request request = new DetectLiveFaceByBase64Request(); LiveDetectFaceBase64Req body = new LiveDetectFaceBase64Req(); body.withImageBase64(imageStr); request.withBody(body); DetectLiveFaceByBase64Response response = null; try { response = client.detectLiveFaceByBase64(request); System.out.println(response.toString()); } catch (Exception e) { e.printStackTrace(); } return response; }5、IVS人证核身这里用到IVS标准版(三要素)对图片中人物进行身份认证,这里用到的图片Base64是FRS活体检测返回的结果中的图片Base64编码。开通人证核身服务控制台 导入IVS的Maven依赖。可以从SDK中心查询依赖坐标人证核身标准版:使用身份证图片Base64、人像图片Base64进行认证,示例代码://方法参数imageStr:人像图片Base64编码 public static String ivsVerify(String imageStr) { //1.配置基本信息 ICredential credential = new BasicCredentials().withAk("ak").withSk("sk"); IvsClient client = IvsClient.newBuilder() .withCredential(credential) .withRegion(IvsRegion.valueOf("区域"))// 选择服务所在区域,如华北-北京四就是 FrsRegion.valueOf("cn-north-4") .build(); DetectStandardByIdCardImageRequest request = new DetectStandardByIdCardImageRequest(); IvsStandardByIdCardImageRequestBody body = new IvsStandardByIdCardImageRequestBody(); List listIvsStandardByIdCardImageRequestBodyDataReqData = new ArrayList<>(); listIvsStandardByIdCardImageRequestBodyDataReqData.add( new ReqDataByIdCardImage() .withIdcardImage1("身份证人像面图片Base64") .withFaceImage(imageStr) ); IvsStandardByIdCardImageRequestBodyData databody = new IvsStandardByIdCardImageRequestBodyData(); databody.withReqData(listIvsStandardByIdCardImageRequestBodyDataReqData); Meta metabody = new Meta(); //唯一标识此次请求的ID,用户自定义,不超过64位 metabody.withUuid(UUID.randomUUID().toString()); body.withData(databody); body.withMeta(metabody); request.withBody(body); String result = null; try { //2.调用服务 DetectStandardByIdCardImageResponse response = client.detectStandardByIdCardImage(request); System.out.println(response.toString()); //result取值:valid-成功;invalid-失败 result = response.getResult().getRespData().get(0).getVerificationResult(); } catch (Exception e) { e.printStackTrace(); } //3.返回人证核身结果 return result; }6、SMN发布结果消息这里用SMN向HTTP(S)终端发送消息,将人证核身结果发布到指定的URL地址。开通服务(创建主题+创建订阅)控制台 导入IVS的Maven依赖。可以从SDK中心查询依赖坐标SMN发布消息示例代码://方法请求参数msgContent:消息内容 public static void sendMsg(String msgContent){ String ak = "ak"; String sk = "sk"; //创建SMN客户端 ICredential credential = new BasicCredentials().withAk(ak).withSk(sk); SmnClient client = SmnClient.newBuilder() .withCredential(credential) .withRegion(区域)//如华北-北京四:SmnRegion.CN_NORTH_4 .build(); //创建请求 PublishMessageRequest publishMessageRequest = new PublishMessageRequest(); //创建请求体 PublishMessageRequestBody body = new PublishMessageRequestBody(); body.withMessage(msgContent); body.withSubject("主题"); publishMessageRequest.withTopicUrn("主题URN,可在控制台获取"); publishMessageRequest.withBody(body); //执行请求 PublishMessageResponse response = client.publishMessage(publishMessageRequest); System.out.println(response); }7、客户端开发--SMN之HTTP(S)终端接口开发HTTP(S)终端对应的URL接口需要根据type参数判断是确定订阅、消息或是取消订阅。接口示例代码:@PostMapping("/smn") //该接口完整地址就是创建时配置的终端地址 public void subscriptionConfirmation2(@RequestBody SubscriptionReq subscriptionReq,HttpServletRequest request,HttpServletResponse response){ System.out.println(subscriptionReq); try{ //1.获取参数,封装到MAP中 Map parameterMap = BeanUtils.describe(subscriptionReq); String signing_cert_url = parameterMap.get("signing_cert_url"); String signature = parameterMap.get("signature"); //2.检验消息签名 boolean flag = SmnUtil.isMessageValid(signing_cert_url, signature, parameterMap); //3.判断是订阅还是发布消息 String type = parameterMap.get("type"); if ("SubscriptionConfirmation".equals(type)){ //4.访问订阅确认页面 String map = restTemplate.getForObject(parameterMap.get("subscribe_url"), String.class); System.out.println(map); }else if ("Notification".equals(type)){ //5.消息,打印消息 System.out.println(parameterMap); }else{ //6.取消订阅 } }catch (Exception e){ e.printStackTrace(); } }接口接收请求参数实体类可参考:@Data //Lombok注解 public class SubscriptionReq { private String type; private String signature; private String subject; private String topic_urn; private String message_id; private String signature_version; private String message; private String subscribe_url; private String signing_cert_url; private String timestamp; }8、FunctionGraph函数整合在触发函数对应的方法中调用上面服务方法,实现认证核身认证流程。即在搭建的FunctionGraph Java函数项目中的TriggerTests.java中的apiTest方法中编写人证核身业务逻辑。TriggerTests代码:import java.util.HashMap; import java.util.Map; import com.huawei.services.runtime.Context; import com.huawei.services.runtime.entity.apig.APIGTriggerEvent; import com.huawei.services.runtime.entity.apig.APIGTriggerResponse; import com.huawei.utils.FrsUtils; import com.huawei.utils.IvsUtils; import com.huawei.utils.ObsUtils; import com.huawei.utils.SmnUtils; import com.huaweicloud.sdk.frs.v1.model.DetectLiveFaceByBase64Response; public class TriggerTests { //functionGraph函数触发方法 public APIGTriggerResponse apigTest(APIGTriggerEvent event, Context context) { //1.下载对象,并得到base64编码后结果 String imageBase64 = ObsUtils.download(); //2.活体检测 DetectLiveFaceByBase64Response response = FrsUtils.detectLive(imageBase64); Boolean alive = response.getResult().getAlive(); //3.人证核身 String msg = null; if (alive) { //活体检测成功 String result = IvsUtils.ivsVerify(response.getResult().getPicture()); //result取值:valid-成功;invalid-失败 msg = "valid".equals(result) ? "人证核身成功!是XXX本人。" : "人证核身失败!"; System.out.println(result+"--"+msg); //4.发送结果信息 SmnUtils.sendMsg(msg); } else { msg = "活体检测失败!"; System.out.println(msg); //发送结果消息 SmnUtils.sendMsg(msg); } Map headers = new HashMap(); headers.put("Content-Type", "application/json"); return new APIGTriggerResponse(200, headers, msg); } }六、实现效果1、部署测试将FunctionGraph Java函数对应项目打成jar包。参照帮助文档FunctionGraph创建Java函数,并配置OBS触发器(对应:开发流程->二、FunctionGraph函数代码开发->1、Java函数环境搭建)。FunctionGraph上传项目jar包到函数。通过开发的客户端上传图片或视频到OBS。在客户端刷新接收SMN消息的HTTP(S)终端接口,查看结果信息;查看FunctionGraph日志。 2、示例工程示例代码附件,待补充……
  • [公告] abcd这个那位ceshiceshiceshi
    ceshiceshiceshiceshiceshiceshiceshi
  • [热门活动] 未来云计算范式!快来Serverless函数速成班掌握前沿技能,Demo实操搞定小应用
    Serverless被誉为未来云计算范式各大厂商纷纷下场 人才缺口十分可观顺势而为掌握技能才是打工人的生存王道!所以,它来了!华为云DevRun-Serverless函数速成班活动已开启本次活动将通过开发者亲自动手实践场景化体验开发语音识别、数据处理、建站等助您快速熟悉和掌握Serverless核心技能和应用场景含金量多多、干货满满赶快动手提升自己吧>>>点我立即参与活动<<<一、此次速成班会做什么?Serverless对开发者有何价值?此次实战营会通过“场景化实操”的形式,通过学习Serverless和Function Graph赋能类课程、练习相关实践、开发Demo等,从应用开发场景出发、从基础到高阶实操,开发者动手实操体验Serverless开发全流程,侧重实操+案例开发,形成可视化的学习成果,可作为作品展示。Serverless是下一代默认的计算范式,将在未来5-10年内成为云的首要交付模式Serverless的价值:能够为应用屏蔽基础设施,提供自动化运行环境、随时按实际用量计费、免运维的能力随着云计算的发展,Serverless已被业界认定为下一代云计算范式,各厂商纷纷布局Serverless,开发者的关注度持续上升。在此背景下,针对华为云FunctionGraph函数计算服务,推出面向开发者的低中高阶课程,理论与实操结合,吸引开发者动手完成函数创建、测试、调用、debug调试,对FunctionGraph有进一步了解,完成函数应用的构建,场景化掌握核心技能。二、参加Serverless速成班需要准备什么?报名后,需首先实名认证(创建函数的必需条件哦)和领取云资源。(记得取消自动付费哦~)>>>实名认证并领取云资源,点击此处立即领取0元套餐(5人版)<<<<>>>实名认证并领取云资源,点击此处立即领取1.98元套餐(6人版)<<<<三、实战营内容本次Serverless函数速成班活动的学习和操作指导,都在这里哦~一站式学习和操作手册,加入即可立即学习~>>点我立即开始学习和实操<<四、Serverless速成班奖励1、总积分大于100分可获得华为云提供的个人专属结营证书(电子版)2、用户通过实战营获得学习积分,积分超过200者,可领取499元华为云考试代金券(限量200张,先到先得;账号需实名认证通过),自己只需支付1元即考取,原价500元的官方认证。活动须知 1、活动费用事宜(1)本次实战营中,请参与用户按照提示开通云资源,以免出现不必要的经济损失;(2)最终考试认证环节,考试费500元/人,对达到领取要求的用户,将发放499元/人的考试代金券,用户仅需支付1元即可参与华为云认证考试。2、开奖及奖品发放事宜(1)本次活动获奖名单届时将在本活动帖中公示,届时敬请关注相关信息。(2)您理解并同意,在适用的法律法规允许范围内,为确保奖品顺利发放,受限于奖品当时的库存状况等,华为有权对上述事项进行调整(如奖品以实际发放为准,价格不低于示例奖品)并向您提前告知。3、每位参加活动的用户理解并同意,活动主办方收集该等个人信息会转移给礼品发放的快递供应商公司负责具体执行礼品的邮递服务。收集的该等个人信息会自奖品寄出及发放结束后(为防止奖品遗失等突发情况)保留30个自然日用于邮寄快递服务、通过邮箱发放考券等,自该期限届满后,该等所有数据会被删除或者销毁,在主办方持有该个人数据期间,用户可以联系华为云按照法律规定履行数据主体的权利,包括但不限于撤销同意、请求删除、访问、查阅或者复制、更正或者补充、删除、知情权、决定权、您有权要求我们对您的个人信息处理规则进行解释说明。若需行使上述权利,联系方式请见《隐私政策声明》。4、为保证活动的公平公正,华为云有权对恶意刷活动资源(“恶意”是指为获取资源而异常注册账号等**活动公平性的行为),利用资源从事违法违规行为的用户收回奖励资格。本活动规则由华为云在法律规定范围内进行解释。华为云保留不时更新、修改或删除本活动规则的权利。上述更新、修改或删除于公布时即时生效,用户应当主动查阅本活动规则的最新内容;所有参加本活动的用户,均视为认可并自觉遵守《华为云用户协议》、《可接受的使用政策》、《隐私政策声明》、《华为云开发者生态隐私政策声明(补充华为云开发者学堂活动特别说明)》。相关服务等级协议(SLA),以及华为云服务网站规定的其他协议和政策(统称为“云服务协议”)的约束。云服务协议链接的网址:http://www.huaweicloud.com/declaration/sa_cua.html如果您不同意本活动规则和云服务协议的条款,请勿参加本活动。
  • [问题求助] cmake指定毕晟编译器,当make时候,出现F90-S-0038-Symbol, iargc, has not been explicitly declared
    F90-S-0038-符号,iargc,尚未明确声明
  • [存储] 发个帖测试一下会不会有积分
    发个帖测试一下会不会有积分
  • [热门活动] msame可以输出推理结果吗,如何看推理的top5准确率
    msame可以输出推理结果吗,如何看推理的top5准确率
  • [问题求助] 请问鲲鹏数学库的kml_blas的单线程不加锁版本和单线程加锁版本有什么区别呢?哪一个性能强一些?
    请问鲲鹏数学库的kml_blas的单线程不加锁版本和单线程加锁版本有什么区别呢?哪一个性能强一些?– 单线程不加锁版本:-L /usr/local/kml/lib/kblas/nolocking -lkblas – 单线程加锁版本:-L /usr/local/kml/lib/kblas/locking -lkblas 
  • [知识分享] 我用开天平台做了一个字符串检查API,hin 简单~~
    摘要:本文使用了工作台的API全生命周期管理和函数管理功能,编写字符串检查的函数,实现了API的快速创建和发布。本文分享自华为云社区《【我用开天平台做了一个字符串检查API》,作者:人类群星闪耀时。1 开天集成工作台概述根据华为官方文档的介绍,所谓的华为云开天集成工作台是基于华为在数字化转型中积累的丰富经验,为企业开发者提供基于元数据的可扩展的集成框架,降低了应用间集成工作量,并沉淀多种集成资产如连接器、业务模型、行业API等。它可以帮助客户快速建立SaaS应用之间的连接通道,打破信息孤岛与“烟囱式”架构,从而实现应用的快速构建和上线,持续提升用户体验。产品官方网址为 : cid:link_2 . 开天集成工作台总体架构示意图如下图所示:开天集成工作台使能伙伴的SaaS高效上云,与伙伴共建行业方案,共同沉淀和分享行业经验。开天集成工作台提供如下核心能力特征:(01)标准的数据模型管理:领域信息模型的采集、定义、管理能力,支撑在行业建立标准的领域信息模型库,行业内各厂家应用依托标准的领域信息模型进行互联互通。(02)灵活的API生命周期管理:支持合作伙伴的API设计、实施、测试、发布、运维、消费和运营,并可封装为便于编排的连接器和流。(03)可扩展的连接器管理:它是集成工作台流编排能力扩展的唯一方式,提供了丰富的预置连接器,用户还可以基于API自定义连接器。(04)可视化流管理:基于连接器,通过可视化的方式进行流式组合,实现集成流编排。扩展支持多种形式编排如流程编排,事件编排等。开天集成工作台产品优势如下:(01)丰富的行业经验:面向行业的业务模型库,拉通管理者、业务人员和IT人员。行业能力API化,覆盖工业、城市治理、教育、办公、Message、Map、移动应用等领域。SaaS应用间集成资产多样化,开箱即用,降低交付复杂度。(02)灵活易用地集成:基于标准业务模型的集成模式,每个应用只需集成一次,实现XYZ变成X+Y+Z。开放的连接框架,可灵活定义各种连接器和流,适配企业的业务逻辑。2 开天集成工作台用户和应用场景开天集成工作台是一个“开放、共生、智能、协同”的平台,它是搭建开发者、系统集成商、客户之间的“桥梁”和“纽带” 。具体来说,用户可以分为如下几种类型:(01)面向行业API开发者:一站式完成行业API设计、编排、测试、发布和消费,打造API商业经济。(02)面向行业应用开发者:以低代码或者零代码的方式,轻松构建面向行业的SaaS应用,加速业务创新。(03)面向系统集成商:和客户无缝对接,进行集成开发,交付项目和运维支持。同时,沉淀云上项目的集成资产,提升交付效率。(04)面向客户:企业集成资产的使用和管理,并联合生态资源如系统集成商等,完成企业数字平台建设。开天集成工作台的应用场景也非常丰富,主要可以分为三类应用场景:(01)行业能力开放场景,企业把自身能力以API服务的形式开放出来,通过API连接应用开发者、系统集成商等,服务更多的商业场景,快速形成产业链,从而让企业以最小代价满足客户碎片化且日益增长的需求。(02)使能行业应用创新场景,合作伙伴通过集成工作台提供的低代码/零代码的方式,可以方便使用各种资产如行业API、业务模型、连接器等,完成应用的开发和部署;它使能不同层级的开发者,极大增强企业应用的供给能力。(03)SaaS应用互联场景,企业应用建设随着业务发展逐步展开,势必要解决企业存量应用与新应用之间的协同,通过建立应用间的水管,让价值信息在企业内部及企业间流动。通过集成工作台,实现云上应用间、云上应用与企业内部应用间集成。具体可以用如下几张图来说明:3 字符串检查API快速构建先进入集成工作台的API生命周期管理的API分组,点击右上角新建分组,输入名称,描述。创建分组完成之后,点击API管理,进入我们刚才新建的分组下的API管理页面。进入API管理页面之后,我们可以先在右上角新建API,进入API创建页面。输入各项信息,按自己需要来。这里的认证模式可以按照自己需求来,这里为了简便选择了无认证(并不推荐),.之后点击下一步,自定义访问API的路径,以及请求方法,是否支持跨域,最底部的参数定义也非常重要,根据需要选择参数位置,名称,类型,可选项等。定义完参数之后如下图类似。点击下一步,定义后端服务,这里有三种选项,一种是后端服务也就是API接口,一种是在华为云定义的函数流图,一种是mock(本人并不太了解),这里我使用了华为云的函数流图。可以看到这里需要选择函数,但我们此时还没有函数可以选择,所以这里需要先创建函数。点击添加选项的弹出页的左上角创建函数,进入到函数创建页面。这里我们选择相关信息,选择事件函数,这里暂时使用不到委托,所以选择不使用任何委托,以及python3.x的环境运行时。当然这里我们可以看到按用量收费的提示,根据华为云的规则,在月请求次数在百万以上在进行收费,所以这里只是我们个人开发尝鲜使用还是不需要担心收费问题的。创建之后进入函数管理页面,在下方我们可以进行函数的编写,可以写上一个简单的字符串检查的函数。# -- coding:utf-8 --import jsonfrom collections import Counter#自定义函数def is_anagram(s1, s2):return Counter(s1) == Counter(s2)def handler (event, context):query=event.get(“queryStringParameters”)s1 = str(query[“word1”])s2 = str(query[“word2”])res = ‘%s and %s is an anagram of %s’ % (s1, s2, is_anagram(s1, s2))return {“statusCode”: 200,“isBase64Encoded”: False,“body”: res,“headers”: {“Content-Type”: “application/json”}}在这个handler这个预定义的函数中,以及它的两个定义形参,其中event是表示请求的各项信息,如body,headers等。(context暂时了解不多)。而至于其中的 queryStringParameters 这个键名,是根据华为云的文档中找到的,这个地方也是琢磨了许久,之前一直拿不到之前定义的query中的数据。可参看这里之后点击,设置,选择触发器,新建触发器。根据需要定义,只不过为了简便依旧选择了无认证。创建完成之后,可以得到一个调用url 的地址。复制该url,在浏览器中测试。得到结果。和我们定义的预料结果一致。此时函数工作流创建完成,我们回到之前的API创建页面。在urn选择页我们选择刚刚定义的函数流。并且在底部定义前后端函数映射。点击下一步,我们定义API相应成功还是失败的示例。到这里,API就创建完成了,我们可以直接点击发布API,并进入API的管理页面,可以查看到API的url,同理,我们可以在浏览器中测试使用。结果依旧没问题。
  • [高校开发者专区] nice
    通过这次HCSD集训营活动,我了解到DevOps这种开发模式能够通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。DevStar服务的“智 能OCR图像文字识别”模板站式生成应用代码井部署到函数工作流FunctionGraph,实现识别指定图片中的文字信息并显示在页面上,极大方便了我们地工作。VSS 键自动化扫描软件 包/固件,能够快速排查其中的开源软件, 安全配置等风险,使产品安全现状清晰明了。华为云DevCloud整个实验流程很顺利,在本次实验中使用了弹性云服务器,多种购买方式,多种计费方式适应了不同目标人群。在平台中添加服务器检查及代码检查功能十分便利,部署和构建时具有灵活的可视化操作。流水线的构建大大减少修改代码所需成本,节约人力与时间。通过本次实验,我对服务器建立,维护有了更深的了解。
  • [问题求助] haw-回收站发帖1111
    haw-回收站发帖1111haw-回收站发帖1111haw-回收站发帖1111