-
【重要公告】《开发者最佳实践挑战营》第八期活动已结束打卡名单及邀请名单已公示见:FAQ帖>>>注:统计截止2020年12月31日24:00前打卡数据为保证您顺利领取活动奖品,请全通关和获得邀请TOP奖的伙伴提前填写下方奖品收货信息链接。填写截止时间为1月8日,如您没有填写,视为放弃奖励填写地址请戳我>>欢迎参加华为云“开发者最佳实践挑战营”第八期这是本次挑战营的第1关,坚持闯关成功有机会获12900码豆/机械键盘/背包等精美好礼!本期活动截止12月31日。注意:参与闯关前,请确保已报名加入活动群并领取实践资源,如未入群请添加小助手微信(hwpaas01),回复“最佳实践”进入学习交流群!点击这里了解活动详情>> | 点击这里查看活动FAQ>>为避免无法发放码豆,请从未登录过会员中心的用户需提前登陆下DevCloud会员中心本手册基于华为云API网关实践所编写,用于指导您开放并调用API。本手册主要指导您将电话号码归属地查询作为后端服务,开放一个查询API,并将此API发布到RELEASE环境,以便调用。最后将此API绑定流控策略,进行流量控制,确保API可以提供持续稳定的服务。什么是API网关?API网关(API Gateway)是为开发者、合作伙伴提供的高性能、高可用、高安全的API托管服务,帮助用户轻松构建、管理和部署任意规模的API。为什么使用API网关?轻松构建、管理和部署任意规模的API。灵活自定义的流量控制策略制定,保障API服务的稳定和连续。提供多种API监控指标,更方便统计分析API服务情况。 (1)实践资源说明:API网关服务仅对开放API的用户收费。开通服务、创建API、发布API、管理API免费。点击了解计费价格详情>>提示:本次实践建议使用APIG共享版,并选择“上海二”区域;实践费用预计:0元≤实践费用<1元。(2)最佳实践指南:点击查看实践指南>>(3)操作演示视频:点击查看实践视频演示>>任务一:创建API分组、创建API,并将API详情页“总览”截图,截图需包含右上角华为云账号名,并按回帖格式要求在本帖中回帖;任务二:根据实践指南完成实践操作(可查看实践视频演示),将调试截图,将URL结果截图,并按回帖格式要求在本帖中回帖; 注:已参加过上一期在本帖已闯关完成打卡的用户参与第八期通本关将不在发放通关奖励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)API详情页总览截图、(b)调试结果截图、(c)调用API截图、(d)监控数据截图,共 4 张截图。例1-API详情页“总览”:例2-调试结果:例3-调用API:例4-监控数据: 【快速传送门】第1关任务:基于API网关的电话号码归属地查询第2关任务:使用函数工作流服务为图片打水印第3关任务:使用Redis实现排行榜功能第4关任务:使用DMS Kafka优化消费者poll第5关任务:使用CPTS进行电商网站性能测试第6关任务:基于ServiceStage的天气预报应用部署第7关任务:使用CloudIDE在云端环境开发AI交付实操第8关任务:使用ModelArts实现零代码美食分类模型开发>>点击进入:开发者最佳实践挑战营第八期活动页>>点击进入:活动FAQ帖>>点击进入:邀请有礼,瓜分30万码豆,最高可获66666码豆!>>点击进入:分享任务,获码豆换好礼!
-
上次借着高考热点整出一个刷屏的互动游戏之后,我连续被各业务部门请了一周的午饭了,今天运营部,明天品牌部,后天市场部…心里暗搓搓地想,这业务部门的团建经费咋就这么多呢?(详情请查看上集:《高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的》)当然了,俗话说“天下没有免费的午餐”,各个部门都希望能从我这儿获取点“高科技”来帮他们做出些创新的事。“高科技”咱倒有的是,自从学习API后,仿佛解锁了新技能,可别小看了一个小小的API接口,用好了都是能力无穷。问题是创新也得结合具体的事儿啊,哪能盲目为创新而创新。前几天跟市场老大吃饭的时候,还真给他支了个招,用情感分析API来做用户偏好调研,没想到这么一个小创意给公司省了20万调研费用。事情是这样的,公司的电商部门想要大批量采购上架一款新上市的手机,投入金额在千万级。为了保险起见,老板让他们先找咨询公司做一轮市场调研,看看这款手机的用户反馈再决定是否要大批量采购。市场部找了几家咨询公司出方案。咨询公司倒是很快给出了方案和报价单,其中有20万的预算用于收集用户反馈信息。市场部老大犯了难,几家公司给出的调研方案都有一个共同的问题:费用高不说,还得加上走流程、出具体执行方案、沟通协调等环节,整个过程耗时长、效率低,等调研结束,市场机会可能也错过了。我问他:如果不需要调研公司收集用户反馈信息,是不是就好办多了?市场老大说:“是的,咱们要是自己能搞定,速度能快很多,还能省下这20万,但用户反馈从哪来呢?”“这个好办,给我3天时间,我帮你搞定!”咬着串上的肉,我许下了承诺。3天后,我给他发了一封邮件,内容包括这款手机的1万条用户反馈,以及基本的用户反馈分析。 我是怎么做的呢?简单来说就两步:l 第一步:尽量多地找到这款手机的用户评论;l 第二步:使用情感分析API接口分析这些评论的正负面倾向、用户喜好度、用户喜好点。【情感分析API实现用户偏好调研】具体操作步骤如下。一、准备环境登录华为云控制台,确保已经实名认证,查看账户在北京四的项目ID。(目前情感分析服务只支持北京一和北京四,此次调用以北京四为例)1、将鼠标移动到右上角账号名下,选择“我的凭证” 2、左边选择API凭证,可以获取项目ID。二、通过PostMan获取token(这是为了认证鉴权)url:https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens发送一条POST请求。POST:https://iam.cn-north-4.myhuaweicloud/v3/auth/tokens 记录响应头Headers中的X-Subject-Token值。三、通过PostMan调用情感分析接口body里content为文本评论,type:1指选择手机领域,该接口同时还支持;type:2(汽车领域)。请求示例(1)POST请求:https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{project id}/nlu/sentimens/domain在Headers里面填入前面获取的X-Subject-Token。点击发送send请求,得到:其中:label为1表示该评论情感倾向为正面,confidence表示该情感倾向为正面的置信度。请求示例(2): 其中:label为0表示该评论情感倾向为负面,confidence表示该情感倾向为负面的置信度。四、采用Python代码调用获取token和情感分析接口获取tokendef get_token(name, domain_name, pass_wd, regoin_name, request_url): """ 获取鉴权 :param name: 用户名 :param domain_name: 账号名 :param pass_wd: 密码 :param regoin_name: 局点域 :return:token """ mydata = { "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": name, "password": pass_wd, "domain": { "name": domain_name } } } }, "scope": { "project": { "name": regoin_name } } } } response = requests.post( request_url, headers={"content-type": "application/json"}, data=json.dumps(mydata), verify=False) if response.status_code == 201: return response.headers['x-subject-token'] else: raise Exception(response.content)调用情感分析接口def get_sentiment(request_url, test_data, token): """ 获取情感倾向 :param request_url:情感分析接口url :param test_data: 请求评论数据 :param token:鉴权信息 :return: """ myheader = {"content-type": "application/json"} myheader['X-Auth-Token'] = token response = requests.post( request_url, headers=myheader, data=json.dumps(test_data), verify=False) response = json.loads(response.content.decode('utf-8')) return response调用示例:#填入该局点项目ID project_id = "" #填入用户名,账号名,用户密码 token = get_token( name="", domain_name="", pass_wd="", regoin_name="cn-north-4", request_url="https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens") test_data = { "content": "扬声器还行。音量大,音质差一点。还有价格定的有点高,性价比不行。", "type": 1 } print( get_sentiment( "https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{project_id}/nlu/sentiment/domain".replace("{project_id}", project_id), test_data, token))响应示例:市场老大看完邮件之后,给我回了一句话:“兄弟,你这个操作太赞了,帮公司省了20万,你这一个月的午饭我包了!”这封回复邮件抄送了公司老板和所有的管理层,怎么感觉以后的日子会更忙了呢?先不操心这个了,这个月的午饭有人管了~ 据了解,目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《华为云一站式API解决方案平台API Explorer上线》华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l 报名地址l 奖项设置API入门学习赛·探险寻宝之旅l 报名地址l 奖项设置
-
上次借着高考热点整出一个刷屏的互动游戏之后,我连续被各业务部门请了一周的午饭了,今天运营部,明天品牌部,后天市场部…心里暗搓搓地想,这业务部门的团建经费咋就这么多呢?(详情请查看上集:《高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的》)当然了,俗话说“天下没有免费的午餐”,各个部门都希望能从我这儿获取点“高科技”来帮他们做出些创新的事。“高科技”咱倒有的是,自从学习API后,仿佛解锁了新技能,可别小看了一个小小的API接口,用好了都是能力无穷。问题是创新也得结合具体的事儿啊,哪能盲目为创新而创新。前几天跟市场老大吃饭的时候,还真给他支了个招,用情感分析API来做用户偏好调研,没想到这么一个小创意给公司省了20万调研费用。事情是这样的,公司的电商部门想要大批量采购上架一款新上市的手机,投入金额在千万级。为了保险起见,老板让他们先找咨询公司做一轮市场调研,看看这款手机的用户反馈再决定是否要大批量采购。市场部找了几家咨询公司出方案。咨询公司倒是很快给出了方案和报价单,其中有20万的预算用于收集用户反馈信息。市场部老大犯了难,几家公司给出的调研方案都有一个共同的问题:费用高不说,还得加上走流程、出具体执行方案、沟通协调等环节,整个过程耗时长、效率低,等调研结束,市场机会可能也错过了。我问他:如果不需要调研公司收集用户反馈信息,是不是就好办多了?市场老大说:“是的,咱们要是自己能搞定,速度能快很多,还能省下这20万,但用户反馈从哪来呢?”“这个好办,给我3天时间,我帮你搞定!”咬着串上的肉,我许下了承诺。3天后,我给他发了一封邮件,内容包括这款手机的1万条用户反馈,以及基本的用户反馈分析。 我是怎么做的呢?简单来说就两步:l 第一步:尽量多地找到这款手机的用户评论;l 第二步:使用情感分析API接口分析这些评论的正负面倾向、用户喜好度、用户喜好点。【情感分析API实现用户偏好调研】具体操作步骤如下。一、准备环境登录华为云控制台,确保已经实名认证,查看账户在北京四的项目ID。(目前情感分析服务只支持北京一和北京四,此次调用以北京四为例)1、将鼠标移动到右上角账号名下,选择“我的凭证” 2、左边选择API凭证,可以获取项目ID。二、通过PostMan获取token(这是为了认证鉴权)url:https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens发送一条POST请求。POST:https://iam.cn-north-4.myhuaweicloud/v3/auth/tokens记录响应头Headers中的X-Subject-Token值。三、通过PostMan调用情感分析接口body里content为文本评论,type:1指选择手机领域,该接口同时还支持;type:2(汽车领域)。请求示例(1)POST请求:https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{project id}/nlu/sentimens/domain在Headers里面填入前面获取的X-Subject-Token。点击发送send请求,得到:其中:label为1表示该评论情感倾向为正面,confidence表示该情感倾向为正面的置信度。请求示例(2): 其中:label为0表示该评论情感倾向为负面,confidence表示该情感倾向为负面的置信度。四、采用Python代码调用获取token和情感分析接口获取tokendef get_token(name, domain_name, pass_wd, regoin_name, request_url): """ 获取鉴权 :param name: 用户名 :param domain_name: 账号名 :param pass_wd: 密码 :param regoin_name: 局点域 :return:token """ mydata = { "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": name, "password": pass_wd, "domain": { "name": domain_name } } } }, "scope": { "project": { "name": regoin_name } } } } response = requests.post( request_url, headers={"content-type": "application/json"}, data=json.dumps(mydata), verify=False) if response.status_code == 201: return response.headers['x-subject-token'] else: raise Exception(response.content)调用情感分析接口def get_sentiment(request_url, test_data, token): """ 获取情感倾向 :param request_url:情感分析接口url :param test_data: 请求评论数据 :param token:鉴权信息 :return: """ myheader = {"content-type": "application/json"} myheader['X-Auth-Token'] = token response = requests.post( request_url, headers=myheader, data=json.dumps(test_data), verify=False) response = json.loads(response.content.decode('utf-8')) return response调用示例:#填入该局点项目ID project_id = "" #填入用户名,账号名,用户密码 token = get_token( name="", domain_name="", pass_wd="", regoin_name="cn-north-4", request_url="https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens") test_data = { "content": "扬声器还行。音量大,音质差一点。还有价格定的有点高,性价比不行。", "type": 1 } print( get_sentiment( "https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{project_id}/nlu/sentiment/domain".replace("{project_id}", project_id), test_data, token))响应示例:市场老大看完邮件之后,给我回了一句话:“兄弟,你这个操作太赞了,帮公司省了20万,你这一个月的午饭我包了!”这封回复邮件抄送了公司老板和所有的管理层,怎么感觉以后的日子会更忙了呢?先不操心这个了,这个月的午饭有人管了~ 据了解,目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《华为云一站式API解决方案平台API Explorer上线》华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l 报名地址l 奖项设置API入门学习赛·探险寻宝之旅l 报名地址l 奖项设置
-
使用Python调用ManageOne运营API在运营环境中遇到一个需求,就是如何很方便的获取环境中各租户的资源使用情况,这里可以使用python requests 的方式来操作。首先要通过API获取数据import requestsimport jsonres_body = {"auth": { "identity": { "methods": ["password"], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "xxx", "password": "xxx", } } }, "scope": { "domain": { "name": "mo_bss_admin" }, }, }, }res_headers = { 'Content-Type': 'application/json', 'Accept': 'application/json; charset=UTF-8' }res_url = "https://iam-apigateway-proxy.demo.com/v3/auth/tokens"res = requests.post(url = res_url, headers = res_headers, json = res_body, verify = False)# 将token从headers中提取出来token = res.headers['X-Subject-Token']MIIEEgYJKoZIhvcNAQcCoIIEAzCCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxmgOHw=import copy# 使用token获取vdc的列表url1 = "https://sc.demo.com/rest/vdc/v3.0/vdcs?start=0&limit=1000"new_headers = copy.deepcopy(res_headers)new_headers['X-Auth-Token'] = tokenres1 = requests.get(url=url1, headers = new_headers, verify=False)parsed = json.loads(res1.text)print(res1.status_code, "\n\r", json.dumps(parsed, indent=4, sort_keys=True))200 # 这里只展示其中一个vdc{ "total": 1, "vdcs": [ { "az_id": null, "create_at": 1589418019000, "create_user_id": "385xxxxxxxxxd", "create_user_name": "bss_admin", "description": "", "domain_id": "ea3xxxxxxxxx60", "domain_name": "demo", "ecs_used": 0.0, "enabled": true, "enterprise_id": null, "enterprise_project_id": null, "evs_used": 0.0, "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}", "id": "bdc8cxxxxxxxxxxxxxxxxxx32a6a", # vdc的id "idp_name": null, "ldap_id": null, "level": 2, # 2级vdc "name": "demo", "project_count": 1, "region_id": null, "tag": "vdc", "third_id": null, "third_type": "0", "top_vdc_id": "d9xxxxxxxxxxxxxxxxxxxxxxxxxxxx72", "upper_vdc_id": "d9xxxxxxxxxxxxxxxxxxxxxxxxxxxx72", "upper_vdc_name": "demo", "utc_create_at": "2020-05-14 01:00:19.0" }, ]}这里会将所有vdc的基本信息获取到,我们需要将vdc id记录下来,后面会用到。import rec = []count = 0id_dict = {}for i in parsed['vdcs']: id_dict[i['name']] = i['id'] # 将vdc的id打印出来 print("{0:<25}".format(i['name']),":",i['id']) demo : d9xxxxxxxxxxxxxxxxxxxxxxxxxxxx72利用vdc id去获取vdc的全部细节。这里可以使用一个for循环对所有的vdc进行标准化处理。url2 = "https://sc.demo.com/rest/vdc/v3.0/vdcs/{}/details"vid = "d9xxxxxxxxxxxxxxxxxxxxxxxxxxxx72"res2 = requests.get(url=url2.format(vid),headers = new_headers,verify=False)parsed1 = json.loads(res2.text)print(res2.status_code,json.dumps(parsed1, indent=4, sort_keys=True))返回的json示例如下(示例内容选自《ManageOne 8.0.0 运营面API参考》)200 { "vdc": { "domain_id": "f8310f0f46f04656b10475d260b3026f", "domain_name": "baiqiang1", "upper_vdc_id": "0", "regions": [{ "cloud_infras": [{ "quotas": [{ "service_id": "nfvivpc", "resources": [{ "local_used": 45001, "resource": "vpc", "other_limit": 50000, "other_used": 50001, "local_limit": 50000 }] }], "name": "xian-alpha-2", "cloud_infra_id": "NFVI_xian-alpha-2", "status": "normal", "available_zones": [{ "quotas": [{ "service_id": "nfviecs", "resources": [{ "local_used": 0, "resource": "cores", "other_limit": 100000, "other_used": 110002, "local_limit": 100000 }] }], "az_id": "fsp.type2" }] }], "name": "{\"zh_cn\":\"alpha-2\",\"en_us\":\"xian-alpha-2\"}", "region_id": "xian-alpha-2", "type": "private_cloud" }], "regionId": "xian-beta2-1", "status": "normal" }], "level": 1, "name": "baiqiang1", "description": "", "id": "a24b93f0-2c17-4c2f-b14c-0fb8128a1a5a", "create_at": 1512169700000, "enabled": true } } VDCDetailsResponses对象包含如下属性: 参数 是否必选 类型 值域 说明 vdc 否 VDCDetailBean对象 无 VDC信息。 VDCDetailBean对象包含如下属性: 参数 是否必选 类型 值域 说明 id 否 string 无 VDC id,只能包含小写字母、数字、中划线,长度在1-36之间。 name 否 string 无 VDC 名称。 tag 否 string 无 VDC 类型。 description 否 string 无 VDC 描述。 upper_vdc_id 否 string 无 上级VDC id,只能包含小写字母、数字、中划线,长度在1-36之间。 upper_vdc_name 否 string 无 上级 VDC 名称。 top_vdc_id 否 string 无 一级VDC id,只能包含小写字母、数字、中划线,长度在1-36之间。 extra 否 object 无 扩展信息。 ecs_used 否 double 无 ECS 总数。 evs_used 否 double 无 EVS 总数。 project_count 否 int32 无 项目总数。 enabled 否 boolean true,false VDC使能开关。 domain_id 否 string 无 域标识,长度在1-36之间。 level 否 int32 无 VDC级别,取值在1-5之间。 create_user_id 否 string 无 创建用户ID。 create_user_name 否 string 无 创建用户名称。 create_at 否 int64 无 创建时间。 utc_create_at 否 string 无 创建时间。 domain_name 否 string 无 域名称。 ldap_id 否 string 无 AD id,只能包含小写字母、数字、中划线,长度在1-36之间。 mfa_status 否 string 无 该租户下用户是否开启双因子认证,false默认不开启。 process_id 否 string 无 审批流程ID,只能包含小写字母、数字、中划线,长度为1-36个字符。 third_type 否 string 无 对接类型,1表示对接SAML,2表示ldap enterprise_id 否 string 无 华为云帐户。 enterprise_project_id 否 string 无 华为云项目ID。 cloud_federation_status 否 boolean true,false 华为云状态。 cloud_federation_rate 否 Map<object, object> 无 华为云使用率。 regions 否 List<Region> 无 区域信息。 Region对象包含如下属性: 参数 是否必选 类型 值域 说明 region_id 是 string 无 地域ID,长度在1-32之间。 action 否 string 无 服务操作参数,取值范围 bind,unbind,modify。VDC创建时指定为bind,不校验,配额修改时默认为modify。 name 否 string 无 地域名称,长度在1-512之间,只读参数。 type 否 string 无 地域类型,包含private_cloud、public_cloud等,只读参数。 status 否 string 无 地域类型,包含private_cloud、public_cloud等,只读参数。 cloud_infras 否 List<Cloud_infra> 无 资源池配额。 Cloud_infra对象包含如下属性: 参数 是否必选 类型 值域 说明 cloud_infra_id 否 string 无 资源池ID,长度在1-64之间。 name 否 string 无 资源池区名称,长度在1-255之间,只读参数。 type 否 string 无 资源池区类型,长度在1-255之间,只读参数。 status 否 string 无 资源池状态,包含normal、abnormal等,只读参数。 available_zones 否 List<Available_zone> 无 可用分区配额。 quotas 否 List<Quota> 无 资源池配额。 Available_zone对象包含如下属性: 参数 是否必选 类型 值域 说明 az_id 否 string 无 可用分区ID,长度在1-128之间。 name 否 string 无 可用分区名称,长度在1-255之间,只读参数。 status 否 string 无 可用分区状态,包含normal、abnormal等,只读参数。 type 否 string 无 可用分区类型,只读参数。 extend_param 否 string 无 拓展参数,只读参数。 cloud_infra_id 否 string 无 资源池ID,长度在1-64之间。 quotas 否 List<Quota> 无 可用分区下配额。 Quota对象包含如下属性: 参数 是否必选 类型 值域 说明 service_id 否 string 无 配额服务ID,长度在1-255之间。 action 否 string 无 服务操作参数,取值范围 bind,unbind,modify。 resources 否 List<Dict> 无 配额项。 Dict对象包含如下属性: 参数 是否必选 类型 值域 说明 resource 否 string 无 配额ID,长度在1-255之间。 local_limit 否 int32 无 本级配额上限,取值在[-1,2147483647]。取值为-1时,表示不限配额。 other_limit 否 int32 无 本级配额上限,取值在[-1,2147483647]。取值为-1时,表示不限配额。 local_used 否 double 无 本级配额使用量,取值在[0,2147483647],只读参数。 other_used 否 double 无 下级配额使用量,取值在[0,2147483647],只读参数。 Quota对象包含如下属性: 参数 是否必选 类型 值域 说明 service_id 否 string 无 配额服务ID,长度在1-255之间。 action 否 string 无 服务操作参数,取值范围 bind,unbind,modify。 resources 否 List<Dict> 无 配额项。 Dict对象包含如下属性: 参数 是否必选 类型 值域 说明 resource 否 string 无 配额ID,长度在1-255之间。 local_limit 否 int32 无 本级配额上限,取值在[-1,2147483647]。取值为-1时,表示不限配额。 other_limit 否 int32 无 本级配额上限,取值在[-1,2147483647]。取值为-1时,表示不限配额。 local_used 否 double 无 本级配额使用量,取值在[0,2147483647],只读参数。 other_used 否 double 无 下级配额使用量,取值在[0,2147483647],只读参数。 接下来对我们需要的数据进行提取,由于我只关注有关ECS的服务quota,所以可以使用下面的方法进行提取。regions = parsed1['vdc']['regions']def print_vdc_detail(regions): azs = [] for region in regions: for ci in region['cloud_infras']: for az in ci['available_zones']: azs.append(az) for az in azs: print("\n\r",az['az_id'],':\n') for src in az['quotas']: # az['quotas'] -> list print('资源类型:{}'.format(src['service_id'])) for det in src['resources']: print(" # {0:<25}: {1}".format(det['resource'],det['local_used']))print_vdc_detail(regions)#########结果如下################az0.dc0 :资源类型:ecs # cores : 17.0 #使用的CPU核数 # ram : 40.0 #已经使用的内存数 # gpu_instances : 0.0 # npu_instances : 0.0 # instance_snapshot : 0.0 # instances : 44.0 #创建的ECS数资源类型:evs # gigabytes : 448.0 #使用的卷容量 # volumes : 25.0 #创建的云硬盘数量az1.dc1 :资源类型:bms # cores : 192.0 # ram : 512.0 # instances : 2.0资源类型:evs # gigabytes : 0.0 # volumes : 0.0az2.dc2 :资源类型:ecs # cores : 8.0 # ram : 16.0 # gpu_instances : 0.0 # npu_instances : 0.0 # instance_snapshot : 0.0 # instances : 1.0资源类型:evs # gigabytes : 400.0 # volumes : 2.0可以循环调用上面的步骤,获取所有vdc的资源数据def get_resource(name,vid): url2 = "https://sc.armcloud.hcs.huawei.com/rest/vdc/v3.0/vdcs/{}/details" res2 = requests.get(url=url2.format(vid),headers = new_headers,verify=False) parsed1 = json.loads(res2.text) regions = parsed1['vdc']['regions'] print("VDC: {}".format(name)) print_vdc_detail(regions) print('\n') for name, vid in id_dict.items(): get_resource(name, vid)###########结果如下#################VDC: demoaz0.dc0 :资源类型:ecs # cores : 16.0 # ram : 33.0 # gpu_instances : 0.0 # npu_instances : 0.0 # instance_snapshot : 0.0 # instances : 21.0资源类型:evs # gigabytes : 555.0 # volumes : 23.0VDC: demo1az0.dc0 :资源类型:ecs # cores : 0.0 # ram : 0.0 # gpu_instances : 0.0 # npu_instances : 0.0 # instance_snapshot : 0.0 # instances : 0.0资源类型:evs # gigabytes : 0.0 # volumes : 0.0VDC: demo2az0.dc0 :资源类型:ecs # cores : 24.0 # ram : 86.0 # gpu_instances : 0.0 # npu_instances : 0.0 # instance_snapshot : 0.0 # instances : 26.0资源类型:evs # gigabytes : 642.0 # volumes : 36.0接下来可以基于这个调用链,将代码改成可复用的SDK的形式,前端展示可以通过Django、Flask或者GUI等,也可以输出成excel表格并自动发送邮件给干系人。
-
提示调试 失败,可是没有填写项目呀,光标点,也没有办法写
-
基本功能1 MEP开发者平台 特性简介MEP开发者平台具备如下特性:● MEP开发者平台内置的开放网络能力● 完善的平台迁移工具● 在线能力调试● CI/CD能力MEP开发者平台自身可以支持多平台,包括X86和ARM平台。客户价值开发者可以根据MEP开发者平台提供的IDE一步步选择,最大化简化开发者的上车难度并最大化提升开发者的开发便利性。开发者也可以通过MEP开发者平台在线体验相关开放能力的API实现,并可以在线调试,最终通过MEP开发者平台进行部署开发自验证。特性描述● 完善的平台迁移工具MEP开发者平台的IDE Portal内置平台迁移工具,可以根据用户在项目创建阶段选择期望部署的硬件平台,MEP开发者平台将智能地集成对应硬件平台的迁移工具。● 在线API调试MEP开发者平台的IDE Portal通过集成Swagger UI的开源组件。用户在自己IDE工作空间中通过IDE Portal的引导页面,选择自身APP所需的开放能力,MEP开发者平台根据用户选择的能力自动生成相关的API文档,使得开发者用户可以直接在线详细的查看自己选择的能力相关API。MEP开发者平台会针对每一个工程拉起对应的模拟器,使得开发者在开发阶段也可以方便的利用Portal在线测试。● CI/CD工具链MEP开发者平台可以给开发者提供多种的开发便利性。镜像打包a. 如果开发者需要自己打包镜像,MEP开发者平台可以提供VM和容器的步骤,以供开发者本地打包镜像,然后上传MEP开发者平台进行后续操作。或者用户将镜像包传到自己的镜像操作,MEP开发者平台支持标准的Docker命令进行Docker的Pull,Push,Update等操作。b. MEP开发者平台可以支持基于源代码进行Dockerfile的生成,然后自动生成Docker,上传至MEP开发者平台的镜像仓库。c. MEP开发者平台提供了tutorial,可以使用平台提供的样例镜像,供开发者快速体验并熟悉MEP开发者平台端到端的能力。安装部署MEP开发者平台在开发者准备好镜像后,MEP开发者平台会提供一些边缘计算服务器以供应用部署,在部署成功后,开发者可以直接获取部署环境进行自己的业务端到端的测试。应用发布MEP开发者平台可以根据开发者输入的参数自动生成APP部署包,开发者在所有的测试完成后,可以根据自己的设计选择是否要将自己的应用发布到MEP应用商店。如果用户愿意将继续在开源平台贡献,也可以将APP开放到MEP开发者平台,以供后续应用可以使用此APP的对外开放能力。● MEP开发者平台开放能力MEP开发者平台的开放能力来源于两方面,一方面是MEP开发者平台开发的内置的开放能力,同时应用开发者也可以将自己的APP贡献到MEP开发者平台,同时提供对应的API文档,可以供后续的开发者使用。
-
上一期故事说到,我成为了公司技术委员会副主席,上任后的第一件事是建立了一个云容器化的研发资料库,把每个研发硬盘里那点“好东西”都复用出来。(详情查看:《无法想象!大龄码农的硬盘里有这么多宝藏》)自此以后,老大交给我的撸代码的活越来越少,让我专心把技术委员会做起来。人一闲下来吧,就容易生事儿,这不么,闲着没事做了一个互动小游戏,运营妹子从公众号上推了张海报,居然成了一场10万人参与的刷屏级活动。 咋回事呢?大概是7月25号,我看到一条新闻,北京2021年高考要增加英语口语考试。妈耶,这也太突然了,这不跟产品经理突然提需求、微博的运维赶上明星突然宣布结婚/分手一样让人猝不及防么。很快,有孩子正上高中的家长都在朋友圈转发了这条消息,这事的关注度这么高啊?总听说运营擅长抓热点,那我是不是也可以做点什么抓住这次热点呢?对于这个政策,家长和学生最关注最需要的是什么?考口语,首先得知道自己的口语水平怎么样,知道短板在哪才能有针对性地补习提高。那就是说需要口语测评!我想起之前在华为云官网上看到过一个“多模态评测”API,能够根据朗读视频数据和试题文本,给朗读者的口语评测分数。我可以利用这个API做一个测评类的H5小游戏。按照我的习惯,实现功能的过程会同步梳理成文档,便于后浪们学习。《多模态英语口语评测》内容来源多模态口语现在还在公测阶段,所以我提前在华为云上申请了公测,当天就公测通过了~(公测链接:https://activity.huaweicloud.com/AI_free0.html?ggw_hd )步骤一:数据准备l 支持的video类型包括avi/mp4/webm/mkv/flv等封装格式,视频清晰度不低于240p,帧率不低于25fps,大小限制在10Ml 支持语言:英式英语l 评测模式:单词评测、句子评测l 需要把视频转化为对应的base64编码上传转化举例(Python)#!/usr/bin/env python # encoding: utf-8 import base64 def ToBase64(file, txt): with open(file, 'rb') as fileObj: image_data = fileObj.read() base64_data = base64.b64encode(image_data) fout = open(txt, 'w') fout.write(base64_data.decode()) fout.close() ToBase64("./test.wav",'2.txt') # 音频文件转换为base64步骤二:构建请求华为云语音交互服务的通用请求方式如下图所示。备注:l 多模态评测API目前处于公测阶段,在华为-北京四可以调用,其Endpoint为“sis-ext.cn-north-4.myhuaweicloud.com”。l 需要确认个人专有华为云项目ID和Token(身份认证)(项目ID获取方法;Token查询方法)获取了身份认证后,就可以填写请求了。假设我现在有一个avi格式的文件,想用单词模式去判断口语质量,我要学习的口语是“sit down”。请求示例是:POST https://{endpoint}/v1/{project_id}/assessment/video Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "config":{ "video_format": "avi", "language": "en_gb", "mode": "word" }, "video_data": "/+MgxAAUeHpMAUkQAANhuRAC...", "ref_text": "sit down" }步骤三:返回结果{ "fluency": { "score": 75.02139, "rhythm": 50.042786, "cohesion": 100.0 }, "pronunciation": { "score": 36.817684, "gop": 36.817684 }, "score": 22.09061, "completeness": 0.0, "duration": 2.46, "words": [此后为音素、音标评价结果,其返回结果见下方]从返回的结果可以看到:l 从流利度看:流利度评分75.02;连贯性是满分;韵律弱一点,只有50.04分l 从发音看:我的发音质量综合打分(score)是36.82分;发音好坏打分是36.82分l 最后的综合评分:22.09分…哎,还挺准确,我从小英语口语就差…还能进行英语口语练习,从发音嘴型、发音效果纠正口语。通过具体的单一单词、音素、音标打分,就能知道需要对哪个单词、音标加强练习了。以“sit”发音评测为例,反馈结果如下:"words": [ { "fluency": { "score": 68.29714, "rhythm": 68.29714 }, "pronunciation": { "score": 24.714167, "gop": 24.714167 }, "out_of_vocabulary": false, "text": "sit", "text_original": "sit", "text_normalised": [ "sit" ], "score": 46.505653, "start_time": 1.03, "end_time": 1.06, "phonemes": [ { "fluency": { "score": 31.643274, "rhythm": 31.643274 }, "pronunciation": { "score": 16.471563, "gop": 16.471563 }, "start_time": 1.03, "end_time": 1.04, "arpa": "S", "ipa": "s" }, { "fluency": { "score": 87.00653, "rhythm": 87.00653 }, "pronunciation": { "score": 28.179922, "gop": 28.179922 }, "start_time": 1.04, "end_time": 1.05, "arpa": "IH", "ipa": "i" }, { "fluency": { "score": 86.241615, "rhythm": 86.241615 }, "pronunciation": { "score": 29.491013, "gop": 29.491013 }, "start_time": 1.05, "end_time": 1.06, "arpa": "T", "ipa": "t" } ] }, ], }很快我就把小游戏做完了,以口语能力测评为核心玩法,加入了邀请好友再玩一次的分享引导机制,没想到只是从公司公众号上推了一下,朋友圈里居然刷了屏,上线3天,游戏人数就超过了10万人!一次由研发主导的10W+刷屏活动就这样诞生了,谁说研发不懂运营?据了解,目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《华为云一站式API解决方案平台API Explorer上线》华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l 报名地址l 奖项设置API入门学习赛·探险寻宝之旅l 报名地址l 奖项设置
-
上一期故事说到,我成为了公司技术委员会副主席,上任后的第一件事是建立了一个云容器化的研发资料库,把每个研发硬盘里那点“好东西”都复用出来。(详情查看:《无法想象!大龄码农的硬盘里有这么多宝藏》)自此以后,老大交给我的撸代码的活越来越少,让我专心把技术委员会做起来。人一闲下来吧,就容易生事儿,这不么,闲着没事做了一个互动小游戏,运营妹子从公众号上推了张海报,居然成了一场10万人参与的刷屏级活动。 咋回事呢?大概是7月25号,我看到一条新闻,北京2021年高考要增加英语口语考试。妈耶,这也太突然了,这不跟产品经理突然提需求、微博的运维赶上明星突然宣布结婚/分手一样让人猝不及防么。很快,有孩子正上高中的家长都在朋友圈转发了这条消息,这事的关注度这么高啊?总听说运营擅长抓热点,那我是不是也可以做点什么抓住这次热点呢?对于这个政策,家长和学生最关注最需要的是什么?考口语,首先得知道自己的口语水平怎么样,知道短板在哪才能有针对性地补习提高。那就是说需要口语测评!我想起之前在华为云官网上看到过一个“多模态评测”API,能够根据朗读视频数据和试题文本,给朗读者的口语评测分数。我可以利用这个API做一个测评类的H5小游戏。按照我的习惯,实现功能的过程会同步梳理成文档,便于后浪们学习。《多模态英语口语评测》内容来源多模态口语现在还在公测阶段,所以我提前在华为云上申请了公测,当天就公测通过了~(公测链接:https://activity.huaweicloud.com/AI_free0.html?ggw_hd )步骤一:数据准备l 支持的video类型包括avi/mp4/webm/mkv/flv等封装格式,视频清晰度不低于240p,帧率不低于25fps,大小限制在10Ml 支持语言:英式英语l 评测模式:单词评测、句子评测l 需要把视频转化为对应的base64编码上传转化举例(Python)#!/usr/bin/env python # encoding: utf-8 import base64 def ToBase64(file, txt): with open(file, 'rb') as fileObj: image_data = fileObj.read() base64_data = base64.b64encode(image_data) fout = open(txt, 'w') fout.write(base64_data.decode()) fout.close() ToBase64("./test.wav",'2.txt') # 音频文件转换为base64步骤二:构建请求华为云语音交互服务的通用请求方式如下图所示。备注:l 多模态评测API目前处于公测阶段,在华为-北京四可以调用,其Endpoint为“sis-ext.cn-north-4.myhuaweicloud.com”。l 需要确认个人专有华为云项目ID和Token(身份认证)(项目ID获取方法;Token查询方法)获取了身份认证后,就可以填写请求了。假设我现在有一个avi格式的文件,想用单词模式去判断口语质量,我要学习的口语是“sit down”。请求示例是:POST https://{endpoint}/v1/{project_id}/assessment/video Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "config":{ "video_format": "avi", "language": "en_gb", "mode": "word" }, "video_data": "/+MgxAAUeHpMAUkQAANhuRAC...", "ref_text": "sit down" }步骤三:返回结果{ "fluency": { "score": 75.02139, "rhythm": 50.042786, "cohesion": 100.0 }, "pronunciation": { "score": 36.817684, "gop": 36.817684 }, "score": 22.09061, "completeness": 0.0, "duration": 2.46, "words": [此后为音素、音标评价结果,其返回结果见下方]<p style="margin->从返回的结果可以看到:l 从流利度看:流利度评分75.02;连贯性是满分;韵律弱一点,只有50.04分l 从发音看:我的发音质量综合打分(score)是36.82分;发音好坏打分是36.82分l 最后的综合评分:22.09分…哎,还挺准确,我从小英语口语就差…还能进行英语口语练习,从发音嘴型、发音效果纠正口语。通过具体的单一单词、音素、音标打分,就能知道需要对哪个单词、音标加强练习了。以“sit”发音评测为例,反馈结果如下:"words": [ { "fluency": { "score": 68.29714, "rhythm": 68.29714 }, "pronunciation": { "score": 24.714167, "gop": 24.714167 }, "out_of_vocabulary": false, "text": "sit", "text_original": "sit", "text_normalised": [ "sit" ], "score": 46.505653, "start_time": 1.03, "end_time": 1.06, "phonemes": [ { "fluency": { "score": 31.643274, "rhythm": 31.643274 }, "pronunciation": { "score": 16.471563, "gop": 16.471563 }, "start_time": 1.03, "end_time": 1.04, "arpa": "S", "ipa": "s" }, { "fluency": { "score": 87.00653, "rhythm": 87.00653 }, "pronunciation": { "score": 28.179922, "gop": 28.179922 }, "start_time": 1.04, "end_time": 1.05, "arpa": "IH", "ipa": "i" }, { "fluency": { "score": 86.241615, "rhythm": 86.241615 }, "pronunciation": { "score": 29.491013, "gop": 29.491013 }, "start_time": 1.05, "end_time": 1.06, "arpa": "T", "ipa": "t" } ] }, ], }很快我就把小游戏做完了,以口语能力测评为核心玩法,加入了邀请好友再玩一次的分享引导机制,没想到只是从公司公众号上推了一下,朋友圈里居然刷了屏,上线3天,游戏人数就超过了10万人!一次由研发主导的10W+刷屏活动就这样诞生了,谁说研发不懂运营?据了解,目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《华为云一站式API解决方案平台API Explorer上线》华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l 报名地址l 奖项设置API入门学习赛·探险寻宝之旅l 报名地址l 奖项设置
-
引子随着云原生技术的普及,越来越多的企业使用Kubernetes来管理应用,并且集群规模也呈爆发式增长,企业也亟需应对随集群规模增长而带来的各种挑战。同时,为了更好地提供高可用、弹性伸缩的应用,企业也对容器混合云解决方案产生了极大的兴趣。纵观容器混合云市场,主要的云服务提供商纷纷推出了自家的解决方案,例如华为云的MCP、Google的Anthos、Vmware的 Tanzu、IBM的 Cloud Pak、Red Hat的ACM for K8s等等。可以说,当前容器混合云市场纷繁嘈杂、百家争鸣,尽管各厂商不遗余力地鼓吹自家解决方案,但有个不争的事实是在容器混合云领域暂未出现领军产品。混合云市场的乱象源于两点,一是各厂商均嗅到了商机,发现了这一广阔的蓝海市场,急于在这场竞争中抢占先机C位出道;二是开源界暂无统一的事实标准。根据历史规律,后者是解决这一乱象的关键所在,正像Kubernetes终结容器编排领域的纷争一模一样。在开源领域,致力于混合云领域的项目数量与广阔的市场相比,显得极不相称。目前只有Rancher的Fleet、SAP公司力推的Gardener、以及Kubernetes社区的Kubefed。Fleet和Gardener要么缺乏创新,要么格局较低,难成大气,最有可能形成标准的便是被寄予厚望的、也是当前Kubernetes社区唯一的官方项目Kubefed。K8s多集群历史Kubernetes社区早在2015年便发布了集群联邦技术白皮书,并成立了“SIG-Federation”(后更名为SIG-Multicluster)特别兴趣小组致力于多集群领域的研究,该兴趣小组由华为领衔,同时也吸引了包括Google、Redhat在内的一线大厂。SIG-Federation于2016年正式推出官方项目Federation,并在此基础上发展出了Kubefed项目,而且技术架构也发生了较大的变化,因此Federation项目常常被称为Federation V1,而Kubefed则被称为Federation V2。Federation V1架构第一代架构中,引入了Federated API Server,用于增加集群相关API,屏蔽集群差异,统一请求入口,同时提供一个Cluster Controller用于管理多个集群状态、集群级别对象创建,并且Service Controller用来实现跨集群服务发现。整体架构如下图所示:V1架构兼容K8S原生API,从单集群到多集群演进可以变得很自然,但它也有几个不得不面对的缺陷。• 集群信息嵌入原生API的Annotation中(如下图所示),会导致原生API体积膨胀而丑陋;• 没有集群生命周期管理特有API,导致其生命周期管理能力无法扩展;• 无法提供API对象版本控制,比如Deployment在K8S为GA,但在Federation中可能仍是Beta;Federation V2架构在第二代架构中,利用CRD来提供独立的API对象,新的API来封装K8S原生对象,同时也可以方便的对新增API提供版本管理。整体架构如下图所示:随架构升级,Federation项目也更名为Kubefed。在新的架构中,Kubefed提供两种配置类型:• Type configuration(类型配置): 定义Kubefed接管的K8S的资源类型• Cluster configuration(集群配置): 定义Kubefed接管的K8S集群在类型配置中有三个关键的概念,用于控制资源向拖管集群分发策略:• Templates(模版):定义一个原生的K8S资源类型;• Placement(安置):定义资源将分发的集群;• Overrides(修正):针对集群自由修正资源;一个典型的Secret配置如下图所示:apiVersion: types.kubefed.io/v1beta1 kind: FederatedSecret metadata: name: test-secret namespace: test-namespace spec: template: data: A: YWxhIG1hIGtvdGE= type: Opaque placement: clusters: - name: cluster2 - name: cluster1 overrides: - clusterName: cluster2 clusterOverrides: - path: /data value: A: null上述配置中,通过template指定原生资源属性,通过placement指定资源将分发到cluster1 和 cluster2集群,最后overrides指示了分发到cluster2集群时,消除Secret的data信息。K8s多集群现状KubeFed的问题Kubernetes社区当前已将Federation (v1)项目关闭,着重发展Kubefed,但该项目尚停留在beta阶段,社区开发几乎停滞,作为社区官方项目在该领域中的领导地位也在逐渐减弱。Kubefed项目最大的问题是使用了非Kubernetes原生API来管理用户应用部署,用户必须先改造既有的工作流程才可迁移到Kubefed提供的API,这不仅抬高了使用门槛,而且Kubefed为每种资源类型均提供了CRD API,种类繁多的API也增加了用户的学习成本。某位社区致力于多集群管理的架构师坦言:“Kubefed项目强制用户使用非原生API,这个错误的决定很大程度上导致了它的发展不如预期。”另外,多集群管理场景中,应用的多集群分发与监控应该是最基本的诉求,而Kubefed只完成了应用分发,对于应用的运行状态缺乏监管。用户使用Kubefed分发应用只能看到应用是否分发成功,对于应用运行状态,用户仍需要遍历集群分别获取。对用户使用造成了极大的不便。K8s多集群管理标准化工作当前Kubernetes社区针对Kubefed相关问题已经进行了多次讨论,目前多集群管理相关标准制定工作主要围绕在跨集群服务发现和工作负载配置管理,这两块也是实现多集群应用管理最基础的功能部分。a.多集群Service API在多集群应用背景下,用户已经习惯于将应用分发到多个集群,但对于Service应用而言,集群是个硬性障碍,运行于集群中的工作负载无法高效地访问其他集群中暴露的服务。多集群Service API旨在提供解决这个问题的标准,它主要包括:1)定义一组API支持跨集群的Service服务发现和消费;2)集群中应用跨集群访问Service行为与本集群一致;该Service API提供ServiceExport对象表示单个集群中需要暴露到多集群的Service:// ServiceExport declares that the associated service should be exported to // other clusters. type ServiceExport struct { metav1.TypeMeta `json:",inline"` // +optional metav1.ObjectMeta `json:"metadata,omitempty"` // +optional Status ServiceExportStatus `json:"status,omitempty"` }每个需要暴露给其他集群的Service均对应一个ServiceExport对象。此外,Service API还提供了ServiceImport对象,表示跨集群的Service定义:// ServiceImport describes a service imported from clusters in a supercluster. type ServiceImport struct { metav1.TypeMeta `json:",inline"` // +optional metav1.ObjectMeta `json:"metadata,omitempty"` // +optional Spec ServiceImportSpec `json:"spec,omitempty"` // +optional Status ServiceImportStatus `json:"status,omitempty"` }该Service API 提案已被社区接纳,该提案只定义了跨集群Service的声明方式,并没有对其实现细节进行约束,可以想见,将来会有多种具体的解决方案被提出。b.多集群工作负载模型关于联邦应用如何在多集群中分发,SIG-Multicluster也在进行尝试一种与现有Kubefed不同的处理思路。Kubefed当前从一系列FederatedXXX配置中剥离出Kubernetes原生应用分发到多集群,而新的尝试是提供一个通用的ManifestWork对象封装所有的应用,如下API设计:// ManifestWork represents a manifests workload that hub wants to deploy on the managed cluster. // A manifest workload is defined as a set of kubernetes resources. // ManifestWork must be created in the cluster namespace on the hub, so that agent on the // corresponding managed cluster can access this resource and deploy on the managed // cluster. type ManifestWork struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` // Spec represents a desired configuration of work to be deployed on the managed cluster. Spec ManifestWorkSpec `json:"spec"` // Status represents the current status of work // +optional Status ManifestWorkStatus `json:"status,omitempty"` }与Kubefed为每种应用类型均提供一个FederatedXXX 类型相比,这种新型的工作负载API则显得更加简单和通用。未来展望K8s多集群技术是容器混合云/多云解决方案的核心技术领域,涉及到资源、应用、数据、流量多个层面,以及统一配置、注册、可视化、自动弹性等多个功能领域。目前开源业界包括K8s社区的KubeFed项目、以及现有市面上的各种产品与解决方案都没有能够覆盖完整的多集群技术领域。华为云MCP容器多云平台在K8s多集群技术领域属于较早也是实现较为全面的产品,而同时华为云作为KubeFed社区项目的发起者与领导者,将在未来致力于完善现有KubeFed的功能集,并且实现K8s多集群技术的标准化。下图描述了K8s多集群技术的全景,目前华为云已经在KubeFed自身以及周边关联的多个技术领域开展了相关工作。转载自:华为云开发者论坛
-
AI人脸识别&探险寻宝参与API从入门到进阶的学习挑战不仅自己参赛可以得奖,邀请好友还有超级大奖你不来吗?——>>华为云API入门学习赛·AI人脸识别你不带着同桌的TA们一起来吗?第二阶段获奖名单公布:(12月1日) >>请获奖者点击填写收件信息收集问卷:https://devcloud.huaweicloud.com/expert/open-assessment/qtn?id=8b6598cd79494dadb699254e298b2ce7&utm_source=api备注:发放奖品以获奖名单中的华为云账号为准,请用获奖华为云账号登录本问卷,确保信息一致。获奖信息收集截止日期:12月7日8点。注意:此次获奖者不参与下一阶段的奖项评选。1、【华为云API入门学习赛·AI人脸识别赛】参赛有奖-幸运奖2、【华为云API入门学习赛·AI人脸识别赛】分享有奖-幸运奖3、【华为云API入门学习赛·AI人脸识别赛】邀请奖-邀请参赛奖(以上奖品随机发放,如遇库存不足将自动调换为同等价位的奖品,感谢大家支持)第三阶段赛事将于2021年1月重新开启,相应的奖项设置及规则也将在赛事启动时在本帖公布,请持续关注。请务必加入QQ群,赛事重要信息、获奖名单、培训信息等内容均统一在群内公布。=========【奖项介绍】参赛赢好礼========== 一、奖项设置(第二阶段:10.1-11.30)【参赛有奖-幸运奖】奖项规则:从报名参赛且提交作品的选手中抽取20名幸运奖,每人获得华为mini蓝牙音箱1台。【分享有奖-幸运奖】奖项规则:从报名参赛且提交分享帖的选手中抽取10名幸运奖,每人获得华为mini蓝牙音箱1台。分享帖内容围绕参赛心得、操作过程中的问题及如何解决、在参赛过程中的学习所得等展开,直接复制已给出的操作步骤截图者视为无效分享内容。形式不限,可以是文章、视频等。文章、视频提交方式:以在论坛发布帖子的方式提交分享作品,并将帖子链接回复到本帖。【邀请奖-邀请参赛奖】(每阶段按实际达成目标人数发放,数量有限,先到先得)奖项规则:所有报名参赛选手都可生成自己的专属报名链接邀请朋友参赛并完成作品提交。按邀请人数梯度发放奖品。邀请参赛奖互相独立,以实际邀请成功人数获得对应奖品,不累计重复领奖。例如:邀请成功人数为60人,则可获得“华为mini蓝牙音箱”1个。注意:有效的被邀请人需要满足两个条件:1、通过邀请者专属报名链接/二维码报名大赛;2、完成作品提交。【超级激励奖】奖项规则:邀请1000人报名比赛并且提交作品(重复提交作品视为无效)。12月7日前公布获奖名单,奖项设置1名,获奖者获得HUAWEI P40手机1部,先到先得。(以上奖品图片仅供参考,以实际发放为准,如遇库存不足将自动调换为同等价位的奖品,感谢大家支持)二、如何获得邀请激励(划重点!!!)路径:进入大赛页面——>“立即报名”——>点击“立即分享”——>生成专属链接/二维码——>转发给要邀请的人,提示需要完成作品提交——>等待论坛(本帖)公布获奖名单1、点击活动报名链接>>华为云API入门学习赛·AI人脸识别,或直接扫描下方二维码,“立即报名”2、报名成功后,点击报名按钮下方“立即分享”,即可生成你的专属链接/二维码三、获奖名单公布规则1、邀请人数由系统后台统计,每月晾晒一次排名,每阶段获奖名单将在本帖公示,建议收藏,敬请期待~)。2、本活动需要用户正常报名大赛并提交作品,同一电话号码的账号视为同一个用户,使用非正常途径或手段(如写脚本刷接口等方式)获得的奖励无效,且一旦发现作弊行为,华为云开发者社区将取消对应人员的获奖资格、冻结违规账号,已兑换的礼品也不予发放。3、获奖名单将于本帖置顶公示,第一阶段获奖者奖品已发放。第二阶段获奖名单已公布>>请获奖者点击填写收件信息收集问卷:https://devcloud.huaweicloud.com/expert/open-assessment/qtn?id=8b6598cd79494dadb699254e298b2ce7&utm_source=api备注:发放奖品以获奖名单中的华为云账号为准,请用获奖华为云账号登录本问卷,确保信息一致。获奖信息收集截止日期:12月7日8点。4、获奖名单公示的同时会公布兑奖信息反馈的截止时间,截止日未反馈的选手视为放弃。5、活动报名链接>>>华为云API入门学习赛·AI人脸识别(最终解释权归华为所有)
-
公司开完年中会后,大家的工作都开始恢复正常,我们也继续按部就班地撸代码(写bug)~偶尔透过办公室的玻璃看到老大跟老板在喝茶,感觉自从上次我影响了公司的战略方向(详情请查看上集:《半天搞定百万条手机号归属地查询,竟影响了公司战略方向!》),老板找老大“聊天”的次数越来越多了,看起来像是在“密谋”什么。 正想着呢,老大突然转头看向我,四目相对还是有些尴尬的,更尴尬的是老大举了举手里的杯子,示意我过去。 满脑袋问号的我推开老大办公室的门,坐在了老板旁边,老大说:“公司想成立一个技术委员会,我挂名主席,你担任副主席,负责管理,核心的职责是沉淀公司的技术资产,提升所有研发人员的能力,你去想想该怎么行动。” “啥?我这就是技术委员会副主席了?沉淀公司技术资产...这事儿该咋整呢?啥叫技术资产?”回到座位以后,我仿佛又变回了曾经那个会怦然心动的少年,随手点开硬盘,看到了我这么多年积累下来的资源。 在我的硬盘里存储了这么多年来写过的各种程序、应用、工具,啥叫技术资产,这就叫技术资产呀,如果把公司存储的资料和大家硬盘里的宝藏都拿出来,做成一个可复用且随时可调用的工具库,那可以少写多少代码呀。可是这该怎么实现呢?有了!之前在华为云官网上看到过一个CCE云容器引擎。我们可以把建立的工具库做成云容器化应用,用CCE引擎,通过API网关调用云容器引擎中的容器应用。这样一来,不仅顺应了云原生的发展趋势,还能随时弹性扩容,满足公司规模化发展的需求。说干就干,先给老大写个方案。我把思路写完之后,重点写了使用API网关访问CCE云容器引擎中的容器应用的方法,毕竟,最终还是为了在工作中使用到这些技术资产。通过API网关访问CCE中的工作负载的方法。(内容来源)一、准备CCE工作负载信息在通过API网关将容器的工作负载对外开放前,需要在CCE服务控制台获取如下图所示信息,创建好集群和工作负载。注意工作负载的访问方式,需配置为“节点访问”。1、查询访问端口2、查询工作负载中实例所属弹性服务器的名称二、创建VPC通道1、登录控制台,进入API网关服务。2、“创建VPC通道”的“基本信息”界面,单击“创建快速通道”,输入如图所示信息,其他参数保持默认值。3、添加需要通过API网关访问的CCE工作负载的实例节点。可添加多个实例,API网关支持负载均衡功能。点击“完成”,添加VPC通道。三、开放API1、创建分组2、创建API。在“新建API”的“基本信息”界面,输入如下图所示信息。在“定义API请求”界面,输入如下图所示信息。在“定义后端服务”界面,输入如下图所示信息。在“返回结果基础定义”界面,输入“成功响应示例”,在本示例中,输入内容仅供参考,无实际作用。单击“完成”,完成API的创建。3、调试API。返回200,表示调用成功。4、发布API四、调用API1、在API详情界面,复制“API URL”。2、打开浏览器,在地址栏粘贴“API URL”的地址。请求API成功时,显示如下界面。如果想要设置一段时长内API的调用次数,请设置流控策略。 老大看过方案后很满意,并且要把这件事作为技术委员会成立后的第一个重点项目去做,申请专门的项目基金,还要给我成立项目小组,让我带着团队一起完成。现在的我:看向远方,目光坚定,嗯是时候表现真正的技术了~据了解,目前APIG网关开放了共享版和专享版两个版本,开发者可申请体验demo,进入共享版进行体验操作。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l 报名地址l 奖项设置API入门学习赛·探险寻宝之旅l 报名地址l 奖项设置
-
事情是这样的,公司成立了一个新项目,要给项目建官网,并搭建一个web服务器。按照我的习惯,搭建一个本地虚拟机就好了,部署简单方便还好配置,云服务器嘛,写了10年代码,还是不习惯那玩意儿。我这刚开始动手,就看见实习生屁颠屁颠地跑过来,我心想这小子肯定是想来学虚拟机搭建部署的,这么简单的事都不会,真是白瞎了他那985的学校了。可是...万万没想到啊,小实习生跑到我老大那里邀功去了!!!远远地听见他说:“公司新项目跑在云服务器上了,以后可以根据访问量随时进行弹性扩展,安全稳定还快。”啥?云服务器?这小子居然会配置云服务器?听完汇报,老大看向了我,带着小实习生往我这边走过来……“哼,叫你邀功,撞枪口上了吧,我就说云服务器配置没那么容易,还不是得来找我~”这么想着有点得意,老大走过来拍拍我的肩膀,说:“你跟他学一下怎么配置云服务器,别再用虚拟机了,以后都是麻烦事。”我...他...让我跟一个实习生学???实习生冲我微微一笑,就走了,没过一会扔给我一份文档,上面写着:“创建弹性云服务器流程详解”。打开粗略扫了一眼,代码都直接贴上来了?瞧不起谁?感觉有被冒犯到。技术人嘛,看到代码还是没忍住跑一遍,等我发现bug或跑不通,再给他上上课!结果……真香。内容是这样的:通过API创建云服务器的9个步骤(以指定镜像方式创建云服务器为例)(内容来源)步骤一:确定待创建云服务器所在的可用区。1、查询可用区。(1)接口相关信息URI格式:GET /v2.1/{project_id}/os-availability-zone(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-availability-zone(3)响应示例 { "availabilityZoneInfo": [ { "hosts": null, "zoneState": { "available": true }, "zoneName":"zone_01" }, { "hosts": null, "zoneState": { "available": true }, "zoneName": "zone_01" } ] }2、根据实际需要选择可用区,并记录可用区的zoneName。步骤二:确定待创建云服务器的规格。1、查询云服务器规格信息。(1)接口相关信息URI格式:GET/v2.1/{project_id}/flavors/detail{?minDisk,minRam,is_public,sort_key,sort_dir}其中,“?”后的字段为查询规格时可选的查询检索参数。(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/flavors/detail(3)响应示例{ "flavors": [ { "name": "c1.2xlarge", "links": [ { "href": "https://xxx/v2.1/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge", "rel": "self" }, { "href": "https://xxx/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge", "rel": "bookmark" } ], "ram": 8192, "OS-FLV-DISABLED:disabled": false, "vcpus": 8, "swap": "", "os-flavor-access:is_public": true, "rxtx_factor": 1, "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 0, "id": "c1.2xlarge" } ] }2、根据实际需要选择规格,并记录规格的ID。步骤三:确定待创建云服务器使用的镜像。1、查询镜像。(1)接口相关信息URI格式:GET /v2.1/{project_id}/images/detail(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/images/detail(3)响应示例{ "images": [ { "OS-EXT-IMG-SIZE:size": 0, "metadata": { "__os_type": "Linux", "hw_vif_multiqueue_enabled": "true", "__imagetype": "gold", "__quick_start": "true", "virtual_env_type": "FusionCompute", "__support_xen": "true", "__support_kvm": "true", "__image_source_type": "uds", "__platform": "EulerOS", "__os_version": "EulerOS 2.2 64bit", "__os_bit": "64", "__isregistered": "false" }, "created": "2018-05-14T06:13:50Z", "minRam": 0, "name": "DBS-MySQL-Image_2.1.3.3", "progress": 100, "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4" }, { "rel": "alternate", "href": "https://None/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4", "type": "application/vnd.openstack.image" } ], "id": "11e8f727-d439-4ed1-b3b8-33f46c0379c4", "updated": "2018-05-14T06:13:52Z", "minDisk": 40, "status": "ACTIVE" } ] }2、根据需要选择镜像,并记录镜像ID。步骤四:确定云服务器的网络信息。1、查询网络。(1)接口相关信息URI格式:GET /v2.1/{project_id}/os-networks(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-networks(3)响应示例{ "networks": [ { "id": "07a9557d-4256-48ae-847c-415a9c8f7ff6", "label": "b_tt3_td1b", "broadcast": null, "cidr": null, "dns1": null, "dns2": null, "gateway": null, "netmask": null, "cidr_v6": null, "gateway_v6": null, "netmask_v6": null } ] }2、根据需要选择网络,并记录网络ID。步骤五:设置密钥对登录方式。如需设置为密码登录方式,请直接跳转至步骤七。1、创建密钥对。(1)接口相关信息URI格式:POST /v2.1/{project_id}/os-keypairs(2)请求示例POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-keypairsBody:{ "keypair": { "type": "ssh", "name": "demo1", "user_id": "fake" } }(3)响应示例{ "keypair": { "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrR5Gcwlh5ih7JOvzIUuQxS5qzWWPMYHeDXkDKSQ9W5pumOV05SiO3WCswnaQ5xMdOl31mNiHtwlwq9dJi7X6jJBB2shTD+00G5WuwkBbFU4CLvt1B44u0NUiaTJ35NAvW2/4XvpXm9OwiQ3B5ge6ZY7Esi38Unh+pkbhPkYxNBCK8yoOlojQhWs75abdxZBi811/8RwLcNiFiocA2RGxtRjBdpEScj+1TU+OcfZdQnr0AFbO11z7yxfIygwwzVTgUuJNbMbKHStQqRbklfMlHY4RBPQgb7RN/YaXKTQSXT84k+D9xlDNo7Wj4fwOJTOz/s/PvbIOqjRHt9D6Y4IKd Generated-by-Nova\n", "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAq0eRnMJYeYoeyTr8yFLkMUuas1ljzGB3g15AykkPVuabpjld\nOUojt1grMJ2kOcTHTpd9ZjYh7cJcKvXSYu1+oyQQdrIUw/tNBuVrsJAWxVOAi77d\nQeOLtDVImkyd+TQL1tv+F76V5vTsIkNweYHumWOxLIt/FJ4fqZG4T5GMTQQivMqD\npaI0IVrO+Wm3cWQYvNdf/EcC3DYhYqHANkRsbUYwXaREnI/tU1PjnH2XUJ69ABWz\ntdc+8sXyMoMMM1U4FLiTWzGyh0rUKkW5JXzJR2OEQT0IG+0Tf2Glyk0El0/OJPg/\ncZQzaO1o+H8DiUzs/7Pz72yDqo0R7fQ+mOCCnQIDAQABAoIBAA6/c9dGmK2mae4z\nyQ5KrOFdvC1TNhej+sZx+CwyzEJUSvSuHcvQCXFBAz8FY92hhvPKcX66jINXZ+4/\nCmWAQ5YyhcRiow0Y91HvsS0bywoknX3q6kxBFodmyyCWFkgd5iMTADb1Lx0a27Y7\njlS4Dl5gyiGmxUN2Ng24wWEAjE8ZNuI0lrtr5IZKp+s5IAi/rb5AG/mL7EzicE8c\nmGP+QAa+nzwhAwNhFwVID230xen/ZcoL1d77hxeARNqJUxoR25gwJd6Ebg2y9pDW\nVu6cbbzgdGUCfQYlMEoAamAkCswOsDpVDBXwQnt2A537n6Wq2bgYIKusHr9thtxP\n/5ubQLUCgYEA4zYuBG2vtLHnvce26P8o2j1xcJS9K0ozkah9JFl3hqFN0sAqLlz7\n/Fm1jA4kzHJS3d0UqP3AMDxY3HkIqCn4Be7lqeAAe2AfqkOZpt9MDNv4VwKe9sPb\nViW1qjL3FxziLC/YWTRNSlpwRjqJJGhA+UQt8rOia1k/zXmrEs7bXLcCgYEAwPsu\nK3j5QoAiziYVMYf5iCzWwAM9Ljpf9gw23lefTdIzhhfFtJplVRSyxRGU0UZ84GMI\nTd5zmcIF/1KUfhqmeiQzz6NIPEYEReahjpQ/sOH/Gk5Rwr3QwYPrwAu5x+kk/SRi\nKPkqw7APTR0sMQBcUq+ZYwGYLGPMdd1zUdLfb0sCgYBkuz11iydtxb3G/obSD2WO\nM9VaIycmzRPFzNwGRH/gOR0mhTluKp0wyJjbSd34oeqpH/2r2ivddrOysxoqa8jg\n4IQDZyLvj7MaKjQxrieqP89+y9Or9TMFo1xB46x2G8EN8/xHuA9YGnZSPFtWv72m\nhRqV0hv82amWsA0vHnRUSwKBgDsKHXvrTMbNkNhkykMXCH5iyWiBFSyZa1ZJMlgf\nknsqfdzeVPwF6E55QKAN2uuTlwzG/3ljPxahR1hvmUJjQN9JSBiUKbtW6GPCRVbr\nf/jLi1Iu99COZdluVKeybqn8Z/aSNP24DR9FM8kxzZ1IMPaTBmhFypp6BclhcLBt\nxTG1AoGAfcrkVbV1SOy7fECUtMpUECcw0yU4GWj3sR2RbII63C500RVYQlUpUaRR\naANbASHTVR4myOKtGSxEUhAQHlxFDwsDL7W3gzAqTFbEDp1xAAUyT/nkOAhQjEm4\nORFdDETeXLQG1KMUj+8AdnhfYp3JTdft6rmPpZEBUFiCAUMAvb0=\n-----END RSA PRIVATE KEY-----\n", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "demo1", "fingerprint": "57:a7:a2:ed:5f:aa:e7:54:62:2e:bb:e7:92:22:cb:40" } }2、导入密钥。(1)接口相关信息URI格式:POST /v2.1/{project_id}/os-keypairs(2)请求示例POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-keypairsBody:{ "keypair": { "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh3lxL8MM61gyfpKzeKkwkEpSFj27Rgh6zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n", "type": "ssh", "name": "demo2", "user_id": "fake" } }(3)响应示例{ "keypair": { "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh3lxL8MM61gyfpKzeKkwkEpSFj27Rgh6zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "demo2", "fingerprint": "dd:44:45:49:d9:f6:4f:c0:24:2d:81:aa:c4:4b:83:c2" } }2、 记录响应消息体中的name信息。如本例中为“demo2”。步骤六:创建密钥对登录鉴权的云服务器。(1)接口相关信息URI格式:POST /v2.1/{project_id}/servers说明: 本示例是指定image创建云服务器,因此:l block_device_mapping_v2.1中,“source_type”需设置为“image”,“uuid”设置为选择的镜像ID,“destination_type”设置为“volume”,“boot_index”设置为“0”。l “volume_size”应大于等于镜像元数据中指定的最小值。(2)请求示例POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/serversBody:{ "server": { "flavorRef": "c1.large", "name": "zttestvm1", "block_device_mapping_v2.1": [{ "source_type": "image", "destination_type": "volume", "volume_type": "SATA", "volume_size": "40", "delete_on_termination": "true", "uuid": "11e8f727-d439-4ed1-b3b8-33f46c0379c4", "boot_index": "0" }], "networks": [{ "uuid": "fb68519f-a7c0-476e-98d4-2e4cf6de6def" }], "key_name": "demo2", "availability_zone": "az_test_01" } }(3)响应示例{ "server": { "security_groups": [ { "name": "default" } ], "OS-DCF:diskConfig": "MANUAL", "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077" } ], "id": "6d311127-bce1-48db-bf0f-cac9f8f7f077", "adminPass": "WcC4QoVZPXpV" } }步骤七:设置密码登录方式。(1)使用非cloud-init镜像创建云服务器时,Windows和Linux系统都使用“adminPass”参数实现密码注入。(2)使用cloud-init镜像创建云服务器时:l 对于Linux系统,只能使用“user_data”进行密码注入,“user_data”字符串长度小于65535,且必须是base64加密的;l 对于Windows系统,只能通过元数据“admin_pass”进行密码注入。步骤八:创建密码方式登录鉴权的弹性云服务器。说明: 本示例是指定image创建弹性云服务器,因此:1. block_device_mapping_v2.1中,“source_type”需设置为“image”,“uuid”设置为选择的镜像ID,“destination_type”设置为“volume”,“boot_index”设置为“0”。2. “volume_size”应大于等于镜像元数据中指定的最小值。1、创建非cloud-init镜像、密码方式登录鉴权的弹性云服务器。(1)接口相关信息URI格式:POST /v2.1/{project_id}/servers(2)请求示例POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/serversBody:{ "server": { "flavorRef": "c1.large", "name": "zttestvm1", "adminPass":"NOVAGLANCEI@123", "block_device_mapping_v2.1": [{ "source_type": "image", "destination_type": "volume", "volume_type": "SATA", "volume_size": "40", "delete_on_termination": "true", "uuid": "11e8f727-d439-4ed1-b3b8-33f46c0379c4", "boot_index": "0" }], "networks": [{ "uuid": "fb68519f-a7c0-476e-98d4-2e4cf6de6def" }], "availability_zone": "az_test_01" } }(3)响应示例{ "server": { "security_groups": [ { "name": "default" } ], "OS-DCF:diskConfig": "MANUAL", "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/73991cff-37c6-491a-9a8a-377397729fce" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/73991cff-37c6-491a-9a8a-377397729fce" } ], "id": "73991cff-37c6-491a-9a8a-377397729fce", "adminPass": "NOVAGLANCEI@123" } }2、创建cloud-init镜像(以Linux为例)、密码方式登录鉴权的弹性云服务器。(1)接口相关信息URI格式:POST /v2.1/{project_id}/servers(2)请求示例POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/serversBody:{ "server": { "flavorRef": "c1.large", "name": "zttestvm2", "user_data":"IyEvYmluL2Jhc2gKZWNobyAncm9vdDokNiRuaERlcUIkajBkelVMbkFrbWo4bWlFREFzT0VONkVPdGg1RmdqWnQybUVWZVRocC5OVDJXelZVdzFuNzhnL3dNdDE0dVpSQ1V3LzhHS3VGdEViQ0lPQS5vN1BZQzEnIHwgY2hwYXNzd2QgLWU7", "block_device_mapping_v2.1": [{ "source_type": "image", "destination_type": "volume", "volume_type": "SATA", "volume_size": "40", "delete_on_termination": "true", "uuid": "11e8f727-d439-4ed1-b3b8-33f46c0379c4", "boot_index": "0" }], "networks": [{ "uuid": "fb68519f-a7c0-476e-98d4-2e4cf6de6def" }], "availability_zone": "az_test_01" } }(3)响应示例{ "server": { "security_groups": [ { "name": "default" } ], "OS-DCF:diskConfig": "MANUAL", "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/7c11f362-cc96-4306-85b6-b432a639ca5e" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/7c11f362-cc96-4306-85b6-b432a639ca5e" } ], "id": "7c11f362-cc96-4306-85b6-b432a639ca5e", "admin_pass": "J3xMSivHCuq5" } }步骤九:确认云服务器创建成功。(1)接口相关信息URI格式:GET /v2.1/{project_id}/servers/{server_id}(2)请求示例GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6其中:0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6为创建的云服务器UUID。(3)响应示例{ "server": { "tenant_id": "74610f3a5ad941998e91f076297ecf27", "addresses": { "2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68": [ { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:88:01:1b", "OS-EXT-IPS:type": "fixed", "addr": "192.168.2.192", "version": 4 } ] }, "metadata": {}, "OS-EXT-STS:task_state": null, "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone": "az_test_01", "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6" } ], "OS-EXT-STS:power_state": 1, "id": "0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6", "os-extended-volumes:volumes_attached": [ { "id": "b551445a-e749-4d53-932a-638a455cb6c3" } ], "OS-EXT-SRV-ATTR:host": "pod1_test_01", "image": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4" } ], "id": "11e8f727-d439-4ed1-b3b8-33f46c0379c4" }, "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "created": "2018-05-25T01:47:11Z", "hostId": "b2792bef989888d2df1f51bff81de5ac58a4117f4e9ec3059c1a0410", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova001@36", "key_name": null, "flavor": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/c1.large" } ], "id": "c1.large" }, "security_groups": [ { "name": "default" } ], "config_drive": "", "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:instance_name": "instance-001883cd", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "zttestvm1", "progress": 0, "OS-SRV-USG:launched_at": "2018-05-25T01:47:55.755922", "updated": "2018-05-25T01:47:55Z", "status": "ACTIVE" } }按照步骤指示,我很快完成了云服务器的搭建,不禁有些惊讶,这小子怎么懂这么多?等等...华为云API Explorer?打开华为云API Explorer的官网(点击“阅读原文”),我好像打开了新世界的大门,有很多已配置好的环境和接口,直接调用调试就可以了,以后怕是没有什么能够难住我了!目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《华为云一站式API解决方案平台API Explorer上线》据悉,华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l 报名地址l 奖项设置API入门学习赛·探险寻宝之旅l 报名地址l 奖项设置
-
最近10年,大数据、AI、云计算、区块链、物联网等新技术的发展速度越来越快,我们也看到了越来越多的团队将这些新技术应用落地,开发出很多非常实用的创新性底层程序。目前,很多企业的应用开发都深度依赖于API之间的相互调用,以支持新产品和服务的按时交付。API 不仅仅是面向应用开发人员和数据科学家的基本工具。借助它们,企业可以通过易于获取的标准和便捷的平台共享数据和应用,API代表了业务模式创新的新形式,帮助不同规模的企业省去高昂的经济成本实现更多创新。l 通过API,你可以快速接入人脸识别、图像识别、文字识别等应用程序,大大节省自主研发的时间与人力;l 通过API,你可以快速查询和管理云服务器、云容器、云硬盘、云监控等服务,提升研发工作效率;l 通过API,你可以快速实现通讯会议、视频点播、对话机器人等功能,告别传统开发,快速实现成熟应用能力;l ……现在,API产品的数量和品类已经覆盖各类功能创新诉求,利用API能够快速将大数据、AI、云计算、区块链技术应用到你的产品中。未来,API 将成为创新的加速器,互联互通的枢纽。但,90%的软件研发从业者对当前API产品所能提供的能力知之甚少。 所以,它来了!《华为云API精选手册》收录了30个API应用,覆盖企业应用、EI企业智能、基础服务等多个应用领域,点击手册中的链接或识别二维码即可快速调用相应API产品。附件《华为云API精选手册》限时免费领取。
-
公司开完年中会后,大家的工作都开始恢复正常,我们也继续按部就班地撸代码(写bug)~偶尔透过办公室的玻璃看到老大跟老板在喝茶,感觉自从上次我影响了公司的战略方向,老板找老大“聊天”的次数越来越多了,看起来像是在“密谋”什么。详情回顾:《半天搞定百万条手机号归属地查询,竟影响了公司战略方向!》正想着呢,老大突然转头看向我,四目相对还是有些尴尬的,更尴尬的是老大示意我过去。老大说:“公司想成立一个技术委员会,我挂名主席,你担任副主席,负责管理,核心的职责是沉淀公司的技术资产,提升所有研发人员的能力,你去想想该怎么行动。”“啥?我这就是技术委员会副主席了?沉淀公司技术资产...这事儿该咋整呢?啥叫技术资产?”回到座位以后,我仿佛又变回了曾经那个会怦然心动的少年,随手点开硬盘,看到了我这么多年积累下来的资源。 在我的硬盘里存储了这么多年来写过的各种程序、应用、工具,啥叫技术资产,这就叫技术资产呀,如果把公司存储的资料和大家硬盘里的宝藏都拿出来,做成一个可复用且随时可调用的工具库,那可以少写多少代码呀。可是这该怎么实现呢?有了!之前在华为云官网上看到过一个CCE云容器引擎。我们可以把建立的工具库做成云容器化应用,用CCE引擎,通过API网关调用云容器引擎中的容器应用。这样一来,不仅顺应了云原生的发展趋势,还能随时弹性扩容,满足公司规模化发展的需求。 说干就干,先给老大写个方案。我把思路写完之后,重点写了使用API网关访问CCE云容器引擎中的容器应用的方法,毕竟,最终还是为了在工作中使用到这些技术资产。通过API网关访问CCE中的工作负载的方法点击查看内容来源 一、准备CCE工作负载信息在通过API网关将容器的工作负载对外开放前,需要在CCE服务控制台获取如下图所示信息,创建好集群和工作负载。注意工作负载的访问方式,需配置为“节点访问”。1、查询访问端口2、查询工作负载中实例所属弹性服务器的名称二、创建VPC通道1、登录控制台,进入API网关服务。2、“创建VPC通道”的“基本信息”界面,单击“创建快速通道”,输入如图所示信息,其他参数保持默认值。3、添加需要通过API网关访问的CCE工作负载的实例节点。可添加多个实例,API网关支持负载均衡功能。点击“完成”,添加VPC通道。三、开放API1、创建分组2、创建API。在“新建API”的“基本信息”界面,输入如下图所示信息。在“定义API请求”界面,输入如下图所示信息。在“定义后端服务”界面,输入如下图所示信息。在“返回结果基础定义”界面,输入“成功响应示例”,在本示例中,输入内容仅供参考,无实际作用。单击“完成”,完成API的创建。3、调试API。返回200,表示调用成功。4、发布API四、调用API1、在API详情界面,复制“API URL”。2、打开浏览器,在地址栏粘贴“API URL”的地址。请求API成功时,显示如下界面。如果想要设置一段时长内API的调用次数,请设置流控策略。——分割线——老大看过方案后很满意,并且要把这件事作为技术委员会成立后的第一个重点项目去做,申请专门的项目基金,还要给我成立项目小组,让我带着团队一起完成。现在的我:看向远方,目光坚定,嗯是时候表现真正的技术了~ 据了解,目前APIG网关开放了共享版和专享版两个版本,开发者可申请体验demo,进入共享版进行体验操作。【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~API入门学习赛·AI人脸识别l 报名地址l 奖项设置API入门学习赛·探险寻宝之旅l 报名地址l 奖项设置
-
1、VIS服务API使用--通过IAM获取Token后,调用VIS的API报错VIS.0012、VIS服务API使用--通过IAM获取Token后,调用VIS的API报错APIGW.0301
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
回顾中
热门标签