• 【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播
    最近几个月,我的变化其实还蛮大的,从一个被实习生“无视”的“前浪”,转变成了不仅能够解决技术问题还能解决业务问题(顺手还能帮实习生解决恋爱问题)的“前辈”。前面几期故事记录了我的高光时刻,有兴趣可以点击前文查看(https://bbs.huaweicloud.com/forum/forum-1104-1.html)。 公司的短视频项目上线之后一直不温不火,老板挺着急,运营部提出要在6月底组织一次千人直播带货活动,邀请1千个主播同时在短视频平台上开直播,拉用户和流量。 千人同时在线直播,短视频平台的目标访问量在百万级以上,需要技术部门保证高并发流量下服务器的稳定。这个好办,华为云弹性云服务器是可以随时扩容的,经过部门研究,我们给出的技术方案是临时创建100台云虚拟机来支撑这次活动。 这个任务又光荣地落到了我的身上,谁让我是公司公认的云服务器专家呢…可离直播活动落地只有一个星期的时间了,还要留出时间进行压测。“通过API可以批量处理弹性云服务器,但我现在一个个接口封装也来不及啊!而且根据我的经验,还得提前做好随时扩容的准备,能够支持比预估目标更高的流量,得赶紧想想除了API还有什么可以用……”我心里有点着急了。 习惯性地打开华为云官网,在首页发呆了1分钟,一道灵光闪过:操作简单,可以快速控制批量资源,这可不就是SDK的特性吗!说来就来,我很快就有了思路:先快速创建100台按需计费的弹性云服务器作为直播支撑,在直播完成后,再对这些弹性云服务器进行释放。 打开API Explorer(https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview?utm_source=apiwz&utm_medium=read )快速浏览,确认我需要用到的接口是CreatePostPaidServers 、 ListServerDetails 和DeleteServers。 万万没想到,这个设计还真起到了救急的作用! 直播开始前1个小时,运营部门突然反馈,这次活动的推广效果大大超出预期,峰值流量可能是预期目标的10倍!这将给网站访问带来很大的压力,老大给我打电话问我有没有办法处理。 这当然难不住我了,因为提前准备了技术方案,在直播过程中随着访问量的变化,随时批量调整服务器的配置,完美保障了直播的进行,最后在10倍于目标值的访问量下,依然没有出现任何卡顿/延迟的情况。 活动结束后,我又开始了疯狂输出,将SDK的配置方法写在了文档里: 一、前置条件:获取必填参数 1.     华为云SDK的认证方式为AK/SK认证,可以在华为云控制台”我的凭证-访问密钥”页面上创建和查看AK/SK。更多信息请查看访问密钥(https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html)。 2.     准备接口的必填参数PS:在华为云控制台-镜像服务IMS中可快速获取公共镜像相应的ID服务器配置详情:l   区域:华北-北京一 - cn-north-1l   可用区:可用区1 - cn-north-1al   规格:通用计算增强型 - c3.large.2l   镜像:Windows Server 2019数据中心版 64 位简体中文 - fb48d5c7-8718-489a-9273-d3e0e09c84d7l   服务器名:任意指定 - 如 "live-stream”l   系统盘类型:普通 IO 磁盘 – "SATA"l   虚拟私有云 ID(VPC ID):可获取当前账号在北京一区域中默认的 VPC ID,若没有默认 VPC 则新建l   网卡信息:可获取当前账号在北京一区域中默认 PC / 新建 VPC 下的子网 IDl   允许重名:当批量创建弹性云服务器时,云服务器名称是否允许重名,当count大于1的时候该参数生效 - false 二、实战演练PS:指南:https://github.com/huaweicloud/huaweicloud-sdk-java-v3/blob/master/README_CN.md 1.     新建maven项目,导入SDK的maven依赖<!-- add dependencies in pom.xml --><dependency>    <groupId>com.huaweicloud.sdk</groupId>    <artifactId>huaweicloud-sdk-core</artifactId>    <version>[3.0.1-beta, 3.1.0-beta)</version></dependency><dependency>    <groupId>com.huaweicloud.sdk</groupId>    <artifactId>huaweicloud-sdk-ecs</artifactId>    <version>[3.0.1-beta, 3.1.0-beta)</version></dependency>2.     批量创建弹性云服务器Demoimport com.huaweicloud.sdk.core.auth.BasicCredentials;import com.huaweicloud.sdk.core.http.HttpConfig;import com.huaweicloud.sdk.ecs.v2.EcsClient;import com.huaweicloud.sdk.ecs.v2.model.*; import java.util.LinkedList;import java.util.List; public class TestCreateEcs {    public static void main(String[] args) {        String ak = "{your ak string}";        String sk = "{your sk string}";        String projectId = "{your project id}";        String endpoint = "https://ecs.cn-north-1.myhuaweicloud.com";         HttpConfig config = HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true);         BasicCredentials credentials = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);         EcsClient ecsClient = EcsClient.newBuilder().withCredential(credentials).withEndpoint(endpoint).withHttpConfig(config).build();         // 确认创建虚拟机的必填参数        String az = "cn-north-1a";        String flavorRef = "s3.medium.2";        String imageRef = "fb48d5c7-8718-489a-9273-d3e0e09c84d7";        String name = "live-stream";        String vpcId = "{you vpc id}";        // 网卡信息        PostPaidServerNic nic = new PostPaidServerNic().withSubnetId("{your subnet id}");        List<PostPaidServerNic> list = new LinkedList<>();        list.add(nic);        // 系统盘信息        PostPaidServerRootVolume root = new PostPaidServerRootVolume().withVolumetype(PostPaidServerRootVolume.VolumetypeEnum.SATA);         PostPaidServer servers = new PostPaidServer().withAvailabilityZone(az)                .withFlavorRef(flavorRef)                .withImageRef(imageRef)                .withName(name)                .withNics(list)                .withRootVolume(root)                .withVpcid(vpcId)                .withCount(100)                .withIsAutoRename(false);         CreatePostPaidServersRequestBody body = new CreatePostPaidServersRequestBody().withServer(servers);        CreatePostPaidServersRequest request = new CreatePostPaidServersRequest().withBody(body);        CreatePostPaidServersResponse response = ecsClient.createPostPaidServers(request);         System.out.println(response.toString());    }}3.     批量删除弹性云服务器Demo// Step1: 查询当前以"live-stream"为开头的虚拟机列表ListServersDetailsRequest listServersDetailsRequest = new ListServersDetailsRequest().withName("live-stream");ListServersDetailsResponse listServersDetailsResponse =    ecsClient.listServersDetails(listServersDetailsRequest); // Step2: 构造删除请求中的ServerId列表List<ServerDetail> serversList = listServersDetailsResponse.getServers();List<ServerId> serverIdList = new ArrayList<>();for(ServerDetail server : serversList) {    ServerId id = new ServerId().withId(server.getId());    serverIdList.add(id);} // Step3: 传入serverId列表,删除虚拟机DeleteServersRequestBody deleteServersRequestBody = new DeleteServersRequestBody().withServers(serverIdList);DeleteServersRequest deleteServersRequest = new DeleteServersRequest().withBody(deleteServersRequestBody);DeleteServersResponse deleteServersResponse = ecsClient.deleteServers(deleteServersRequest);活动取得了非常好的成绩,实现了短视频平台流量和用户增长的目标,但是这次老板居然没有表扬我,我还有些纳闷:难道老板已经习惯了我的优秀?过了几天,HR小姐姐递过来一张表让我签字,表上写着:“调薪申请表,调薪幅度30%”,老板已经签好了名字。 目前API Explorer平台(https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview?utm_source=apiwz&utm_medium=read)已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的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   奖项设置
  • 【API进阶之路6】一个技术盲点,差点让整个项目翻车
    上次教了实习生一个方案之后,这小子跟运营妹子的关系是越走越近,时不时地撒把狗粮,在我司真正实现了研发运营一家亲~(上回你没看?戳上文剧情回顾:万万没想到,一个技术方案帮实习生追到了运营妹子) 这回想跟大家聊的,是最近一个可以说有些惊心动魄的项目。自从我开始在华为云网站自学API的技术解决方案之后,我就变成了公司的云服务器技术专家,老板或运维部门想要查询个数据什么的都来找我。 近期有一个运营项目的系统正在开发中,运营方规划了一个数据BI模板,列出了需要监测和分析的数据维度,老板干脆让我每周出一份数据报表来支持各方的数据获取和数据分析。 让研发出数据报表?这不是逼着李逵绣花么?但是,我能轻易拒绝吗?前几回高光时刻带来的成就感和光环还没褪去呢,不能怂!于是我提了一个方案:可以把云服务器的监控仪表内嵌到我们自己的系统里,这样大家可以随时查询,也方便。 老板听了这个方案表示很开心,并同意加入到项目排期中,数据查询功能与系统同期上线,以便及时跟踪运营结果。在老板的笑容里,我看到季度奖金在向我招手。 说干就干,执行力咱还是有的。用1天的时间就把程序写完了,在测试的时候发现了一个问题,数据过不来!因为通过内嵌系统登陆云服务器需要经过各种认证,步骤多不说,如果要想实现人人可查询还存在泄密的危险。 这可怎么办,系统上线的日期临近,不能因为我这部分影响到项目进展啊!当初拍着胸脯提(chui)的方(niu)案(13),难道就要失败了? 不行,再查查!我专门联系了华为云的技术专家,得知可以通过IAM自定义代理免密登录到云服务Console页面,省去认证环节,直接登陆云服务器进行数据查询和获取。 那怎么做免密登录呢?他给了我一份文档,内容是这样的: 一、前提条件 步骤 1:创建账号I**mainA下的IAM用户userB,并授予Security Administrator和Agent Operator权限(全局服务-全局项目)。 将userB的用户名和密码配置到企业系统的配置文件中,密码建议加密存储,以便获取认证token并进一步调用IAM其他Open API。备注:有关创建IAM用户和授权相关操作请参见:创建IAM用户(https://support.huaweicloud.com/usermanual-iam/zh-cn_topic_0046611303.html) 和 创建用户组并授权 (https://support.huaweicloud.com/usermanual-iam/zh-cn_topic_0046611269.html) 步骤2:创建联邦代理所需委托IAMAgency。 委托类型选择“普通账号”,委托的账号填写“DomainA”。备注:有关创建委托相关操作请参见:创建委托(委托方操作)(https://support.huaweicloud.com/usermanual-iam/zh-cn_topic_0046613147.html) 二、华为云联邦代理登录步骤1:调用IAM API获取STS token1)使用IAM全局域名(iam.myhuaweicloud.com)调用IAM服务的API(POST /v3.0/OS-CREDENTIAL/securitytokens)获取STS token。填写"session_user"参数,发起一个POST请求。POST  https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/securitytokens请求示例{     "auth": {         "identity": {             "assume_role": {                 "agency_name": "IAMAgency",                 "domain_name": "I**mainA",                 "duration-seconds": 3600,                 "session_user": {                     "name": "SessionUserName"                 }             },             "methods": [                 "assume_role"             ]         }     } } 2)获取并记录请求响应体中的STS token信息:credential.access , credential.secret, credential.securitytoken响应示例{   "credential": {     "access": "E6DX0TF2ZREQ4ZAVM5CS",     "expires_at": "2020-01-08T02:56:19.587000Z",     "secret": "w9ePum0qdfac39ErLD0UdjofYkqort6Iw2bmR6Si",     "securitytoken": "gQpjbi1ub3J0aC0..."   } }步骤2:调用IAM API获取logintoken1)使用IAM全局域名(iam.myhuaweicloud.com)调用IAM服务的API(POST /v3.0/OS-AUTH/securitytoken/logintokens)获取logintoken。发送一个POST请求。POST  https://iam.myhuaweicloud.com/v3.0/OS-AUTH/securitytoken/logintokens请求示例{     "auth": {         "securitytoken": {             "access": "LUJHNN4WB569PGAPBDFT",             "id": "gQpjbi1ub3J0a...",             "secret": "7qtrm2cku0XubixiVkBOcvMfpnu7H2mLNCUsuFR8"         }     } } 2)获取请求响应头中的X-Subject-LoginToken信息。通过委托获取临时访问密钥和securitytoken且请求体中填写session_user.name参数。返回示例{   "logintoken": {     "assumed_by": {       "user": {         "domain": {           "id": "0659ef9c9c80d4560f14c009acf9c4a0",           "name": "I**mainB"         },         "id": "0659ef9d4d00d3b81f26c009fee32b57",         "name": "IAMUserB",         "password_expires_at": "2020-02-16T02:44:57.000000Z"       }     },     "domain_id": "05262121fb00d5c30fbec013bc17a4a0",     "expires_at": "2020-01-23T03:27:26.728000Z",     "method": "federation_proxy",     "session_id": "0012c8e6adda4ce787e90585d10e3e63",     "session_name": "SessionUserName",     "user_id": "07826f367b80d2474ff9c013a48903ee",     "user_name": "I**mainA/IAMAgency"   } } 步骤3:构建联邦代理登录地址,完成免密登录联邦代理登录地址的构建规则为:https://auth.huaweicloud.com/authui/federation/login?service={target_console_url}&logintoken={logintoken}&idp_login_url={enterprise_system_loginURL}构建参数说明:l   {target_console_url}为目的云服务console地址的urlencode编码结果。l   {logintoken}为步骤2中获取到的logintoken的urlencode编码结果。l   {enterprise_system_loginURL}是选填参数,为企业客户自身的登录系统地址的urlencode编码结果。 按照文档的指引,我最终顺利解决了这个问题,项目如期上线,运营方也可以通过免密登陆自己查询和分析运营数据,及时作出优化调整,省时省事还安全。在月度例会上,我因此再一次得到了老板的肯定,开心的同时,也在心里暗想:“看来不能松懈,还得多学习啊~” 据了解,目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《华为云新功能上线,体验还能拿码豆》华为云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   奖项设置
  • [技术干货] 【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!
               上回说到,公司的新业务增长速度放缓,运营部门提出要发展短视频来促进更快的业务增长,而我也因为提前准备好了技术预案再一次得到老板的赞赏(了解详情请看上集:一个技术预案,让老板当场喊出了奥利给 )。            既然万事俱备了,公司就着手开始做短视频业务。本着最小化成本验证、快速迭代的原则,公司并没有大规模地去推进,而是先开发一个简单的短视频网站,招聘了一个妹子来做运营,先跑着看看效果再决定要不要加大投入.                  说到这个运营妹子,那可真是青(fu)春(bai)朝(mao)气(mei)有(da)活(chang)力(tui),听说她自己在短视频平台的账号就有几十万粉丝,还是什么穿搭博主。我们组那个985名校实习生明显感觉来公司上班的劲头都足多了。 你还别说,新来的运营妹子三天两头跑过来找我们实习生小哥,今天拜托给连个外接显示器,明天请帮忙查个网站新用户数,经常就听见:“小哥哥,你看这个要怎么实现呀~”小哥哥那也是有求必应,毕竟萌妹子嘛,总是不好拒绝,不像我们产品大哥要提个需求,那简直是山崩地裂。            前两天运营妹子突然跑过来问:“小哥哥,我这个网站可以放到一个单独的IP地址上么?”原来她遇到一个问题:新网站受原来网站的影响,不好做优化,负责网站优化的同事告诉她需要换一个单独的新IP地址。这个需求可把小哥哥给难住了,向来有求必应的他不知道怎么办才好,只能说:“每个服务器只有一个IP地址,如果要换IP地址,可能需要部署到新的服务器上,这个需要和老板协商…”运营妹子一听实现不了,明显就有些不开心了地走了,留下小哥哥在原地不知所措。            唉,还是太年轻呀,让老夫来帮你一把吧。我把实习生喊过来说:“想要有单独的IP地址不需要申请新的服务器,在现在的华为云弹性云服务器上挂载一个新的网卡就行了,只需要3步就可以实现。而且双网卡配置还能提升服务器带宽,提升短视频的访问速度。”           真的么?实习生小哥两眼冒光,特别期待地问我:“那怎么实现呀,我快点弄好,给她一个惊喜!说不定今天晚上就能一起去看电影了呢。”           具体操作嘛,很简单,很快我就给他写了一个操作文档:《3步实现弹性云服务器挂载网卡》《3步实现弹性云服务器挂载网卡》步骤1:创建网卡,发送POST请求,记录subnet 、network、port等ID。1、创建网络1)发送一条POST请求。POST:https://{endpoint}/v2.0/networks,其中endpoint是云服务器所在的区域节点。Body:{   "network": {     "shared": false,     "name": "demo-net",     "admin_state_up": true,     "tenant_id": "74610f3a5ad941998e91f076297ecf27"   } }2)记录返回响应中“network”的ID。{   "network": {     "id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",     "name": "demo-net",     "status": "ACTIVE",     "shared": false,     "subnets": [],     "availability_zone_hints": [],     "availability_zones": [      "az_test_01",      "az_test_02"     ],     "admin_state_up": true,     "tenant_id": "74610f3a5ad941998e91f076297ecf27",     "provider:network_type": "vxlan",     "router:external": false   } }2、创建子网1)发送请求。POST:https://{endpoint}/v2.0/subnetsBody:{     "subnet": {         "name": "testsubnet",         "enable_dhcp": true,         "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",         "tenant_id": "74610f3a5ad941998e91f076297ecf27",         "dns_nameservers": [             "8.8.8.8",             "8.8.8.7"         ],         "allocation_pools": [             {                 "start": "10.0.10.2",                 "end": "10.0.10.254"             }         ],         "host_routes": [],         "ip_version": 4,         "gateway_ip": "10.0.10.1",         "cidr": "10.0.10.0/24"     } } 2)      记录响应中“subnet”的ID。{   "subnet": {     "name": "testsubnet",     "cidr": "10.0.10.0/24",     "id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5",     "enable_dhcp": true,     "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",     "tenant_id": "74610f3a5ad941998e91f076297ecf27",     "dns_nameservers": [       "8.8.8.8",       "8.8.8.7"     ],     "allocation_pools": [       {         "start": "10.0.10.2",         "end": "10.0.10.254"       }     ],     "host_routes": [],     "ip_version": 4,     "gateway_ip": "10.0.10.1"   } }3、创建端口1)发送请求。POST:https://{endpoint}/v2.0/portsBody:{     "port": {         "admin_state_up": true,            "fixed_ips": [             {                 "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5"             }         ],          "name": "test",          "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",         "tenant_id": "74610f3a5ad941998e91f076297ecf27"     } } 2)              记录响应中“port”的ID{   "port": {     "id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4",     "name": "test",     "status": "DOWN",     "admin_state_up": true,     "fixed_ips": [       {         "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5",         "ip_address": "10.0.10.233"       }     ],     "mac_address": "fa:16:3e:db:91:f6",     "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",     "tenant_id": "74610f3a5ad941998e91f076297ecf27",     "device_id": "",     "device_owner": "",     "security_groups": [       "93031677-2895-4b83-855a-637e309aa9e6"     ],     "extra_dhcp_opts": [],     "allowed_address_pairs": [],     "binding:vnic_type": "normal",     "binding:vif_details": {},     "binding:profile": {}   } } 步骤2:挂载网卡 1)发送请求。URI格式:POST /v2.1/{tenant_id}/servers/{server_id}/os-interface示例POST:https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/9f4d9281-95e7-4915-a126-1ee597101e2e/os-interfaceBody:{     "interfaceAttachment": {         "port_id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4"     } } 2)响应示例{   "interfaceAttachment": {     "port_state": "ACTIVE",     "fixed_ips": [       {         "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5",         "ip_address": "10.0.10.233"       }     ],     "port_id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4",     "net_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",     "mac_addr": "fa:16:3e:db:91:f6"   } } 步骤3:确认挂载结果。1)      发送请求。URI格式:GET /v2.1/{tenant_id}/servers/{server_id}/os-interface示例GET:https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/9f4d9281-95e7-4915-a126-1ee597101e2e/os-interface2)响应示例{   "interfaceAttachments": [     {       "port_state": "ACTIVE",       "fixed_ips": [         {           "subnet_id": "46712fe4-25bd-4eae-874b-a528abfb76be",           "ip_address": "192.168.0.50"         }       ],       "port_id": "dd706739-b696-40be-a9f4-477ce478cb18",       "net_id": "17251a8f-a671-4d7c-85d9-af5415962994",       "mac_addr": "fa:16:3e:a5:e0:3c"     }, {       "port_state": "ACTIVE",       "fixed_ips": [         {           "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5",           "ip_address": "10.0.10.233"         }       ],       "port_id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4",       "net_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b",       "mac_addr": "fa:16:3e:db:91:f6"     }   ] }看到"port_state": "ACTIVE",就表示我们已经挂载好网卡了。 据说,由于疫情的原因,当天两人电影是没看成,但是正式处对象了……万万没想到,一个技术方案还让我当了一次月老。从此以后,实习生小哥看到我那叫一个毕恭毕敬~ 据了解,目前API Explorer平台已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。点击查看详情:《华为云一站式API解决方案平台API Explorer上线》华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。目前API Explorer在会员中心有登陆调测送码豆的活动,欢迎大家免费试用哦!【拓展阅读】【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   奖项设置