华为云用户手册

  • 方案架构 图1 方案架构图 部署该解决方案会使用到如下资源: API网关:API托管服务, 通过APIG,对外提供 人证核身 人脸识别 的组合API能力。 函数工作流 :用于实现人证核身和人脸识别的组合业务逻辑,并通过APIG对外提供服务。 人脸识别服务 :提供动作活体检测功能,判断当前用户是否为真人。 人证核身服务:将活体检测截取的人脸照片与上传的身份证证件信息关联起来,对身份真实性的核验。 对象存储服务 :用于存放人证核身过程所需要的人像动作视频。
  • APIG.0307报错处理方法 如果调用API时返回错误信息与错误码:"error_msg":"The token must be updated.","error_code":"APIG.0307",是因为Token失效,需要进行更新。 您可以尝试以下方案进行解决。 Token有效期为24小时,请使用重新 获取Token 调用API。 检查接口URL中的终端节点是否填写正确。部署在不同区域间的服务,不可以跨区域调用。如果调用了不同区域的接口,导致判断为Token失效,显示APIG.0307错误码。 父主题: 错误码类
  • APIG.0301报错处理方法 如果在调用API时返回错误信息与错误码: "error_msg":"Incorrect IAM authentication information: decrypt token fail","error_code":"APIG.0301",是因为token解密失败。 解决方案: (1)请检查token是否过期。 (2)获取token的方法,请求体信息是否填写正确,token是否正确完整。 (3)获取token的环境与调用的环境是否一致是否跨区。 (4)检查账号权限,是否欠费,被冻结等。 "error_msg":"Incorrect IAM authentication information: verify aksk signature fail","error_code":"APIG.0301",是因为AK/SK认证失败。 解决方案: (1)请检查AK/SK是否正确,AK对应的SK错误,不匹配;AK/SK中多填了空格。 (2)AK/SK频繁出现鉴权出错,连续错误5次以上,被锁定5分钟(5分钟内,则一直认为其是异常的鉴权请求),5分钟后解锁重新认证。 (3)检查账号权限,是否欠费,被冻结等。 父主题: 错误码类
  • 步骤4:调用服务 人脸识别API的请求Body参数中输入数据支持图片的Base64编码、图片文件和图片URL路径,本示例中使用图片文件。 在Postman左侧导航栏中单击“03 face-detect by file”配置文件。 登录我的凭证,获取“华北-北京四”区域的项目ID,替换配置文件URL中的{{project_id}}。 单击“Headers”配置项。将获取的Token复制到{{X-Subject-Token}}中。 图7 修改配置文件 单击“Body”配置项,上传需要进行人脸检测的图片。 图8 修改配置文件 单击“Send”,发送请求,获取调用结果。 { "faces": [ { "bounding_box": { "width": 174, "top_left_y": 37, "top_left_x": 22, "height": 174 }, "attributes": { "age": 35, "quality": { "total_score": 0.5869140625, "blur": 0.385498046875, "pose": 0.3349609375, "occlusion": 0.392333984375, "illumination": 0.3408203125 }, "expression": { "type": "happy", "probability": 0.74 } } } ] }
  • 步骤3:Token认证鉴权 Token是用户的访问令牌,承载了用户的身份、权限等信息,用户调用API接口时,需要使用Token进行鉴权。 在Postman左侧导航栏中单击“get-token”配置文件。 单击“Body”配置项。填写用户名、密码、账号名。 请登录“我的凭证”页面,复制IAM用户名、账号名至username、domainname参数处,并填写密码。 获取Token时,如果出现The userInfo is wrong、APIGW.0101、The username or password is wrong报错,请参见如何处理账密报错。 图5 Token认证鉴权 单击“Send”,发送请求,获取并复制Token。 获取返回结果“Headers”中的“X-Subject-Token”即为Token。 关于token有效期的详细说明请参见获取IAM用户Token(使用密码)。 图6 获取Token
  • 查看流水账单 展示每一笔订单和每个计费周期维度构成的账单,根据此账单进行扣费和结算。 进入“费用账单”页面。 选择“流水账单”页签。 设置查询条件,查看流水账单数据。 单击“定制列”,可以定制需要查看的账单字段,字段的详细说明请参见账单字段说明。 包年/包月产品完成支付后,准实时呈现在流水账单页面。 按需产品根据使用量类型(如云主机按时长计费)的不同,分为按小时、按天、按月三种周期进行结算。由于系统处理需要一定的时间,系统通常会在使用后1个小时内对上一个结算周期的费用进行扣款。 按小时结算:华为云会每小时根据您的使用量计算费用,并到账户中进行扣费。例如,8:00~9:00期间产生的费用,通常会在10:00以前完成扣费。 按天结算:华为云会根据您的使用量计算费用,每日零点后对前一日使用量进行扣费。例如,2019-05-11 00:00:00至2019-05-11 23:59:59期间产生的费用,通常会在2019-05-12 01:00:00左右完成扣费。 按月结算:华为云会根据您的使用量计算费用,每月月初对前一月使用量进行扣费。例如,2019-04-01 00:00:00 至2019-04-30 23:59:59期间产生的费用,通常会在2019-05-01 01:00:00左右完成扣费。 按天进行结算的日峰值计费产品,一般会在16:00左右进行上一天费用的结算;按月进行结算的95计费、95增强计费、日峰值月平均产品,一般会在下个月的1号20:00左右进行上一个月费用的结算。
  • 查看账单详情 账单详情展示登录账户的账单详细信息。 进入“费用账单”页面。 选择“账单详情”页签。 设置统计维度和统计周期,查看账单的详细信息。 单击“定制列”,可以定制需要查看的账单字段,字段的详细说明请参见账单字段说明。 统计维度为“资源”时,如果资源存在父子资源,则子资源中会展示所属的父资源,根据父资源信息也可以查看到子资源。 单击应付金额右侧的,可以选择是否“隐藏0元消费”。 按需计费模式为简单 定价 (使用量*单价)时提供单价信息,其他的定价如:阶梯定价等不提供单价。 查看统计维度为“使用量类型”,统计周期为“明细”的账单时: 按需的使用量类型明细账单从2020/11/15 00:00:00开始,“优惠类型”字段按照实际享受的优惠类型进行赋值;2020/11/15 00:00:00以前的历史数据中不展示该字段取值,统一设置为“--”。 包年/包月的使用量类型明细账单中,“优惠类型”字段按照实际享受的优惠类型进行赋值,2020/11/15 00:00:00以前的历史数据也提供。
  • 查看汇总 汇总数据可以展示不同汇总维度下的应付金额、扣费明细等数据,每个产品只展示一条汇总数据。 当月最终汇总账单将在次月3日生成,在次月4日10点后可查看和导出,请您届时关注。 进入“费用账单”页面。 选择“汇总”页签。 设置查看月份和汇总维度,查看费用汇总数据。 可以根据月份查看费用汇总数据。单击“导出月账单”,可以导出汇总账单和对账单。 汇总账单:用户可以按月查看消费汇总数据。数据是按照产品类型、资源类型维度进行呈现,区分计费模式(按需、包年/包月)进行统计的汇总账单,包含消费、退款、调账的金额。 对账单:用户可以查看按月汇总的包年/包月、按需资源消费与退订的数据,按照订单和资源的维度进行呈现。 查看汇总图表和表格。 选择不同的维度,查看费用汇总数据。 按企业项目汇总时,如果您购买云服务资源时没有特别设置企业项目,将统一默认为:default。 按企业项目汇总时,如果您购买的云服务资源不支持设置企业项目,则统一呈现为:未归集。 单击产品类型的链接,可以查看对应产品的流水明细。 根据产品、计费模式、账单类型展示费用的汇总数据。 单击“展开消费走势”,可以查看近一年的消费走势图。 当前查询月份存在欠费时,单击“欠费”右上角的小问号可以查看欠费组成部分,欠费金额=未结清金额+未出账金额。应付金额=现金支付+信用额度支付+代金券抵扣+储值卡抵扣+欠费金额+现金券抵扣。 单击“定制列”,可以定制需要查看的账单字段,字段的详细说明请参见账单字段说明。
  • 步骤2:使用IAM账户获取Token 以获取华北-北京四(cn-north-4)区域的Token为例。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Request Header: Content-Type: application/json Request Body: { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", //子账户名称 "password": "********", //子账户密码 "domain": { "name": "domainname" //主账户名称 } } } }, "scope": { "project": { "name": "project name" //区 域名 称,如cn-north-4 } } } }
  • 如何处理未经授权的情况 提交OBS的数据到人脸识别服务进行识别,返回未经授权:The OBS is unauthorized时,您可以通过如下步骤处理: 使用OBS中的数据时,需要授权人脸识别服务能读取OBS数据,检查是否已在人脸识别服务的管理控制台单击过“委托授权”: 如果已经授权,界面将显示为“已授权”。 如果没有授权,请单击界面左侧“委托授权”。 图1 服务授权 如果管理控制台已经授权过了,您再确认下,该OBS URL是否是自己账号下的OBS桶地址。 如果该OBS URL是您自己账号下的OBS桶地址,确认下该OBS桶是否在人脸识别服务支持的Region。 如果上述方法还不能解决该问题,请登录咨询页面填写您的相关信息,我们会在1个工作日内和您联系(工作时间周一至周五9:00-18:00)。您也可以拨打4000-955-988或950808按1转1进行快速解答。 父主题: 产品咨询类
  • 获取Token报错 获取Token时,请依据报错信息,选择相应的解决方案。 账密报错The username or password is wrong 返回The userInfo is wrong 请正确填写username和domainname,一般情况下,username=domainname。如不确定,可登录“我的凭证”页面查看,如果使用IAM账号获取Token: username:IAM用户名(子账号名称) domainname:账号名 返回"error_code": "APIGW.0101" 请检查获取Token使用的url是否正确。以获取华北-北京四区域的token为例,采用post请求,url为: https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 返回“The account is locked”账号被锁 父主题: 错误码类
  • 调用API报错“The token must be updated”怎么办 以下两种情况可能会导致调用API时返回The token must be update: 您获取的Token已过期,关于Token有效期的详细说明请参见获取IAM用户Token(使用密码),当Token过期时会返回该提示信息。 您的账户出现欠费,充值后,未重新获取Token,这种情况下也会导致返回提示信息。 若出现该提示,您需要重新从IAM服务获取Token,具体请参见获取用户Token。 父主题: 错误码类
  • FRS权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 FRS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京四)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问FRS时,需要先切换至授权区域。 如表1所示,包括了FRS的所有系统角色。 表1 FRS系统策略 策略名称 描述 策略类型 依赖关系 FRS FullAccess 所有权限 系统策略 无 FRS ReadOnlyAccess 只读访问权限 系统策略 无 表2列出了FRS常用操作与系统策略的授权关系,您可以参照该表选择合适的系统策略。 表2 FRS操作与系统策略关系 Action Action说明 FRS FullAccess FRS ReadOnlyAccess frs:faceSearch:subscribe 订阅人脸搜索服务 √ × frs:faceSearch:unsubscribe 取消订阅人脸搜索服务 √ × frs:faceSearch:getSubscribeUserList 查询订阅人脸搜索的用户列表 √ √ frs:faceSearch:subscribeAllUsers 为所有子用户订阅人脸搜索服务 √ × frs:faceSearch:unsubscribeAllUsers 为所有子用户取消订阅人脸搜索服务 √ × frs:faceCompare:subscribe 订阅人脸比对服务 √ × frs:faceCompare:unsubscribe 取消订阅人脸比对服务 √ × frs:faceCompare:getSubscribeUserList 查询订阅人脸比对的用户列表 √ √ frs:faceCompare:subscribeAllUsers 为所有子用户订阅人脸比对服务 √ × frs:faceCompare:unsubscribeAllUsers 为所有子用户取消订阅人脸比对服务 √ × frs:faceDetect:subscribe 订阅人脸检测服务 √ × frs:faceDetect:unsubscribe 取消订阅人脸检测服务 √ × frs:faceDetect:getSubscribeUserList 查询订阅人脸检测的用户列表 √ √ frs:faceDetect:subscribeAllUsers 为所有子用户订阅人脸检测服务 √ × frs:faceDetect:unsubscribeAllUsers 为所有子用户取消订阅人脸检测服务 √ × frs:liveDetect:subscribe 订阅活体检测服务 √ × frs:liveDetect:unsubscribe 取消订阅活体检测服务 √ × frs:liveDetect:getSubscribeUserList 查询订阅活体检测的用户列表 √ √ frs:liveDetect:subscribeAllUsers 为所有子用户订阅活体检测服务 √ × frs:liveDetect:unsubscribeAllUsers 为所有子用户取消订阅活体检测服务 √ ×
  • 基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 父主题: 使用前必读
  • 调用API获取项目ID 项目ID还可以通过调用查询指定条件下的项目信息API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,可以从地区和终端节点获取。选中“Headers”配置项,添加“KEY”为“X-Auth-Token”,“VALUE”为获取的Token值,详细的接口认证鉴权请参见认证鉴权。 响应示例如下,例如人脸识别服务部署的区域为“cn-north-1”,响应消息体中查找“name”为“cn-north-1”,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "cn-north-1", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。 AK/SK获取方式请参考获取AK/SK。
  • Token认证 需要使用同一个Token鉴权时,可以缓存起来,避免频繁调用。 关于Token有效期的详细说明请参见获取IAM用户Token(使用密码)。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 username、domainname、project name可登录控制台“我的凭证”页面获取。password为用户密码。 获取Token时,如果出现账密报错“The username or password is wrong.”,请参见如何处理账密报错。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json Request Body: { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "project name" } } } } 如下图所示,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。获取Token之后,您就可以使用Token认证调用FRS服务API。 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333 。 图1 获取用户Token响应消息头
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 例如,对于人脸检测接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示。 POST https://face.cn-north-4.myhuaweicloud.com/v2/{project_id}/face-detect Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDT... Request Body: { "image_base64": "/9j/4AAQSkZJRgABAgEASABIAAD...", "attributes": "2,12,13" } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 表1 请求URI 参数 说明 URI-scheme 传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 承载REST服务端点的服务器域名或IP,不同服务在不同区域时,对应Endpoint不同,可以从终端节点中获取。 例如IAM服务在“华北-北京四”区域的Endpoint为“iam.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取。 例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 例如调用人脸检测接口,API的resource-path为“/v2/{project_id}/face-detect”。 query-string 查询参数,可选,查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如,您需要在“华北-北京四”区域调用人脸检测API,URI如下所示。其中face.cn-north-4.myhuaweicloud.com表示“华北-北京四”区域的Endpoint,{project_id}表示与区域对应的项目id,可在“我的凭证”页面获取。 https://face.cn-north-4.myhuaweicloud.com/v2/{project_id}/face-detect 图1 URI示意图 为查看方便,服务每个具体API的URI,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token请参考认证鉴权。 添加消息头后的请求如下所示。 POST https://face.cn-north-4.myhuaweicloud.com/v2/{project_id}/face-detect Content-Type: application/json x-auth-token: MIIaBgYJKoZIhvcNAQcC…
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 人脸检测API的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://face.cn-north-4.myhuaweicloud.com/v2/{project_id}/face-detect
  • 获取AK/SK 登录人脸识别管理控制台。 单击页面右上角的用户名,并选择“我的凭证”。 进入“我的凭证”页面。 单击“访问秘钥”页签下的“新增访问密钥”。 弹出“新增访问密钥”对话框。 输入“登录密码”,如果绑定了手机或者邮箱,还需要获取验证码并进行验证。 验证成功后,弹出访问密钥下载对话框。 单击“确定”,并根据提示下载保存访问密钥。 如果已生成过AK/SK,找到原来已下载的AK/SK文件,文件名一般为:credentials.csv。 父主题: 获取项目ID/账号名/AK/SK
  • 申请步骤 登录人脸识别管理控制台。 根据业务需求,选择服务部署区域,开通所需服务(例如:人脸检测),单击右侧的“开通服务”。 香港、曼谷区域API也可以使用中国站账号进行开通;如您需要使用国际站账号开通香港、曼谷区域API,请联系客服获取开通支持。 图1 开通服务 由于应用可能需要使用对象存储服务(OBS)中的数据,人脸识别服务需要您授权可以操作对象存储服务。单击左侧“委托授权”,完成OBS授权,已授权过的服务,该页面提示“已授权”。 OBS授权时,如果提示委托已达上限,则需要您登录到 统一身份认证 服务,对委托进行删除或创建新的委托。 服务状态显示“已开通”时,即可调用服务的API。 图2 服务授权
  • 操作步骤 创建用户组并授权 使用主账号登录IAM服务控制台。 左侧导航窗格中,选择“用户组”页签,单击右上方的“+创建用户组”。 在“创建用户组”界面,输入“用户组名称”,例如“开发人员组”、“测试人员组”。 在用户组列表中,单击新建用户组右侧的“授权”。 选择权限的作用服务。此处选择“人证核身服务(IVS)”,并为该用户组设置所需的权限。 单击“下一步”,设置用户组的最小授权范围。单击“确定”,完成用户组授权。 所有资源:不设置最小授权范围,授权后,用户根据权限使用账号中所有资源。 指定区域项目资源:授权后,用户根据权限使用已选区域项目中的资源。 创建IAM用户并加入用户组 在IAM控制台中创建用户。单击右上方的“+创建用户”,配置用户基本信息。 单击“下一步”,将用户加入至用户组。 单击“创建用户”,完成IAM用户创建。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 假设当前权限仅包含IVS ReadOnlyAccess。 进入IVS控制台界面,单击“开通服务”,如果无法开通,提示权限不足,表示“IVS ReadOnlyAccess”已生效。
  • IVS权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 IVS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京四)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问IVS时,需要先切换至授权区域。 如表1所示,包括了IVS的所有系统角色。 表1 IVS系统策略 策略名称 描述 策略类型 依赖关系 IVS FullAccess 所有权限 系统策略 无 IVS ReadOnlyAccess 只读访问权限 系统策略 无 表2列出了IVS常用操作与系统策略的授权关系,您可以参照该表选择合适的系统策略。 表2 IVS操作与系统策略关系 Action Action说明 IVS FullAccess IVS ReadOnlyAccess ivs:standard:subscribe 订阅人证核身标准版(三要素) √ × ivs:standard:unsubscribe 取消人证核身标准版(三要素) √ × ivs:standard:getSubscribeUserList 查询订阅人证核身标准版(三要素)的用户列表 √ √ ivs:standard:subscribeAllUsers 为子用户订阅人证核身标准版(三要素) √ × ivs:standard:unsubscribeAllUsers 为子用户取消订阅人证核身标准版(三要素) √ × ivs:idCardExtention:subscribe 订阅人证核身证件版(二要素) √ × ivs:idCardExtention:unsubscribe 取消订阅人证核身证件版(二要素) √ × ivs:idCardExtention:getSubscribeUserList 查询订阅人证核身证件版(二要素)的用户列表 √ √ ivs:idCardExtention:subscribeAllUsers 为子用户订阅人证核身证件版(二要素) √ × ivs:idCardExtention:unsubscribeAllUsers 为子用户取消订阅人证核身证件版(二要素) √ ×
  • 操作步骤 在 云日志 服务管理控制台,单击“日志管理”。 在日志组列表中,单击接入ELB日志的日志组名称,进入日志流详情页面。 或者在日志流列表中,单击接入ELB日志的日志流名称,进入日志流详情页面。 在右上角选择时间范围。 在搜索框输入“status 500”,单击查询,开始搜索。 显示近一小时内ELB日志错误码为500的日志,status字段开启快速分析后会同步现在执行正常和异常状态占比。 单击查看原始日志的上下文,了解该问题发生时的应用运行状态。 设置日志结构化后,下拉框会同步显示系统内置字段及结构化配置的字段。 创建快速分析后,LTS会统计对应字段在日志流的日志文件中出现的条数,并生成日志指标(百分比)。
  • SQL语法支持的数据类型 SQL查询中支持的数据类型如表1。如果当前字段数据类型需要改为其他数据类型,我们会进行数据类型的转换。例如STRING类型的字段转为LONG类型。字段数据类型转换之后的结果将会显示默认值,如STRING类型的数据转换为LONG类型的数据,结果会显示为LONG类型的默认值0。同理,当空值被转换为非空类型值时,也会使用默认值进行替换。例如,当把STRING类型空值转换为数字类型时,将会返回默认值0。 SQL语法中,字符必须被单引号('')包裹,无符号或双引号("")包裹的为字段或表名称,如:'msg'表示字符串msg,msg或"msg"表示日志结构化msg字段。 表1 SQL查询支持的数据类型 原生数据类型 默认值 说明 STRING "" 原生STRING类型 FLOAT 0.0 原生FLOAT类型 LONG 0 原生LONG类型 父主题: SQL查询语法
  • 使用案例 控制单节点的执行 通过参数配置实现 from modelarts import workflow as wf condition_equal = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.EQ, left=wf.Placeholder(name="is_skip", placeholder_type=wf.PlaceholderType.BOOL), right=True) # 构建一个OutputStorage对象,对训练输出目录做统一管理 storage = wf.data.OutputStorage(name="storage_name", title="title_info", description="description_info") # name字段必填,title, description可选填 # 定义输入的OBS对象 obs_data = wf.data.OBSPlaceholder(name="obs_placeholder_name", object_type="directory") # 通过JobStep来定义一个训练节点,并将训练结果输出到OBS job_step = wf.steps.JobStep( name="training_job", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm( subscription_id="subscription_id", # 算法订阅ID item_version_id="item_version_id", # 算法订阅版本ID,也可直接填写版本号 parameters=[] ), # 训练使用的算法对象,示例中使用AIGallery订阅的算法;部分算法超参的值如果无需修改,则在parameters字段中可以不填写,系统自动填充相关超参值 inputs=wf.steps.JobInput(name="data_url", data=obs_data), # JobStep的输入在运行时配置;data字段也可使用data=wf.data.OBSPath(obs_path="fake_obs_path")表示 outputs=wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=storage.join("directory_path"))), # JobStep的输出 spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ) ), # 训练资源规格信息 policy=wf.steps.StepPolicy( skip_conditions=[condition_equal] # 通过skip_conditions中的计算结果决定job_step是否跳过 ) ) workflow = wf.Workflow( name="new-condition-demo", desc="this is a demo workflow", steps=[job_step], storages=storage ) 案例中job_step配置了相关的跳过策略,并且通过一个bool类型的参数进行控制。当name为is_skip的Placeholder参数配置为True时,condition_equal的计算结果为True,此时job_step会被置为跳过,反之job_step正常执行,其中Condition对象详情可参考条件节点。 通过获取JobStep输出的相关metric指标信息实现 from modelarts import workflow as wf # 构建一个OutputStorage对象,对训练输出目录做统一管理 storage = wf.data.Storage(name="storage_name", title="title_info", with_execution_id=True, create_dir=True, description="description_info") # name字段必填,title, description可选填 # 定义输入的OBS对象 obs_data = wf.data.OBSPlaceholder(name="obs_placeholder_name", object_type="directory") # 通过JobStep来定义一个训练节点,并将训练结果输出到OBS job_step = wf.steps.JobStep( name="training_job", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm( subscription_id="subscription_id", # 算法订阅ID item_version_id="item_version_id", # 算法订阅版本ID,也可直接填写版本号 parameters=[] ), # 训练使用的算法对象,示例中使用AIGallery订阅的算法;部分算法超参的值如果无需修改,则在parameters字段中可以不填写,系统自动填充相关超参值 inputs=wf.steps.JobInput(name="data_url", data=obs_data), outputs=[ wf.steps.JobOutput(name="train_url",obs_config=wf.data.OBSOutputConfig(obs_path=storage.join("directory_path"))), wf.steps.JobOutput(name="metrics", metrics_config=wf.data.MetricsConfig(metric_files=storage.join("directory_path/metrics.json", create_dir=False))) # 指定metric的输出路径,相关指标信息由作业脚本代码根据指定的数据格式自行输出(示例中需要将metric信息输出到训练输出目录下的metrics.json文件中) ], spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ) ) # 训练资源规格信息 ) # 定义模型名称参数 model_name = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR) # 定义条件对象 condition_lt = wf.steps.Condition( condition_type=wf.steps.ConditionTypeEnum.LT, left=wf.steps.MetricInfo(job_step.outputs["metrics"].as_input(), "accuracy"), right=0.5 ) model_step = wf.steps.ModelStep( name="model_registration", # 模型注册节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="模型注册", # 标题信息 inputs=wf.steps.ModelInput(name='model_input', data=job_step.outputs["train_url"].as_input()), # job_step的输出作为输入 outputs=wf.steps.ModelOutput(name='model_output', model_config=wf.steps.ModelConfig(model_name=model_name, model_type="TensorFlow")), # ModelStep的输出 depend_steps=[job_step], # 依赖的作业类型节点对象 policy=wf.steps.StepPolicy(skip_conditions=condition_lt) # 通过skip_conditions中的计算结果决定model_step是否跳过 ) workflow = wf.Workflow( name="new-condition-demo", desc="this is a demo workflow", steps=[job_step, model_step], storages=storage ) 案例中model_step配置了相关的跳过策略,并且通过获取job_step输出的accuracy指标信息与预置的值进行比较,决定是否需要进行模型注册。当job_step输出的accuracy指标数据小于阈值0.5时,condition_lt的计算结果为True,此时model_step会被置为跳过,反之model_step正常执行。 job_step输出的metric文件格式要求可参考分支控制部分,并且在Condition中只支持使用type为float类型的指标数据作为输入。 此案例中metrics.json的内容示例如下: [ { "key": "loss", "title": "loss", "type": "float", "data": { "value": 1.2 } }, { "key": "accuracy", "title": "accuracy", "type": "float", "data": { "value": 0.8 } } ] 控制多分支的部分执行 from modelarts import workflow as wf # 构建一个OutputStorage对象,对训练输出目录做统一管理 storage = wf.data.Storage(name="storage_name", title="title_info", with_execution_id=True, create_dir=True, description="description_info") # name字段必填,title, description可选填 # 定义输入的OBS对象 obs_data = wf.data.OBSPlaceholder(name="obs_placeholder_name", object_type="directory") condition_equal_a = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.EQ, left=wf.Placeholder(name="job_step_a_is_skip", placeholder_type=wf.PlaceholderType.BOOL), right=True) # 通过JobStep来定义一个训练节点,并将训练结果输出到OBS job_step_a = wf.steps.JobStep( name="training_job_a", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm( subscription_id="subscription_id", # 算法订阅ID item_version_id="item_version_id", # 算法订阅版本ID,也可直接填写版本号 parameters=[] ), # 训练使用的算法对象,示例中使用AIGallery订阅的算法;部分算法超参的值如果无需修改,则在parameters字段中可以不填写,系统自动填充相关超参值 inputs=wf.steps.JobInput(name="data_url", data=obs_data), outputs=[wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=storage.join("directory_path_a")))], spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ) ), # 训练资源规格信息 policy=wf.steps.StepPolicy(skip_conditions=condition_equal_a) ) condition_equal_b = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.EQ, left=wf.Placeholder(name="job_step_b_is_skip", placeholder_type=wf.PlaceholderType.BOOL), right=True) # 通过JobStep来定义一个训练节点,并将训练结果输出到OBS job_step_b = wf.steps.JobStep( name="training_job_b", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm( subscription_id="subscription_id", # 算法订阅ID item_version_id="item_version_id", # 算法订阅版本ID,也可直接填写版本号 parameters=[] ), # 训练使用的算法对象,示例中使用AIGallery订阅的算法;部分算法超参的值如果无需修改,则在parameters字段中可以不填写,系统自动填充相关超参值 inputs=wf.steps.JobInput(name="data_url", data=obs_data), outputs=[wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=storage.join("directory_path_b")))], spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ) ), # 训练资源规格信息 policy=wf.steps.StepPolicy(skip_conditions=condition_equal_b) ) # 定义模型名称参数 model_name = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR) model_step = wf.steps.ModelStep( name="model_registration", # 模型注册节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="模型注册", # 标题信息 inputs=wf.steps.ModelInput(name='model_input', data=wf.data.DataConsumptionSelector(data_list=[job_step_a.outputs["train_url"].as_input(), job_step_b.outputs["train_url"].as_input()])), # 选择job_step_a或者job_step_b的输出作为输入 outputs=wf.steps.ModelOutput(name='model_output', model_config=wf.steps.ModelConfig(model_name=model_name, model_type="TensorFlow")), # ModelStep的输出 depend_steps=[job_step_a, job_step_b], # 依赖的作业类型节点对象 ) workflow = wf.Workflow( name="new-condition-demo", desc="this is a demo workflow", steps=[job_step_a, job_step_b, model_step], storages=storage ) 案例中job_step_a和job_step_b均配置了跳过策略,并且都使用参数进行控制。当参数值配置不同时,model_step的执行可以分为以下几种情况(model_step没有配置跳过策略,因此会遵循默认规则): job_step_a_is_skip参数值 job_step_b_is_skip参数值 model_step是否执行 True True 跳过 False 执行 False True 执行 False 执行 默认规则:当某个节点依赖的所有节点状态均为跳过时,该节点自动跳过,否则正常执行,此判断逻辑可扩展至任意节点。 在上述案例的基础上,如果需要打破默认规则,在job_step_a以及job_step_b跳过时,model_step也允许执行,则只需要在model_step中也配置跳过策略即可(跳过策略的优先级高于默认规则)。
  • 异步推理服务部署相关信息配置 在ModelArts管理控制台,左侧菜单栏选择“Workflow”进入Workflow页面。 在服务部署节点启动之后会等待用户设置相关配置信息,选择AI应用及版本为异步推理模型,设置服务启动参数,配置完成后直接单击继续运行即可。 图1 选择异步推理AI应用 其中服务启动参数与您选择的异步推理AI应用相关,选择了需要的AI应用及版本后,系统会自动匹配响应的服务启动参数。
  • 什么是MLOps MLOps(Machine Learning Operation)是“机器学习”(Machine Learning)和“DevOps”(Development and Operations)的组合实践。随着机器学习的发展,人们对它的期待不仅仅是学术研究方面的领先突破,更希望这些技术能够系统化地落地到各个场景中。但技术的真实落地和学术研究还是有比较大的差别的。在学术研究中,一个AI算法的开发是面向固定的数据集(公共数据集或者某个特定场景固定数据集),基于单个数据集,不断做算法的迭代与优化。面向场景的AI系统化开发的过程中,除了模型的开发,还有整套系统的开发,于是软件系统开发中成功经验“DevOps”被自然地引入进来。但是,在人工智能时代,传统的DevOps已经不能完全覆盖一个人工智能系统开发的全流程了。
共100000条