-
体验通过DevStar服务的“人脸特征检测应用开发”模板自动生成人脸特征检测应用代码,一站式托管到代码仓,以及作为云函数发布到函数工作流(FunctionGraph)后,快速体验由AI自动检测所上传图片中的人脸特征信息。您将学到什么您将学会如何通过DevStar实现一站式快速开发基于Serverless人脸特征检测应用,并基于华为云EI产品开放能力扩展功能,体验云上开发的乐趣。您需要什么硬件要求PC电脑软件要求Chrome浏览器需要的知识点熟悉常规电脑操作常识具备基本的软件开发能力 环境准备注册华为云账号、实名认证如果您已拥有华为账号且已通过实名认证,可直接体验。若您还没有通过实名认证的账号,请注册华为账号,然后完成实名认证(推荐使用“扫码认证”方式,即时完成)。参考如何实名认证和如何扫码认证。创建应用使用Chrome浏览器,访问DevStar 人脸特征检测应用开发 模板,点击“开发应用”按钮,基于该模板快速开发应用。若您是首次使用该模板开发应用,需要授权DevStar访问该模板涉及的华为云服务。若之前已完成过授权,可忽略此步骤。点击“同意授权”按钮进行授权,待完成授权后,点击“继续创建应用”按钮新建应用。在应用创建页面根据页面提示完成项目、应用名信息输入注:如果没有任何DevCloud项目,可点击“创建项目”新建一个项目注:在创建项目过程中如提示“该企业租户服务处于关闭状态 ”,请点击“立即开通”。在DevCloud服务购买页面,选择基础版进行购买操作(基础版5人及以下免费)。开通后,继续完成项目创建。注:创建完项目后,点击所属项目选项列表旁的“刷新”图标,可显示新创建的项目,选中并完成页面其它信息输入,点击”立即创建”按钮,进入应用详情界面等待应用使用的代码仓等资源创建完成(约20s),点击左侧的应用部署菜单,查看依赖云服务的状态。若云服务未开通,则点击“去开通”按钮完成服务开通。注意:人脸检测服务API按需付费模式每月前2000次调用免费,若您使用次数超过免费次数,将会产生费用,详情可点击“参考价格”查看,如调用次数不超出免费额度,可忽略此条。函数工作流FunctionGraph按照实际使用量付费,每月调用超100万次或计量时间超过400,000 GB-秒,将会产生费用,详情可点击“参考价格”查看。如调用次数不超出免费额度,可忽略此条。开通完成后点击对应服务的刷新按钮,查看服务开通状态。依赖的云服务全部完成开通后,点击“部署”按钮,进行应用部署待部署完成后,点击“看看”链接访问部署到函数工作流的云函数。点击“上传图片”,选择您需要进行人脸特征检测的图片,然后点击“提交”进行检测体验。 进阶体验-添加对发型,胡须等识别项的检测9.在应用详情界面点击左侧菜单栏的“在线开发”按钮进入在线开发界面10.您可选择”免费体验 CloudIDE 打开”,如果您购买了CloudIDE永久实例也可选择使用。注意:CloudIDE实例首次启动耗时约30s,请您等待界面加载完成,期间请勿切换页面,否则会终止加载。11.代码中使用的是人脸识别服务的人脸检测接口DetectFaceByFile,attributes入参值设置为“1,2,4,6”,见svelte文件的第45行代码。12.前往API Explorer查看该人脸识别接口中attributes的取值含义13.(可选)在API Explorer中设置人脸检测DetectFaceByFile接口的attributes值为“1,2,4,6,7,8”进行调试,查看调用效果14.根据接口文档资料,在CloudIDE修改DetectFaceByFile接口的attributes参数值(如改为“1,2,4,6,7,8”),将代码提交到仓库(注意:CloudIDE免费实例30分钟无使用则会被自动回收,未提交代码无法找回,请及时提交保存)注:在CloudIDE中点击Terminal菜单选择New Terminal,在命令行使用git提交代码到代码仓,参考以下命令:git add .git commit -m "modify attributes"git push origin master 使用以下命令查看代码提交历史,确认提交成功:git log 15.回到DevStar任务页(DevSar控制台-“我的应用”点击打开刚刚建立的任务)在左侧菜单栏切换到“应用部署”页面,点击“部署”按钮,选择“创建新的软件包”,点击“确定”重新部署代码。注意:此处必须选择创建新的软件包,否则修改后的代码将不生效。16.待部署完成后,点击“看看”体验修改后的效果。 恭喜您已完成体验,您还可以了解和体验其它的DevStar模板。
-
请问在FunctionGraph中怎么使用psycopg2类库?
-
在Sandbox中函数如何访问Redis?是不是不能访问本地启动的Redis服务?
-
【重要公告】《开发者最佳实践挑战营》第八期活动已结束打卡名单及邀请名单已公示见:FAQ帖>>>注:统计截止2020年12月31日24:00前打卡数据为保证您顺利领取活动奖品,请全通关和获得邀请TOP奖的伙伴提前填写下方奖品收货信息链接。填写截止时间为1月8日,如您没有填写,视为放弃奖励填写地址请戳我>>欢迎参加华为云“开发者最佳实践挑战营”第八期这是本次挑战营的第2关,坚持闯关成功有机会获12900码豆/机械键盘/背包等精美好礼!本期活动截止12月31日。注意:参与闯关前,请确保已报名加入活动群并领取实践资源,如未入群请添加小助手微信(hwpaas01),回复“最佳实践”进入学习交流群!点击这里了解活动详情>> | 点击这里查看活动FAQ>>为避免无法发放码豆,请从未登录过会员中心的用户需提前登陆下DevCloud会员中心本手册基于函数工作流服务实践所编写,用于指导您使用函数工作流服务实现为图片打水印的功能。什么是函数工作流?函数工作流(FunctionGraph)是华为云提供的一款无服务器(Serverless)计算服务,无服务器计算是一种托管服务,服务提供商会实时为用户分配充足的资源,而不需要预留专用的服务器或容量,真正按实际使用付费。华为无服务器计算包含函数和工作流两个功能模块,分别实现函数计算和函数编排的功能。 (1)实践资源说明:① 函数工作流 FunctionGraph:函数前100万次/月调用免费。点击了解价格详情>>② 对象存储服务 OBS:标准存储价格¥0.099/GB/月起,实践完后请及时删除存储文件。点击了解价格详情>>提示:本次实践建议选择“华北-北京四”区域;实践函数工作流+OBS总费用预计:0元≤实践费用<1元。(2)最佳实践指南:点击查看实践指南>> (3)视频演示:点击查看实践视频演示>> 提示:本次如选择“华北-北京四”,需在函数代码中,修改OBS的地址,详情见→FAQ第13条。任务一:创建函数,并将函数详情页“代码”截图,截图需包含右上角华为云账号名,并按回帖格式要求在本帖中回帖;任务二:根据实践指南完成实践操作(可查看实践视频演示),将函数日志截图,将打完水印的图片截图,并按回帖格式要求在本帖中回帖;注:已参加过上一期在本帖已闯关完成打卡的用户参与第八期通本关将不在发放通关奖励1.【通关、参与奖励&规则】点击这里填写报名登记表,完成提交可获100码豆(已提交的可忽略)① 参与奖励:每关完成创建实例可获100码豆,共8关最高可获得800码豆;② 通关奖励:通过2关赠送:2000码豆(可选关)通过4关赠送:4000码豆(可选关)通过6关赠送:6000码豆(可选关)通过8关赠送:8000码豆(全通关)取通关最高数发放码豆,全通关可额外获得旅行本(套装)1本(限量100本取最先全通关者发放)和“开发者最佳实践挑战达人”荣誉证书;全通关用户点击填写问卷,以便证书发放;2.【邀请奖励】:每邀请1位好友并成功完成1关或多关实践并打卡,可额外获得1000码豆(最高可获得3000码豆);3.【邀请TOP榜奖励】:邀请好友并完成1关或多关实践并打卡,邀请榜前3可获得机械键盘(雷柏)1个,邀请榜4-10名可获得华为云定制背包1个(如有并列取最先邀请完成打卡者)4.【分享奖励】:点击这里进入分享活动(最高可获1000码豆)>>>5.【邀请有礼】:点击这里进入邀请好友报名活动瓜分30万码豆,(最高可获得66666码豆)>>>活动结束后5个工作日内公示通关名单,15个工作日内发放码豆奖励; 码豆有什么用?码豆为虚拟货币可用于在华为云码豆会员中心-兑换商城中进行实物/虚拟礼品的兑换(礼品会不定期更换)兑换礼品点击查看:华为云专属码豆商城>>> 请务必按照以下格式要求进行回帖,否则无法计算奖励:1、华为云账号:xxx(即右上角的字母数字组合ID)2、邀请人华为云账号:xxx(即右上角的字母数字组合ID,如无就不填)3、实践感想:(如对课程内容、产品体验的建议或感想等)4、体验任务截图:(打卡样例图)注:华为云账号请勿填错,如填错码豆无法发放到账。实践截图:至少包含(a)函数代码截图、(b)上传图片触发函数后,函数指标截图(c)日志截图、(d)打了水印的图片截图,共 4 张截图。例1-函数详情页“代码”截图:例2-上传图片触发函数后,查看函数指标并截图:例3-上传图片触发函数后,查看函数日志并截图:例4-OBS中下载打完水印的图片,并截图: 【快速传送门】第1关任务:基于API网关的电话号码归属地查询第2关任务:使用函数工作流服务为图片打水印第3关任务:使用Redis实现排行榜功能第4关任务:使用DMS Kafka优化消费者poll第5关任务:使用CPTS进行电商网站性能测试第6关任务:基于ServiceStage的天气预报应用部署第7关任务:使用CloudIDE在云端环境开发AI交付实操第8关任务:使用ModelArts实现零代码美食分类模型开发>>点击进入:开发者最佳实践挑战营第八期活动页>>点击进入:活动FAQ帖>>点击进入:邀请有礼,瓜分30万码豆,最高可获66666码豆!>>点击进入:分享任务,获码豆换好礼!
-
感谢参与本期活动!本期《开发者最佳实践挑战营》活动已于7月8日24:00结束,可添加小助手微信等待下期开启添加小助手微信:zhongjianjianxiaoge欢迎参加华为云“开发者最佳实践挑战营”!这是本次挑战营的第2关,坚持闯关成功有机会获7000+码豆/体脂秤/手环/摄像机等精美好礼!本期活动截止7月8日。注意:参与闯关前,请确保已报名加入活动群并领取实践资源,如未入群请添加小助手微信(zhongjianjianxiaoge),回复“最佳实践”报名入群!点击这里了解活动详情>> | 点击这里查看活动FAQ>>本手册基于函数工作流服务实践所编写,用于指导您使用函数工作流服务实现为图片打水印的功能。 什么是函数工作流?函数工作流(FunctionGraph)是华为云提供的一款无服务器(Serverless)计算服务,无服务器计算是一种托管服务,服务提供商会实时为用户分配充足的资源,而不需要预留专用的服务器或容量,真正按实际使用付费。华为无服务器计算包含函数和工作流两个功能模块,分别实现函数计算和函数编排的功能。 (1)实践资源说明:① 函数工作流 FunctionGraph:函数前100万次/月调用免费。计费价格详情见:https://www.huaweicloud.com/pricing.html?tab=detail#/function② 对象存储服务 OBS:标准存储价格¥0.099/GB/月起,实践完后请及时删除存储文件。计费价格详情见:https://www.huaweicloud.com/pricing.html?tab=detail#/obs提示:本次实践建议选择“北京四”或“上海二”区域;实践函数工作流+OBS总费用预计:0元≤实践费用<1元。(2)最佳实践指南: https://support.huaweicloud.com/bestpractice-functiongraph/functiongraph_05_0400.html (3)视频演示:本次实践操作步骤比较简单,根据实践指南即可完成,无需视频演示;(4)入门教学:https://support.huaweicloud.com/functiongraph_video/index.html提示:本次如选择“北京四”或“上海二”,需在函数代码中,修改OBS的地址,详情见→FAQ第13条。任务一:创建函数,并将函数详情页“代码”截图,截图需包含右上角华为云账号名,并按回帖格式要求在本帖中回帖;任务二:根据实践指南完成实践操作,将函数日志截图,将打完水印的图片截图,并按回帖格式要求在本帖中回帖;1)通关、参与奖励&规则参与奖励、通关奖励限前150名完成的开发者(码豆奖励有限先到先得)① 参与奖励:每关完成创建实例可获100码豆,共6关最高可获得600码豆② 通关奖励:通过2关赠送:1000码豆通过4关赠送:2000码豆通过6关赠送:4000码豆活动结束后5个工作日内公示通关名单,15个工作日内发放码豆奖励。注:取通关最高值发放码豆奖励 2)分享任务规则&奖励:分享海报,每次分享可获得500码豆,最多可分享5次,可获2500码豆激励第一步: 分享以下文案+海报至朋友圈或100人以上技术群(微信、QQ、钉钉不限)。每次分享可获得500码豆,最高2500码豆!码豆可用于兑换DevCloud会员中心精美实物礼品。(1)文案:我正在参与华为云开发者最佳实践挑战营,场景化实战get云上开发技能,闯关还能赢好礼!(2)海报:添加小助手微信(zhongjianjianxiaoge),回复“分享海报”获取海报和文案。第二步: 分享完成后,截图点击链接https://www.wjx.top/jq/79372993.aspx 上传分享截图;符合要求的截图即可算作分享成功1次,获得500码豆,最高可获2500码豆!码豆奖励会在活动结束后15个工作日内发放3)幸运奖抽奖规则&奖励:(1)全通关可参与抽取:荣耀小哨兵智能摄像机 广角版、华为手环跑步精灵3e手环、荣耀智能体脂秤2;(2)活动结束后5个工作日内公示通关名单,并在微信群中统一抽奖。中奖名单公布后,用户需单独提供收件信息,奖品将于15个工作日内发放。为避免无法发放码豆,从未登录过会员中心的用户需提前登陆下DevCloud会员中心本次活动发放的码豆有效期至2020年9月1日 请务必按照以下格式要求进行回帖,否则无法计算奖励:华为云账号名:XXX(即右上角的字母数字组合ID)微信昵称:XXX实践感想:XXX实践截图:至少包含(a)函数代码截图、(b)上传图片触发函数后,函数指标截图(c)日志截图、(d)打了水印的图片截图,共 4 张截图。例1-函数详情页“代码”截图:例2-上传图片触发函数后,查看函数指标并截图:例3-上传图片触发函数后,查看函数日志并截图:例4-OBS中下载打完水印的图片,并截图: 附各关卡快速入口:第1关任务:基于API网关的电话号码归属地查询第2关任务:使用函数工作流服务为图片打水印第3关任务:使用Redis实现排行榜功能第4关任务:使用DMS Kafka优化消费者poll第5关任务:使用CPTS进行电商网站性能测试第6关任务:基于ServiceStage的天气预报应用部署
-
前言用户开发的微服务要想注册到华为云CSE的服务中心,就需要用到AK/SK认证。由于CSEJavaSDK提供了较多的配置方式,有时候容易出现错配和漏配的情况,本文从CSEJavaSDK读取AK/SK的关键代码入手进行分析,希望能够给大家提供一点AK/SK认证失败时的定位思路。(本文基于CSEJavaSDK-2.3.30进行说明)代码逻辑分析首先需要说明的是,AK/SK也是一个配置项,因此它可以配置在microservice.yaml文件里,可以通过-D设置系统属性来指定,也可以通过环境变量来指定(Windows的环境变量貌似可以带点号.,因此你可以直接在环境变量中指定cse.credentials.accessKey=ak;而Linux的环境变量不能带点,所以不能这么做)。另一方面来说,AK/SK又是一个比较特殊的配置项,因此CSEJavaSDK又提供了一个加密存储的配置方式。无论AK/SK的来源是哪里,最终CSEJavaSDK都是在AKSKManager中完成AK/SK的读取逻辑的。public static Credentials getCredential() throws Exception { // 读取AK/SK AKSKOption option = AKSKOption.readAKSK(); // 中间读写缓存等等逻辑忽略…… // 根据cse.credentials.akskCustomCipher配置获取cipher,对AK/SK进行解密 AKSKCipher cipher = (AKSKCipher)CIPHERS.get(option.getAkskCustomCipher()); // 检查逻辑忽略... char[] ak = cipher.decode(TYPE.AK, option.getAccessKey().toCharArray()); char[] sk = cipher.decode(TYPE.SK, option.getSecretKey().toCharArray()); String project = option.getProject(); if (project == null || project.isEmpty()) { // 如果用户没有配置cse.credentials.project,就尝试从配置的服务中心地址进行解析,具体的代码忽略…… // 我们平常通过APIGateway连接到服务中心,例如你要连到华北区,配置的地址就是这样的 https://cse.cn-north-1.myhuaweicloud.com // 可以从中截取出 cn-north-1,这个就是华北区的project LOGGER.info("The application missing project infomation, so choose a nearest one [{}]", project); } return credentials; }以上是AKSKManager的getCredential方法逻辑,可以看到大体的流程是读取AK/SK、根据cse.credentials.akskCustomCipher配置项获取cipher对aksk进行解密、获取cse.credentials.project配置信息。此方法返回的credentials内包含了明文的AK/SK、project信息,因此本地调试时确定AK/SK读取是否有问题的最快途径就是在getCredential方法末尾打断点,查看credentials包含的信息。而在AKSKOption.readAKSK()中读取AK/SK的关键流程如下:public static AKSKOption readAKSK() { // 从AK/SK加密存储文件读取 AKSKOption option = readFromFile(); if (option == null) { // 从配置中读取,注意:环境变量、System Property、配置文件都算在这里面 option = buildFromYaml(); } return option; } private static AKSKOption readFromFile() { // 忽略缓存逻辑…… // 先尝试从环境变量CIPHER_ROOT中读取加密存储文件的目录 String cipherPath = System.getenv("CIPHER_ROOT"); if (cipherPath == null || cipherPath.isEmpty()) { // 若不存在则从/opt/CSE/etc/cipher目录中读取 cipherPath = "/opt/CSE/etc/cipher"; } String certFilePath = cipherPath + File.separator + "certificate.yaml"; File certFile = new File(certFilePath); if (!certFile.exists() || certFile.isDirectory()) { // 文件不存在时尝试从系统属性user.dir配置的目录中读取 certFile = new File(System.getProperty("user.dir") + File.separator + "certificate.yaml"); if (!certFile.exists() || certFile.isDirectory()) { return null; } } AKSKOption option = readFromFile(certFile); return option; }可以看到CSEJavaSDK优先读取加密存储的AK/SK文件,读不到才去配置中找。而AK/SK加密文件的读取路径优先级从高到低分别是CIPHER_ROOT环境变量配置的目录、/opt/CSE/etc/cipher目录、user.dir系统属性配置的目录(这个少见)。常见问题分析思路当发生AK/SK认证失败的问题时,我们首先需要对问题有个基本的定界,即问题是出在AK/SK读取(解密)上,还是出在AK/SK的内容本身。如果是本地开发调试,那么这个问题很好确定,直接在AKSKManager的getCredential方法里打断点去看一下即可。如果是在线上部署运行的服务,那么只能看日志,凭经验来定位了。与AK/SK认证相关的日志关键词有这些:"read ak/sk from":显示AK/SK的来源是哪里,"read ak/sk from security storage file."表示服务实例从AK/SK加密存储文件中读取配置项的,"read ak/sk from microservice.yaml."表示服务实例从配置项中读物AK/SK的(注意,这里说的是配置项,包含了环境变量、系统属性以及配置文件,不单单是指microservice.yaml文件)。"add ak/sk cipher":加载AKSKCipher,cipher用于解密SK。CSEJavaSDK默认提供的cipher有default、security,default用于明文存储AK/SK的场景,security在AK/SK加密存储场景中使用。CSEJavaSDK使用SPI机制加载cipher,如果发现日志中没有打印加载default和security的内容,那么你就需要检查一下自己依赖的jar包了。"sign request failed ...... OSS_ROOT not properly set":当cipher为security时,CSEJavaSDK会去CIPHER_ROOT环境变量配置的目录里读取解密密钥文件common_shared.key和root.key,如果用户忘记配置CIPHER_ROOT了,就会打印这个错误。"Cipher decode error, will use original as plain!":SK解密失败时会打印此错误日志,常见的错误原因包括CIPHER_ROOT环境变量下没有密钥文件、程序没有权限读取密钥文件、Java没有开启高强度加密功能等。关于Java高强度加密功能,大家去网上搜一下JCE policy能找到解除限制的方法,较低版本的jdk8需要下载一个jce的jar包,高版本的直接修改jre目录下的lib/security/java.security文件配置即可,这个限制只存在于Oracle JDK中,OpenJDK没有此限制。AK/SK或project配置内容错误:当内容配置出错时,实际上AK/SK的读取加密过程并不会报错,只有等到CSEJavaSDK向CSE后端服务(sc/cc/monitor)发送请求时,才会拿到错误返回消息,错误信息包括如下类型:1. AK内容错误:401:Unauthorized, {"errorCode":"401002","errorMessage":"Request unauthorized","detail":"Get service token from iam proxy failed,{\"error\":\"get SK from AK from iam failed. error:Object Not Found - details: \"}"}2. SK内容错误:401:Unauthorized, {"errorCode":"401002","errorMessage":"Request unauthorized","detail":"Get service token from iam proxy failed,{\"error\":\"validate ak sk error\"}"}3. project配置错误:401:Unauthorized, {"errorCode":"401002","errorMessage":"Request unauthorized","detail":"Get service token from iam proxy failed,{\"error\":\"get project token from iam failed. error:http post failed, statuscode: 400\"}"}这些错误内容都是华为云服务的认证鉴权机制返回的,后期如果相关服务升级的话,也许返回的错误内容会有变化。但总之大家可以抓住关键的一点,就是如果前面的AK/SK加载过程都没有报错,只有连接CSE后端服务时拿到401的错误返回,那么你就需要检查一下自己的AK/SK、project是否配置对了。-D启动参数、环境变量、各个microservice.yaml文件都是需要排查的。至于project的配置,可以参考如何查看项目ID。project和你所连接的region是相关的,比如华北区连接的APIGateway地址就是https://cse.cn-north-1.myhuaweicloud.com ,project应该配置为cn-north-1。如果你不配置,CSEJavaSDK会尝试从sc地址中截取出来,但不一定能拿到正确的值,此时启动日志里面会打印提示信息,例如"The application missing project infomation, so choose a nearest one [cn-north-1]",就是在告诉你自动选取的project是cn-north-1。总结博主对AK/SK认证的了解大致也就是上面这些了,很多内容也只能提供一点参考和启发意义。项目实际运行的情况复杂多样,当大家遇到相关问题的时候还是需要根据上面提到的代码逻辑,结合自己服务的实际运行环境去分析,才能更好地定位问题。本文转载自【华为云微服务引擎】从代码机制看AK/SK认证问题
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签