华为云用户手册

  • denied: you do not have the permission 问题现象:使用客户端上传镜像,报如下所示错误: “denied: you do not have the permission” 问题原因: 该组织名已被其他用户注册或当前SWR组织数量已超过配额。 docker login命令使用 IAM 用户的AK、SK生成,没有对应组织的权限。 解决方法: 该组织名已被其他用户注册时:建议您先创建组织然后再上传镜像,创建组织的方法请参见创建组织。 SWR组织数量超过配额时:单个用户的组织数量限制为5个,您可以将镜像上传到已存在的组织下,也可以提交工单申请增加配额。 没有对应组织的权限:使用账号授权后,可以正常推送。授权操作请参见授权管理。
  • denied: Image organization does not exist, you should create it first 问题现象:使用客户端上传镜像,报如下所示错误: “denied: Image organization does not exist, you should create it first” 问题原因:docker push命令中的组织名称不存在。 解决方法:请先创建组织,再重新上传。
  • IMS权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 IMS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域下的项目中都生效。访问IMS时,需要先切换至授权区域。 根据授权精度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 表1 IMS系统角色 系统角色 描述 依赖关系 IMS Administrator 镜像服务 的管理员权限。 该角色有依赖,需要勾选依赖的角色:Tenant Administrator。 Server Administrator 拥有该权限的用户可以创建、删除、查询、修改及上传镜像。 该角色有依赖,需要在同项目中勾选依赖的角色:IMS Administrator。 策略(推荐):IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对IMS服务,管理员能够控制IAM用户仅能对某一类镜像资源进行指定的管理操作。 多数策略以API接口为粒度进行权限拆分,IMS支持的API授权项请参见:权限及授权项说明。 表2 IMS系统策略 策略名称 描述 依赖关系 IMS FullAccess 镜像服务所有权限。 无 IMS ReadOnlyAccess 镜像服务只读权限,拥有该权限的用户仅能查看镜像服务数据。 无 表3列出了镜像服务(IMS)常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表3 常用操作与系统权限的关系 操作 IMS FullAccess IMS ReadOnlyAccess IMS Administrator(需依赖Tenant Administrator) 创建镜像 √ x √ 删除镜像 √ x √ 查询镜像 √ √ √ 更新镜像信息 √ x √
  • 相关操作 如果您本地的镜像文件不符合格式要求,可以借助工具对镜像格式进行转换,请参见“通过qemu-img工具转换镜像格式”或“通过qemu-img-hw工具转换镜像格式”。 如何上传外部镜像文件,请参见“上传镜像文件(Windows)”和“上传镜像文件(Linux)”。 外部镜像文件上传成功后,您可以通过注册镜像,将外部镜像文件注册为云平台的私有镜像。具体操作,请参见“注册镜像(Windows)”和“注册镜像(Linux)”。
  • 支持的操作系统类型 外部镜像文件支持的操作系统类型包含: x86架构类型 ARM架构类型 在管理控制台上传外部镜像文件时,系统会自动对镜像的操作系统进行识别。外部镜像文件支持的操作系统类型如表1和表2所示。 如果待注册的操作系统版本无法识别或不包含在支持列表中: 对于Windows操作系统,在注册镜像过程中系统会按照“Other_Windows (64_bit)”或“Other_Windows (32_bit)”类型进行处理。 对于Linux操作系统,在注册镜像过程中系统会按照“Other_Linux (64_bit)”或“Other_Linux (32_bit)”类型进行处理。 未包含在表1和表2中的操作系统类型有可能不支持镜像上传功能,建议咨询客户服务确认。 裸金属服务器镜像支持的镜像格式和操作系统类型请参考《裸金属服务器私有镜像制作指南》。 表1 外部镜像文件支持的操作系统类型(x86架构类型) 操作系统类型 操作系统版本 Rocky Linux Rocky Linux 9.0 64bit Rocky Linux 8.5 64bit Rocky Linux 8.4 64bit Rocky Linux 8.3 64bit AlmaLinux AlmaLinux 9.0 64bit AlmaLinux 8.4 64bit AlmaLinux 8.3 64bit Windows Windows 10 64bit Windows Server 2022 Standard 64bit Windows Server 2022 Datacenter 64bit Windows Server 2019 Standard 64bit Windows Server 2019 Datacenter 64bit Windows Server 2016 Standard 64bit Windows Server 2016 Datacenter 64bit Windows Server 2012 R2 Standard 64bit Windows Server 2012 R2 Essentials 64bit Windows Server 2012 R2 Datacenter 64bit Windows Server 2012 Datacenter 64bit Windows Server 2012 Standard 64bit Windows Server 2008 WEB R2 64bit Windows Server 2008 R2 Standard 64bit Windows Server 2008 R2 Enterprise 64bit Windows Server 2008 R2 Datacenter 64bit SUSE SUSE Linux Enterprise Server 15 SP5 64bit SUSE Linux Enterprise Server 15 SP4 64bit SUSE Linux Enterprise Server 15 SP3 64bit SUSE Linux Enterprise Server 15 SP2 64bit SUSE Linux Enterprise Server 15 SP1 64bit SUSE Linux Enterprise Server 15 64bit SUSE Linux Enterprise Server 12 SP5 64bit SUSE Linux Enterprise Server 12 SP4 64bit SUSE Linux Enterprise Server 12 SP3 64bit SUSE Linux Enterprise Server 12 SP2 64bit SUSE Linux Enterprise Server 12 SP1 64bit SUSE Linux Enterprise Server 11 SP4 64bit SUSE Linux Enterprise Server 11 SP3 64bit SUSE Linux Enterprise Server 11 SP3 32bit Oracle Linux Oracle Linux Server release 7.6 64bit Oracle Linux Server release 7.5 64bit Oracle Linux Server release 7.4 64bit Oracle Linux Server release 7.3 64bit Oracle Linux Server release 7.2 64bit Oracle Linux Server release 7.1 64bit Oracle Linux Server release 7.0 64bit Oracle Linux Server release 6.10 64bit Oracle Linux Server release 6.9 64bit Oracle Linux Server release 6.8 64bit Oracle Linux Server release 6.7 64bit Oracle Linux Server release 6.5 64bit Red Hat Red Hat Linux Enterprise 8.0 64bit Red Hat Linux Enterprise 7.9 64bit Red Hat Linux Enterprise 7.8 64bit Red Hat Linux Enterprise 7.6 64bit Red Hat Linux Enterprise 7.5 64bit Red Hat Linux Enterprise 7.4 64bit Red Hat Linux Enterprise 7.3 64bit Red Hat Linux Enterprise 7.2 64bit Red Hat Linux Enterprise 7.1 64bit Red Hat Linux Enterprise 7.0 64bit Red Hat Linux Enterprise 6.10 64bit Red Hat Linux Enterprise 6.9 64bit Red Hat Linux Enterprise 6.8 64bit Red Hat Linux Enterprise 6.7 64bit Red Hat Linux Enterprise 6.6 64bit Red Hat Linux Enterprise 6.6 32bit Red Hat Linux Enterprise 6.5 64bit Red Hat Linux Enterprise 6.4 64bit Red Hat Linux Enterprise 6.4 32bit Ubuntu Ubuntu 22.04 Server 64bit Ubuntu 20.04 Server 64bit Ubuntu 19.04 Server 64bit Ubuntu 18.04.2 Server 64bit Ubuntu 18.04.1 Server 64bit Ubuntu 18.04 Server 64bit Ubuntu 16.04.6 Server 64bit Ubuntu 16.04.5 Server 64bit Ubuntu 16.04.4 Server 64bit Ubuntu 16.04.3 Server 64bit Ubuntu 16.04.2 Server 64bit Ubuntu 16.04 Server 64bit Ubuntu 14.04.5 Server 64bit Ubuntu 14.04.4 Server 64bit Ubuntu 14.04.4 Server 32bit Ubuntu 14.04.3 Server 64bit Ubuntu 14.04.3 Server 32bit Ubuntu 14.04.1 Server 64bit Ubuntu 14.04.1 Server 32bit Ubuntu 14.04 Server 64bit Ubuntu 14.04 Server 32bit openSUSE openSUSE 42.3 64bit openSUSE 42.2 64bit openSUSE 42.1 64bit openSUSE 15.5 64bit openSUSE 15.4 64bit openSUSE 15.3 64bit openSUSE 15.1 64bit openSUSE 15.0 64bit openSUSE 13.2 64bit openSUSE 11.3 64bit CentOS CentOS 8.3 64bit CentOS 8.2 64bit CentOS 8.1 64bit CentOS 8.0 64bit CentOS 8.0 64bit CentOS 7.9 64bit CentOS 7.8 64bit CentOS 7.7 64bit CentOS 7.6 64bit CentOS 7.5 64bit CentOS 7.4 64bit CentOS 7.3 64bit CentOS 7.2 64bit CentOS 7.1 64bit CentOS 7.0 64bit CentOS 7.0 32bit CentOS 6.10 64bit CentOS 6.10 32bit CentOS 6.9 64bit CentOS 6.8 64bit CentOS 6.7 64bit CentOS 6.7 32bit CentOS 6.6 64bit CentOS 6.6 32bit CentOS 6.5 64bit CentOS 6.5 32bit CentOS 6.4 64bit CentOS 6.4 32bit CentOS 6.3 64bit CentOS 6.3 32bit Debian Debian GNU/Linux 12.0.0 64bit Debian GNU/Linux 11.1.0 64bit Debian GNU/Linux 10.7.0 64bit Debian GNU/Linux 10.5.0 64bit Debian GNU/Linux 10.4.0 64bit Debian GNU/Linux 10.3.0 64bit Debian GNU/Linux 10.2.0 64bit Debian GNU/Linux 10.1.0 64bit Debian GNU/Linux 10.0.0 64bit Debian GNU/Linux 9.13.0 64bit Debian GNU/Linux 9.3.0 64bit Debian GNU/Linux 9.0.0 64bit Debian GNU/Linux 8.10.0 64bit Debian GNU/Linux 8.8.0 64bit Debian GNU/Linux 8.7.0 64bit Debian GNU/Linux 8.6.0 64bit Debian GNU/Linux 8.5.0 64bit Debian GNU/Linux 8.4.0 64bit Debian GNU/Linux 8.2.0 64bit Debian GNU/Linux 8.1.0 64bit Fedora Fedora 32 64bit Fedora 31 64bit Fedora 30 64bit Fedora 29 64bit Fedora 28 64bit Fedora 27 64bit Fedora 26 64bit Fedora 25 64bit Fedora 24 64bit Fedora 23 64bit Fedora 22 64bit EulerOS EulerOS 2.10 64bit EulerOS 2.9 64bit EulerOS 2.5 64bit EulerOS 2.3 64bit EulerOS 2.2 64bit EulerOS 2.1 64bit CoreOS CoreOS 1800.1.0 CoreOS 1745.2.0 CoreOS 1632.0.0 CoreOS 1520.8.0 CoreOS 1465.8.0 CoreOS 1298.5.0 CoreOS 1122.3.0 CoreOS 1122.2.0 CoreOS 1185.5.0 CoreOS 1068.10.0 CoreOS 1010.5.0 CoreOS 1298.6.0 openEuler openEuler 22.03 64bit openEuler 20.03 64bit 中标麒麟 NeoKylin 7.6 64bit NeoKylin 7.4 64bit NeoKylin Server release 5.0 U2 64bit NeoKylin Linux Advanced Server release 7.0 U5 64bit 表2 外部镜像文件支持的操作系统类型(ARM架构类型) 操作系统类型 操作系统版本 AlmaLinux AlmaLinux 8.4 64bit AlmaLinux 8.3 64bit CentOS CentOS 8.0 64bit CentOS 7.6 64bit CentOS 7.5 64bit CentOS 7.4 64bit Debian Debian GNU/Linux 10.2.0 64bit EulerOS EulerOS 2.10 64bit EulerOS 2.9 64bit EulerOS 2.8 64bit Fedora Fedora 29 64bit Ubuntu Ubuntu 20.04 Server 64bit Ubuntu 19.04 Server 64bit Ubuntu 18.04 Server 64bit SUSE SUSE Linux Enterprise Server 12 SP5 64bit openEuler openEuler 22.03 64bit openEuler 20.03 64bit openSUSE openSUSE 15.0 64bit 中标麒麟 NeoKylin V7 64bit NeoKylin 7.7 64bit 统信 UOS 20 64bit 银河麒麟 Kylin V10 64bit Kylin Desktop V10 64bit 麒麟信安 KylinSec 3.3 64bit 普华 iSoft 5.1 64bit
  • API概览 通过调用云手机服务器服务提供的接口,您可以完整地使用云手机的所有功能。例如查询云手机列表、重启云手机、为云手机推送文件。 表1 云手机服务器接口说明 类型 子类型 说明 云手机服务器 云手机服务器管理 包括查询云手机服务器列表、查询云手机服务器规格列表、购买云手机服务器等接口。 带宽管理 包括查询带宽信息、修改共享带宽接口。 手机实例管理 包括查询云手机列表、查询云手机镜像、重置云手机、重启云手机等接口。 任务管理 包括查询任务执行状态、查询任务执行状态列表接口。 密钥管理 您可通过该接口修改连接云手机的密钥对。 编码服务管理 您可通过该接口查询和重启编码服务。 ADB命令 包含推送文件、安装apk、卸载apk等接口。 标签管理 包括查询项目标签、查询资源标签、查询资源实例等接口。
  • 安装SDK 推荐使用 Composer 安装 SDK 。 Composer 是 php 的依赖管理工具,允许您在项目中声明依赖关系并安装这些依赖: // 安装 Composer curl -sS https://getcomposer.org/installer | php // 安装 PHP SDK composer require huaweicloud/huaweicloud-sdk-php 安装完毕后,你需要引入 Composer 的自动加载文件: require 'path/to/vendor/autoload.php';
  • 安装SDK 使用SDK前,需要安装“HuaweiCloud.SDK.Core”和“HuaweiCloud.SDK.Ivs”,有两种安装方式,分别如下。 使用 .NET CLI 工具 dotnet add package HuaweiCloud.SDK.Core dotnet add package HuaweiCloud.SDK.Ivs 使用 Package Manager Install-Package HuaweiCloud.SDK.Core Install-Package HuaweiCloud.SDK.Ivs
  • 开始使用SDK 导入依赖模块 import ( "fmt" "os" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" // 导入IVS sdk ivs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ivs/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ivs/v2/model" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ivs/v2/region" ) 配置认证信息 配置AK、SK信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。AK、SK获取方法请参见准备工作。 // 创建AK、SK认证凭据 func GetCredential(ak, sk string) basic.Credentials { return basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() } 初始化认证信息: ak := os.Getenv("HUAWEICLOUD_SDK_AK") sk := os.Getenv("HUAWEICLOUD_SDK_SK") client := GetCredential(ak, sk) 认证用的 ak 和sk 硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 本示例以 ak 和 sk 保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 图3 Windows环境新建环境变量 初始化客户端 指定region方式 // 选择服务部署区域 func GetClient(auth basic.Credentials) *ivs.IvsClient { return ivs.NewIvsClient( ivs.IvsClientBuilder(). WithRegion(region.CN_NORTH_4). WithCredential(auth). Build()) } CN_NORTH_4:华北-北京四 CN_NORTH_1:华北-北京一 发送请求并查看响应 # 以调用标准版(三要素)接口 DetectStandardByIdCardImage 为例 request := &model.DetectStandardByIdCardImageRequest{} response, err := client.DetectStandardByIdCardImage(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } 异常处理 表1 异常处理 一级分类 一级分类说明 ServiceResponseError 服务响应异常 url.Error url异常 // 异常处理 response, err := client.DetectStandardByIdCardImage(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
  • SDK demo代码解析 人证核身 标准版(三要素) 方式一:使用身份证图片、人像图片进行校验 request := &model.DetectStandardByIdCardImageRequest{} idcardImage2ReqDataReqDataByIdCardImage:= "身份证国徽面图像数据,使用base64编码" var listReqDataIvsStandardByIdCardImageRequestBodyData = []model.ReqDataByIdCardImage{ { IdcardImage1: "身份证人像面图像数据,使用base64编码", IdcardImage2: &idcardImage2ReqDataReqDataByIdCardImage, FaceImage: "现场人像图像数据,使用base64编码,", }, } databody := &model.IvsStandardByIdCardImageRequestBodyData{ ReqData: &listReqDataIvsStandardByIdCardImageRequestBodyData, } uuidMetaMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" metabody := &model.Meta{ Uuid: &uuidMetaMeta, } request.Body = &model.IvsStandardByIdCardImageRequestBody{ Data: databody, Meta: metabody, } response, err := client.DetectStandardByIdCardImage(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } 方式二:使用身份证姓名、身份证号码文本,人像图片进行校验 request := &model.DetectStandardByNameAndIdRequest{} var listReqDataIvsStandardByNameAndIdRequestBodyData = []model.StandardReqDataByNameAndId{ { VerificationName: "被验证人的姓名", VerificationId: "被验证人的身份证号码", FaceImage: "现场人像图像数据,使用base64编码", }, } databody := &model.IvsStandardByNameAndIdRequestBodyData{ ReqData: &listReqDataIvsStandardByNameAndIdRequestBodyData, } uuidMetaMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" metabody := &model.Meta{ Uuid: &uuidMetaMeta, } request.Body = &model.IvsStandardByNameAndIdRequestBody{ Data: databody, Meta: metabody, } response, err := client.DetectStandardByNameAndId(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } 方式三:使用现场拍摄的人像视频数据,实现活体人证核身 request := &model.DetectStandardByVideoAndIdCardImageRequest{} idcardImage2ReqData:= "身份证国徽面图像数据,使用base64编码" var listReqDataData = []model.ReqDataByVideoAndIdCardImage{ { IdcardImage1: "身份证人像面图像数据,使用base64编码", IdcardImage2: &idcardImage2ReqData, Video: "现场拍摄人像视频数据,使用base64编码", Actions: "动作代码顺序列表", }, } databody := &model.IvsStandardByVideoAndIdCardImageRequestBodyData{ ReqData: &listReqDataData, } uuidMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" metabody := &model.Meta{ Uuid: &uuidMeta, } request.Body = &model.IvsStandardByVideoAndIdCardImageRequestBody{ Data: databody, Meta: metabody, } response, err := client.DetectStandardByVideoAndIdCardImage(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } 人证核身证件版(二要素) 方式一:使用身份证图片进行校验 request := &model.DetectExtentionByIdCardImageRequest{} idcardImage2ReqDataExtentionReqDataByIdCardImage:= "身份证国徽面图像数据,使用base64编码" var listReqDataIvsExtentionByIdCardImageRequestBodyData = []model.ExtentionReqDataByIdCardImage{ { IdcardImage1: "身份证人像面图像数据,使用base64编码", IdcardImage2: &idcardImage2ReqDataExtentionReqDataByIdCardImage, }, } databody := &model.IvsExtentionByIdCardImageRequestBodyData{ ReqData: &listReqDataIvsExtentionByIdCardImageRequestBodyData, } uuidMetaMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" metabody := &model.Meta{ Uuid: &uuidMetaMeta, } request.Body = &model.IvsExtentionByIdCardImageRequestBody{ Data: databody, Meta: metabody, } response, err := client.DetectExtentionByIdCardImage(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } 方式二:使用身份证姓名、身份证号码文本进行校验 request := &model.DetectExtentionByNameAndIdRequest{} var listReqDataIvsExtentionByNameAndIdRequestBodyData = []model.ExtentionReqDataByNameAndId{ { VerificationName: "被验证人的姓名", VerificationId: "被验证人的身份证号码", }, } databody := &model.IvsExtentionByNameAndIdRequestBodyData{ ReqData: &listReqDataIvsExtentionByNameAndIdRequestBodyData, } uuidMetaMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" metabody := &model.Meta{ Uuid: &uuidMetaMeta, } request.Body = &model.IvsExtentionByNameAndIdRequestBody{ Data: databody, Meta: metabody, } response, err := client.DetectExtentionByNameAndId(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
  • 开始使用SDK 导入依赖模块 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions import exceptions # 导入IVS的库 from huaweicloudsdkivs.v2.region.ivs_region import IvsRegion from huaweicloudsdkivs.v2 import * import os 配置认证信息 配置AK、SK信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。AK、SK获取方法请参见准备工作。 // 创建AK、SK认证凭据 def GetCredential(): return BasicCredentials(ak, sk) 初始化认证信息: ak = os.environ.get("HUAWEICLOUD_SDK_AK") sk = os.environ.get("HUAWEICLOUD_SDK_SK") credentials = GetCredential(ak, sk) 认证用的 ak 和sk 硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 本示例以 ak 和 sk 保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 图3 Windows环境新建环境变量 初始化客户端 指定region方式 # 选择服务部署区域 def GetClient(): return IvsClient.new_builder(IvsClient) \ .with_credentials(credentials) \ .with_region(IvsRegion.CN_NORTH_4) \ .build() CN_NORTH_4:华北-北京四 CN_NORTH_1:华北-北京一 发送请求并查看响应 # 以调用标准版(三要素)接口 DetectStandardByIdCardImage 为例 request = DetectStandardByIdCardImageRequest() response = client.detect_standard_by_id_card_image(request) print(response) 异常处理 表1 异常处理 一级分类 一级分类说明 二级分类 二级分类说明 ConnectionException 连接类异常 HostUnreachableException 网络不可达、被拒绝。 SslHandShakeException SSL认证异常。 RequestTimeoutException 响应超时异常 CallTimeoutException 单次请求,服务器处理超时未返回。 RetryOutageException 在重试策略消耗完成后,仍无有效的响应。 ServiceResponseException 服务器响应异常 ServerResponseException 服务端内部错误,Http响应码:[500,]。 ClientRequestException 请求参数不合法,Http响应码:[400, 500) # 异常处理 try: request = DetectStandardByIdCardImageRequest() response = client.detect_standard_by_id_card_image(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
  • SDK demo 代码解析 人证核身标准版(三要素) 方式一:使用身份证图片、人像图片进行校验 try: request = DetectStandardByIdCardImageRequest() listReqDataByIdCardImageReqDataIvsStandardByIdCardImageRequestBodyData = [ ReqDataByIdCardImage( idcard_image1="身份证人像面图像数据,使用base64编码", idcard_image2="身份证国徽面图像数据,使用base64编码", face_image="现场人像图像数据,使用base64编码," ) ] dataIvsStandardByIdCardImageRequestBodyData = IvsStandardByIdCardImageRequestBodyData( req_data=listReqDataByIdCardImageReqDataIvsStandardByIdCardImageRequestBodyData ) metaMeta = Meta( uuid="唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" ) request.body = IvsStandardByIdCardImageRequestBody( data=dataIvsStandardByIdCardImageRequestBodyData, meta=metaMeta ) response = client.detect_standard_by_id_card_image(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) 方式二:使用身份证姓名、身份证号码文本,人像图片进行校验 try: request = DetectStandardByNameAndIdRequest() listStandardReqDataByNameAndIdReqDataIvsStandardByNameAndIdRequestBodyData = [ StandardReqDataByNameAndId( verification_name="被验证人的姓名", verification_id="被验证人的身份证号码", face_image="现场人像图像数据,使用base64编码" ) ] dataIvsStandardByNameAndIdRequestBodyData = IvsStandardByNameAndIdRequestBodyData( req_data=listStandardReqDataByNameAndIdReqDataIvsStandardByNameAndIdRequestBodyData ) metaMeta = Meta( uuid="唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" ) request.body = IvsStandardByNameAndIdRequestBody( data=dataIvsStandardByNameAndIdRequestBodyData, meta=metaMeta ) response = client.detect_standard_by_name_and_id(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) 方式三:使用现场拍摄的人像视频数据,实现活体人证核身 try: request = DetectStandardByVideoAndIdCardImageRequest() listReqDataData = [ ReqDataByVideoAndIdCardImage( idcard_image1="身份证人像面图像数据,使用base64编码", idcard_image2="身份证国徽面图像数据,使用base64编码", video="现场拍摄人像视频数据,使用base64编码", actions="动作代码顺序列表" ) ] databody = IvsStandardByVideoAndIdCardImageRequestBodyData( req_data=listReqDataData ) metabody = Meta( uuid="唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" ) request.body = IvsStandardByVideoAndIdCardImageRequestBody( data=databody, meta=metabody ) response = client.detect_standard_by_video_and_id_card_image(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) 人证核身证件版(二要素) 方式一:使用身份证图片进行校验 try: request = DetectExtentionByIdCardImageRequest() listExtentionReqDataByIdCardImageReqDataIvsExtentionByIdCardImageRequestBodyData = [ ExtentionReqDataByIdCardImage( idcard_image1="身份证人像面图像数据,使用base64编码", idcard_image2="身份证国徽面图像数据,使用base64编码" ) ] dataIvsExtentionByIdCardImageRequestBodyData = IvsExtentionByIdCardImageRequestBodyData( req_data=listExtentionReqDataByIdCardImageReqDataIvsExtentionByIdCardImageRequestBodyData ) metaMeta = Meta( uuid="唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" ) request.body = IvsExtentionByIdCardImageRequestBody( data=dataIvsExtentionByIdCardImageRequestBodyData, meta=metaMeta ) response = client.detect_extention_by_id_card_image(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) 方式二:使用身份证姓名、身份证号码文本进行校验 try: request = DetectExtentionByNameAndIdRequest() listExtentionReqDataByNameAndIdReqDataIvsExtentionByNameAndIdRequestBodyData = [ ExtentionReqDataByNameAndId( verification_name="被验证人的姓名", verification_id="被验证人的身份证号码" ) ] dataIvsExtentionByNameAndIdRequestBodyData = IvsExtentionByNameAndIdRequestBodyData( req_data=listExtentionReqDataByNameAndIdReqDataIvsExtentionByNameAndIdRequestBodyData ) metaMeta = Meta( uuid="唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e" ) request.body = IvsExtentionByNameAndIdRequestBody( data=dataIvsExtentionByNameAndIdRequestBodyData, meta=metaMeta ) response = client.detect_extention_by_name_and_id(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
  • 开始使用SDK 导入依赖模块 import com.huaweicloud.sdk.core.auth.ICredential; // 对用户身份进行认证 import com.huaweicloud.sdk.core.auth.BasicCredentials; // 请求异常类 import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; // 导入ivs sdk import com.huaweicloud.sdk.ivs.v2.region.IvsRegion; import com.huaweicloud.sdk.ivs.v2.*; import com.huaweicloud.sdk.ivs.v2.model.*; 配置认证信息 配置AK、SK信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。AK、SK获取方法请参见准备工作。 // 创建AK、SK认证凭据 public static ICredential getCredential(String ak, String sk) { return new BasicCredentials() .withAk(ak) .withSk(sk); } 初始化认证信息: String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); ICredential credential = getCredential(ak, sk); 认证用的 ak 和sk 硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 本示例以 ak 和 sk 保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 图3 Windows环境新建环境变量 初始化客户端 指定region方式 public static IvsClient getClient(Region region, ICredential auth) { // 初始化客户端 return IvsClient.newBuilder() .withCredential(auth) .withRegion(region) .build(); } 华北-北京四region获取:IvsRegion.CN_NORTH_4 华北-北京一region获取:IvsRegion.CN_NORTH_1 发送请求并查看响应 // 以调用标准版(三要素)DetectStandardByIdCardImage 接口为例 DetectStandardByIdCardImageRequest request = new DetectStandardByIdCardImageRequest(); DetectStandardByIdCardImageResponse response = client.detectStandardByIdCardImage(request); System.out.println(response.toString()); 异常处理 表1 异常处理 一级分类 一级分类说明 二级分类 二级分类说明 ConnectionException 连接类异常 HostUnreachableException 网络不可达、被拒绝。 SslHandShakeException SSL认证异常。 RequestTimeoutException 响应超时异常 CallTimeoutException 单次请求,服务器处理超时未返回。 RetryOutageException 在重试策略消耗完成后,仍无有效的响应。 ServiceResponseException 服务器响应异常 ServerResponseException 服务端内部错误,Http响应码:[500,]。 ClientRequestException 请求参数不合法,Http响应码:[400, 500) // 捕获和处理不同类型的异常 DetectStandardByIdCardImageRequest request = new DetectStandardByIdCardImageRequest(); try { DetectStandardByIdCardImageResponse response = client.detectStandardByIdCardImage(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); }
  • 解决措施 用户没有服务监控查看权限,可以申请主账号为此IAM用户开通对应的服务,或者授予权限即可,具体操作如下: 登录主账号,进入控制台后,为此IAM用户开通对应的服务(如:通用表格),此用户就会有权限查看服务监控中通用表格的数据。 图2 开通通用表格 图3 服务监控 主账号需要给此用户授予admin/Full Access权限。操作如下: 登录主账号,进入控制台后,界面右上角账号名下面找到 统一身份认证 进入页面。 图4 统一身份认证 给此用户授予admin/Full Access权限后,用户即可查看服务监控数据。 图5 授权1 图6 授权2 图7 服务监控 给IAM用户授予admin/Full Access权限后,此IAM用户将会获得跟主账号一样的所有权限,需谨慎开通。
  • APIG.0106报错处理方法 如果调用API时返回错误信息与错误码:"error_msg":"Orchestration error.","error_code":"APIG.0106",表示需要检查API配置的前后端参数是否合理。 API的前端参数配置了校验规则,调用时没有满足,则会产生此报错。 您可以尝试以下解决方法: 检查参数的必填项是否填写完整。 检查参数规则是否正确,例如参数值必须填写为数字等。 父主题: 错误码类
  • APIG.0101报错处理方法 访问的API不存在或尚未在环境中发布。The API does not exist or has not been published in the environment. 请检查API的URL是否拼写正确,例如,URL中是否缺少project_id。 检查URI中的区域信息是否和开通服务的终端节点一致。 图1 开通服务的终端节点 图2 URI中的区域信息 HTTP请求方法(POST,GET等)是否正确。 具体的URI信息请在各接口的API页面查看。 父主题: 错误码类
  • 无编程访问权限 调用API时,出现"code":403,"message":"This user only supports console access, not programmatic access."表示用户没有编程访问权限。 子用户没有编程访问权限,需要联系主账户进行权限设置。 主账户在统一身份认证服务界面,选择对应的子用户操作列的“安全设置”进入设置界面。 图1 编程访问权限设置 父主题: Token认证鉴权类
  • 不同区域是否有时延 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。 不过,在基础设施、BGP网络品质、资源的操作与配置等方面,中国大陆各个区域间区别不大,如果您或者您的目标用户在中国大陆,可以不用考虑不同区域造成的网络时延问题。 父主题: 区域与可用区
  • ModelArts.0212报错处理方法 调用API时出现{"error_code":"ModelArts.0212","error_msg":"Invalid Token header. The Token not contain project item. "},表示Token无效,Token中缺少project信息。 OCR服务为项目级别服务, 获取Token 接口中,需填写scope参数,并设置为project,例如填写为cn-north-4,获取到北京四区域的Token。 父主题: 错误码类
  • 使用OCR服务是否必须使用华为 云存储 图片 文字识别 服务支持输入图片的base64编码或图片的url路径。 如果您使用图片的url路径,可以将图片上传至华为云 对象存储服务 (OBS)中,使用OBS提供的图片url。 关于OBS的使用请参考配置OBS访问权限。 OCR识别OBS私有桶中的图片时需要保证调用OCR服务的账号和调用OBS服务的账号为同一个。 同时,您也可以不使用华为云存储,使用公网http/https url传入图片。 父主题: 产品咨询类
  • APIG.0307报错处理方法 如果调用API时返回错误信息与错误码:"error_msg":"The token must be updated.","error_code":"APIG.0307",是因为Token失效,需要进行更新。 您可以尝试以下方案进行解决。 Token有效期为24小时,请使用重新获取Token调用API。 检查接口URL中的终端节点是否填写正确。部署在不同区域间的服务,不可以跨区域调用。如果调用了不同区域的接口,导致判断为Token失效,显示APIG.0307错误码。 父主题: 错误码类
  • APIG.0201报错处理方法 如果调用API时返回错误信息与错误码:"error_msg":"Backend timeout.","error_code":"APIG.0201",表示请求超时。 您可以尝试以下方案进行解决。 使用Postman等工具直接调用服务,查看是否成功,如果调用成功表示服务接口没有问题,请执行如下步骤1和步骤2进行检查: 请检查原调用请求是否过于频繁,如果是并发过大,可以通过重试机制解决,在代码里检查返回值,碰到这个并发错误可以延时一小段时间(如2-5s)重试请求;也可以后端检查上一个请求结果,上一个请求返回之后再发送下一个请求,避免请求过于频繁。 请检查图片是否过大,或网络延时过长,如果图片过大,在保证图片清晰度前提下可以对图片进行等比例压缩;如果网络延时较长,可以适当提升网络传输速度。 如以上方案无法解决问题,请联系我们。 父主题: 错误码类
  • ModelArts.4603、ModelArts.4704报错处理方法 如果在调用API时返回错误信息与错误码: "error_code":"ModelArts.4603","error_msg":"Obtaining the file from the URL failed. "表示从URL获取图片数据失败,可通过以下几个方面进行排查:(1)请确保提供的URL支持HTTP/HTTPS请求协议,即格式为http/https url;(2)请检查存储图片的服务器是否稳定可靠,网络连接是否有异常,是否公网可访问;(3)请检查下载图片的content-type是否为标准类型,例如:image/gif、image/jpeg、image/png、image/tiff。建议:使用OBS的URL进行请求。 "error_code":"ModelArts.4704","error_msg":"Obtaining the file from the OBS failed. "表示从OBS获取图片数据失败,请确保存储图片的OBS路径存在且可访问,如果路径存在,请确保设置OBS桶策略为公共桶。建议:不要使用跨区域的OBS路径,如果OBS与调用服务部署区域不属于用一个区域,建议本地下载图片后使用image的调用方式。 父主题: 错误码类
  • APIG.0301报错处理方法 如果在调用API时返回错误信息与错误码: "error_msg":"Incorrect IAM authentication information: decrypt token fail","error_code":"APIG.0301",是因为token解密失败。 "error_msg":"Incorrect IAM authentication information: x-auth-token not found","error_code":"APIG.0301",请求header中未添加X-Auth-Token。 "error_msg":"Incorrect IAM authentication information: token expires, expires_at: xxx","error_code":"APIG.0301",是因为Token过期。 解决方案: 请检查token是否过期。 获取token的方法,请求体信息是否填写正确,token是否正确完整。 获取token的环境与调用的环境是否一致是否跨区。 检查账号权限,是否欠费,被冻结等。 "error_msg":"Incorrect IAM authentication information: verify aksk signature fail","error_code":"APIG.0301",是因为AK/SK认证失败。 解决方案: 请检查AK/SK是否正确,AK对应的SK错误,不匹配;AK/SK中多填了空格。 AK/SK频繁出现鉴权出错,连续错误5次以上,被锁定5分钟(5分钟内,则一直认为其是异常的鉴权请求),5分钟后解锁重新认证。 检查账号权限,是否欠费,被冻结等。 父主题: 错误码类
  • Token消息体中user name,domain name和project name分别指的是什么 user name指用户名称,domain name指用户所属的账号名称。如果使用账号获取token,账号的user name和domain name相同。如果使用IAM用户获取token(账号可以创建多个IAM用户),user name和domain name不相同,user name为实际的用户名称。 project name指项目名称,如“cn-north-4”。获取方法参见获取用户名、用户ID、项目名称、项目ID。 父主题: Token认证鉴权类
  • 使用OCR服务,是否会保存用户数据 OCR服务坚持“华为云始终把可信作为产品质量的第一要素”的理念,我们基于安全、合规、隐私、韧性、透明,为您提供有技术、有未来、值得信赖的云服务。 OCR服务承诺用户识别的图片与识别结果全部不作任何形式留存,识别返回后立即释放。 具体的声明请参考隐私政策声明和法律声明,可信资源请参见白皮书资源。关于文字识别的相关声明请参见文字识别服务声明。 父主题: 数据安全与隐私
  • 获取Token返回401状态码 获取Token返回401状态码有以下几种情况: Token的有效期为24小时,使用Token方式调用OCR服务返回401状态码,表示Token已经过期。建议重新获取Token调用OCR服务。 您的IAM账号的账号名与主账号的账号名一致,为了保证您的资产安全,限制了该账号下的token不可用。建议您新建一个IAM账号(不同名)授权后再进行相关操作。 近期做过更换密码、服务开通或者权限变更等操作,可能会导致Token失效。需要重新获取Token。 父主题: Token认证鉴权类
  • OCR的并发是多少 文字识别服务属于公有云服务,线上用户资源共享,并发量会根据线上用户的调用情况动态调整。 如遇到突发高峰导致的并发量不够用的情况,您可以尝试以下两种解决方法: 通过重试机制,在代码里检查返回值,碰到并发错误可以延时一小段时间(如2-5s)重试请求。 后端检查上一个请求结果,上一个请求返回之后再发送下一个请求,避免请求过于频繁。 如果需要更大的并发需求,尤其是常态性的持续多并发需求,请通过华为云客服联系我们。详细描述您的使用场景和并发需求。 父主题: API使用类
  • APIG.0308报错处理方法 如果调用API时返回错误信息与错误码:"error_msg":"The throttling threshold has been reached: policy user over ratelimit,limit:XX,time:1 minute","error_code":"APIG.0308",是因为每个用户调用不同服务都有并发限制,例如目前该服务并发量最大为1分钟XX次。 您可以尝试以下两种解决方法: 通过重试机制,在代码里检查返回值,碰到并发错误可以延时一小段时间(如2-5s)重试请求; 后端检查上一个请求结果,上一个请求返回之后再发送下一个请求,避免请求过于频繁。 如果需要更大并发量请联系我们。 父主题: 错误码类
  • 使用Postman调用时,出现获取Token失败的情况 获取Token时,请依据报错信息,选择相应的解决方案。 Body体中服务所在区域是否正确, 对应的key值是否正确。 帐密报错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 父主题: Token认证鉴权类
共100000条