华为云用户手册

  • 操作(Action) 操作(Action)即为SCP中支持的操作项。 “访问级别”列描述如何对操作进行分类(list、read和write等)。此分类可帮助您了解在SCP中相应操作对应的访问级别。 “资源类型”列指每个操作是否支持资源级权限。账号中心仅支持对所有资源有效,通配符号*表示所有。 资源类型支持通配符号*表示所有。如果此列没有值(-),则必须在SCP语句的Resource元素中指定所有资源类型(“*”)。 如果该列包含资源类型,则必须在具有该操作的语句中指定该资源的URN。 资源类型列中必需资源在表中用星号(*)标识,表示使用此操作必须指定该资源类型。 “条件键”列包括了可以在SCP语句的Condition元素中支持指定的键值。 如果该操作项资源类型列存在值,则表示条件键仅对列举的资源类型生效。 如果该操作项资源类型列没有值(-),则表示条件键对整个操作项生效。 如果此列条件键没有值(-),表示此操作不支持指定条件键。 您可以在SCP语句的Action元素中指定以下账号中心的相关操作。
  • EIP资源在什么情况下会被冻结,如何解除被冻结的EIP资源? 欠费被冻结 包年/包月EIP资源 保留期,指宽限期到期后客户的包年/包月资源仍未续订,将进入保留期。保留期即被冻结状态。被冻结的资源不可用,也不能修改、删除。超过保留期仍未续费,冻结资源将被释放,被释放资源不可恢复。为确保资源持续可用,请在资源到期前及时续费。 宽限期和保留期时长因客户等级不同而不同,详细请参考宽限期和保留期时长限制。 按需EIP资源 指宽限期到期后客户的按需资源仍在欠费,将资源置于欠费状态并进入保留期,即被冻结状态。被冻结的资源不可用,也不能修改、删除。超过保留期仍未充值缴清欠费金额,冻结资源将被释放,被释放资源不可恢复。为确保资源持续可用,请在资源到期前完成充值,并确保所欠金额已结清。 冻结的EIP资源在续费或充值后会变为可用状态。如需续费,请在管理控制台续费管理页面进行续费操作。详细操作请参考续费管理。 EIP绑定的实例对外有攻击被冻结 EIP资源绑定的服务器如果对外有攻击等安全违规行为,即被冻结状态,在控制台上显示为冻结(违规冻结)。被冻结的资源不可用,也不能修改、删除。如果要解除冻结状态,请提交工单。您还可以参考如何为实例解绑已有弹性公网IP并绑定新的弹性公网IP?为实例更换EIP。 EIP绑定的实例涉嫌违规被冻结 EIP资源绑定的服务器涉嫌违规行为,被国家监管部门冻结。如您通过自检确认未曾涉嫌违规操作,请联系国家监管部门进行申诉,如申诉成功,华为云将获得解封指令解冻您的资源。您还可以参考如何为实例解绑已有弹性公网IP并绑定新的弹性公网IP?为实例更换EIP。 父主题: 产品咨询类
  • 请求示例 修改ID为ba1ca687-1895-4fc3-88ca-9db02ce2a14e的泳道组网关路由配置。 { "gray_release_type": "WEIGHT", "swimlanes": [ { "id": "1cd0cb71-5d5d-41a0-8b05-f7ed53400cf7", "weight": 50 }, { "id": "414dccf2-3c15-47c2-8479-0337a5ccc4d9", "weight": 50 } ] }
  • 响应示例 { "gateways": [ { "id": "71949725-9c8f-483a-a05f-74d33ff1613e", "name": "microGateway-cy8bhr", "target_services": [ { "id": "8177d237-b912-4167-a90d-33c603610d0b", "host": "provider..demo-java-chassis-cse-v2.servicecomb", "name": "provider", "engine_id": "d68a5ca7-b5b6-4917-a464-0adef94b8067", "engine_type": "servicecomb" } ], "engine_id": "d68a5ca7-b5b6-4917-a464-0adef94b8067" } ], "id": "ba1ca687-1895-4fc3-88ca-9db02ce2a14e", "name": "test", "gray_release_type": "WEIGHT", "description": "test-descption", "project_id": "578ac30b81034b89a7255b3af26db9c9", "creator": "test_user", "create_time": 1726623793113, "update_time": 1726623793113, "swimlanes": [ { "id": "1cd0cb71-5d5d-41a0-8b05-f7ed53400cf7", "name": "base", "swimlane_group_id": "ba1ca687-1895-4fc3-88ca-9db02ce2a14e", "type": "BASE", "tag": "base", "route_status": "ENABLE", "rule_match_mode": null, "project_id": "578ac30b81034b89a7255b3af26db9c9", "rules": null, "creator": "test_user", "create_time": 1726626094346, "update_time": 1726626094346, "instances": [ { "componentId": "c14f17b7-ac44-4738-8b57-4be7eff7a956", "environmentId": "d1b623d9-3350-4777-8979-5b4b571ca518", "id": "5fd78836-301e-4750-bdc9-be8a9e43b19a", "name": "weater-beta", "version": "2024.0914.17114", "application_id": "69993ce9-e468-3349-acb8-a30b85b17de5", "application_name": "weathermap", "status": "RUNNING", "engine_id": "d68a5ca7-b5b6-4917-a464-0adef94b8067", "runtime_stack": { "id": "656d9392-658f-4c2c-bb4f-3702a1169267", "url": "openjdk-{arch}:8-1.3.8", "type": "Java", "name": "OpenJDK8", "deploy_mode": "container", "app_spec_name": "", "version": "1.3.8", "status": "Supported", "release_note": "Fixed some security issues and bugs.", "spec": { "os": "EulerOS 2.9.8", "sdk": "OpenJDK-8u411", "digest": null }, "parameters": null, "system": null }, "replica": 1 } ], "instance_count": 1, "weight": 50, "batch_status": null, "latest_opt": null, "release_plan_id": null }, { "id": "414dccf2-3c15-47c2-8479-0337a5ccc4d9", "name": "gray", "swimlane_group_id": "ba1ca687-1895-4fc3-88ca-9db02ce2a14e", "type": "GRAY", "tag": "gray", "route_status": "ENABLE", "rule_match_mode": null, "project_id": "578ac30b81034b89a7255b3af26db9c9", "rules": null, "creator": "test_user", "create_time": 1726627610327, "update_time": 1726627610327, "instances": null, "instance_count": 0, "weight": 50, "batch_status": null, "latest_opt": null, "release_plan_id": null } ], "swimlane_count": 2, "engine_ids": [ "d68a5ca7-b5b6-4917-a464-0adef94b8067" ] }
  • 响应消息 表6 响应参数 参数 参数类型 描述 id String 泳道组ID。 name String 泳道组名称。 description String 泳道组描述。 creator String 创建人。 project_id String 项目ID。 gray_release_type String 泳道组灰度类型。 WEIGHT:基于流量比例进行全链路灰度。 CONTENT:基于内容进行全链路灰度。 engine_ids Array of String 网关目标服务引擎ID。 gateways Array of objects 目标服务列表,请参考表7。 swimlane_count Integer 泳道数量。 swimlanes Array of objects 泳道列表,请参考表9。 create_time Integer 创建时间。 update_time Integer 更新时间。 表7 gateways 参数 参数类型 描述 id String 网关ID。 name String 网关名称。 engine_id String 目标服务引擎ID,对应于目标服务对应的服务来源所用的引擎ID。 target_services Array of objects 目标服务列表,对应于网关服务管理中的服务。请参考表8。 表8 target_services 参数 参数类型 描述 id String 目标服务ID。 name String 目标服务名称。 host String 目标服务host信息。 host信息由目标服务的接入引擎后的微服务名、微服务所在环境名、微服务所属应用名称已经微服务接入的引擎类型组成,以点号(.)分隔。 例如,unit-controller.testing.test-application.servicecomb。unit-controller为接入引擎的微服务名称,testing为unit-controller微服务所在环境名,test-application为unit-controller微服务所属应用名称,servicecomb表示unit-controller微服务接入的是ServiceComb引擎。 表9 swimlanes 参数 参数类型 描述 id String 泳道ID。 name String 泳道名称。 swimlane_group_id String 所属的泳道组ID。 type String 泳道类型。 BASE:基线泳道。 GRAY:灰度泳道。 tag String 泳道标签,根据标签来控制流量的走向。 route_status String 泳道路由状态。 ENABLE:开启路由。 DISABLED:关闭路由。 rule_match_mode String 路由规则匹配模式。包括ALL和ANY。 ALL表示匹配所有的规则、ANY表示匹配任一规则。 当泳道组灰度类型为基于内容,即gray_release_type为CONTENT时生效。 rules Array of objects 路由规则。 当泳道组灰度类型为基于内容,即gray_release_type为CONTENT时生效。 请参考表10。 weight Integer 泳道流量权重。范围在0-100之间。 当泳道组灰度类型为基于流量,即gray_release_type为WEIGHT时生效。 instances Array of objects 泳道中纳管的组件列表。 请参考表11。 instance_count Integer 泳道中纳管的组件个数。 latest_opt String 泳道上一步的操作。 CLONE:克隆。 UPGRADE:升级。 ROLLBACK:回滚。 CREATE:创建。 release_plan_id String 泳道上一步操作关联的发布单ID。 project_id String 项目ID。 create_time Integer 创建时间。 update_time Integer 更新时间。 creator String 创建人。 表10 rules 参数 参数类型 描述 type String 灰度匹配规则类型。当前只支持HEADER,即基于Header头进行匹配。 key String 键。 value String 值。 condition String 匹配条件。 EXACT:精确匹配。 PREFIX:前缀匹配。 REGEX:正则匹配。 表11 instances 参数 参数类型 描述 id String 应用组件实例ID。 name String 应用组件实例名称。 version String 应用组件版本号。 application_id String 应用ID。 component_id String 组件ID。 application_name String 应用名称。 status String 实例状态。 engine_id String 组件关联引擎ID。 runtime_stack Object 运行时,请参考表12。 replica Integer 实例副本数。 表12 runtime_stack 参数 参数类型 描述 name String 技术栈名称。 type String 技术栈类型,支持Java、Tomcat、Nodejs、Php、Docker、Python。 当部署模式为虚机部署时,仅支持Java、Tomcat、Nodejs;容器部署上述类型都支持。 version String 技术栈版本。 deploy_mode String 部署模式。 container,容器部署。 virtualmachine,虚机部署。
  • 请求消息 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json;charset=utf8”。 X-Auth-Token 是 String 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 gray_release_type 是 String 泳道组灰度类型。 WEIGHT:基于流量比例进行全链路灰度。 CONTENT:基于内容进行全链路灰度。 swimlanes 是 Array of objects 泳道列表,请参考表4。 表4 swimlanes 参数 是否必选 参数类型 描述 rule_match_mode 是 String 路由规则匹配模式。当泳道组灰度类型为基于内容,即gray_release_type为CONTENT时生效。 ALL:匹配所有的规则。 ANY:匹配任一规则。 rules 是 Array of objects 路由规则。当泳道组灰度类型为基于内容,即gray_release_type为CONTENT时生效。请参考表5。 weight 是 Integer 泳道流量权重,范围在0-100之间。当泳道组灰度类型为基于流量,即gray_release_type为WEIGHT时生效。 表5 rules 参数 是否必选 参数类型 描述 type 是 String 灰度匹配规则类型。当前只支持HEADER,即基于Header头进行匹配。 key 是 String 键。 value 是 String 值。 condition 是 String 匹配条件。 EXACT:精确匹配 PREFIX:前缀匹配。 REGEX:正则匹配。
  • 微服务 表15 微服务接口 API 说明 查询指定微服务信息 此API用来根据serviceId查询微服务定义信息。 删除微服务定义信息 此API用来删除一个微服务定义及其相关信息,同时注销其所有实例信息。 查询所有微服务信息 此API用来根据条件组合,查询满足所有条件的微服务定义信息。 创建微服务静态信息 此API用来在注册微服务实例前创建服务静态信息,之后注册的微服务实例根据serviceId这个字段与静态信息关联,一个服务对应对多个实例。serviceId可以定制。如果定制了,系统将使用定制的serviceId;如果没定制,系统会随机生成serviceId。 批量删除微服务静态信息 此API用来批量删除指定的微服务定义及其相关信息,同时注销其所有实例信息。 修改微服扩展属性信息 此API用来创建微服务静态信息后对服务部分字段进行更新。每次更新都需要传入完整的服务静态信息json,也就是说,即便不更新部分的字段也要作为json的属性传过去。 查询微服务唯一标识信息 此API用来通过指定条件,查询微服务serviceId或schema的唯一标识信息。
  • 微服务实例 表17 微服务实例接口 API 说明 注册微服务实例 此API用来在创建微服务后注册该微服务的实例。 注册微服务实例时,需提供该微服务实例相关的信息。 instanceId可定制,如果定制了,再次注册就直接全内容覆盖。如果没定制,逻辑如下:系统自动生成id,如果endpoints内容重复,则使用原来的id。 根据service_id查询微服务实例 此API用来在实例注册后根据service_id发现该微服务的所有实例。 注销微服务实例 此API用来在实例注册后根据instance_id进行实例注销。 查询微服务实例详细信息 此API用来在实例注册后根据service_id和instance_id获取该实例的详细信息。 修改微服务实例扩展信息 此API用来在实例注册后根据instance_id添加/更新一个微服务实例的扩展信息。 修改微服务实例状态 此API用来在实例注册后根据instance_id更新一个微服务实例的状态。 发送心跳信息 此API用来在服务提供端向服务中心发送心跳信息,以保证服务中心知道服务实例是否健康。 按条件查询微服务实例 此API用来在实例注册后根据微服务版本规则或字段条件发现该微服务的实例。 批量查询微服务实例 此API用来在实例注册后根据微服务版本规则或字段条件批量发现多个微服务的实例。
  • 泳道组接口 表5 泳道组接口 API 说明 创建泳道组 此API用来在创建泳道组。 泳道组是一组泳道的集合,用于区分不同的组织或场景。同一个项目下,最多支持创建300个泳道组。 获取所有泳道组 此API用来获取所有已经创建的泳道组。 根据泳道组ID获取泳道组信息 此API用来根据泳道组ID获取泳道组信息。 根据泳道组ID修改泳道组 此API用来根据泳道组ID修改泳道组。 根据泳道组ID删除泳道组 此API用来根据泳道组ID删除泳道组。 根据网关ID获取目标服务列表 此API用来根据网关ID获取目标服务列表。 根据泳道组ID修改泳道组网关路由配置 此API用来根据泳道组ID修改泳道组网关路由配置。
  • 泳道接口 表6 泳道接口 API 说明 泳道组下创建泳道 此API用来在泳道组下创建泳道。 根据微服务引擎ID获取所有泳道 此API用来根据微服务引擎ID获取所有泳道。 获取泳道组下所有泳道 此API用来获取泳道组下所有泳道。 根据泳道ID获取泳道信息 此API用来根据泳道ID获取泳道信息。 根据泳道ID修改泳道信息 此API用来根据泳道ID修改泳道信息。 根据泳道ID删除泳道 此API用来根据泳道ID删除泳道。 根据泳道ID控制泳道路由开关 此API用来根据泳道ID控制泳道路由开关。 根据泳道ID关联组件 此API用来根据泳道ID为泳道关联组件。
  • 访问Git仓库接口 表11 访问Git仓库接口 API 说明 获取仓库授权列表 此API用来获取Git仓库所有授权信息。 获取授权重定向URL 此API用来获取授权重定向URL。 创建OAuth授权 此API用来创建OAuth授权。 创建私人令牌授权 此API用来创建私有令牌授权。 创建口令授权 此API用来创建Git仓库口令授权。 删除仓库授权 此API用来通过名称删除仓库授权。 获取仓库namespaces 此API用来获取仓库namespaces。 通过clone url获取仓库信息 此API用来通过clone url获取仓库信息。 获取命名空间下所有项目 此API用来获取命名空间下所有项目。 创建软件仓库项目 此API用来创建软件仓库项目。 获取项目分支 此API用来获取项目分支。 获取项目tags 此API用来获取项目tags。 创建项目tags 此API用来创建项目tags。 删除项目tags 此API用来删除项目tags。 获取项目commits 此API用来获取项目最近10次commits。 获取项目hooks 此API用来获取项目hooks。 创建项目hook 此API用来创建项目hook。 删除项目hook 此API用来删除项目hook。 获取仓库文件目录 此API用来获取仓库文件目录。 获取仓库文件内容 此API用来获取仓库文件内容。 创建仓库文件 此API用来创建仓库文件。 修改仓库文件内容 此API用来修改仓库文件内容。 删除仓库文件 此API用来删除仓库文件内容。
  • 引擎管理 表13 引擎管理接口 API 说明 查询微服务引擎专享版支持规格 此API用来查询微服务引擎专享版支持的规格。 查询微服务引擎专享版列表 此API用来查询微服务引擎专享版列表。 创建微服务引擎专享版 此API用来创建微服务引擎专享版。 查询微服务引擎专享版详情 此API用来查询微服务引擎专享版详情。 删除微服务引擎专享版 此API用来删除微服务引擎专享版。 查询微服务引擎专享版任务详情 此API用来查询微服务引擎专享版任务详情。
  • 环境接口 表2 环境接口 API 说明 创建环境 此API用来创建环境。 获取所有环境 此API用来获取所有环境。 根据环境ID删除环境 此API用来通过环境ID删除环境。 根据环境ID修改环境 此API用来通过环境ID修改环境。 根据环境ID获取环境详细信息 此API用来通过环境ID获取环境详细信息。 根据环境ID修改环境资源 此API用来通过环境ID修改环境资源。 根据环境ID查询环境资源 此API用来根据环境ID查询环境资源。
  • 组件接口 表4 组件接口 API 说明 应用中创建组件 此API用来在应用中创建组件。 获取应用所有组件 此API用来获取应用下所有组件。 获取所有组件 此API用来获取所有应用组件。 根据组件ID修改组件信息 此API用来通过组件ID修改组件信息。 根据组件ID删除组件 此API用来通过组件ID删除组件。 根据组件ID获取组件信息 此API用来通过组件ID获取组件信息。 根据组件ID下发组件任务 此API用来通过组件ID下发组件任务。 根据组件ID获取记录 此API用来通过组件ID获取记录。
  • 应用接口 表3 应用接口 API 说明 创建应用 此API用来创建应用。 获取所有应用 此API用来获取所有应用。 根据应用ID修改应用信息 此API用来通过应用ID修改应用信息。 根据应用ID删除应用 此API用来通过应用ID删除应用。 根据应用ID获取应用详细信息 此API用来通过应用ID获取应用详细信息。 根据应用ID获取应用配置 此API用来通过应用ID获取应用配置信息。 根据应用ID修改应用配置 此API用来通过应用ID修改应用配置。 根据应用ID删除应用配置 此API用来通过应用ID删除应用配置。
  • 测试计划服务基本操作流程 图1 CodeArts TestPlan基本操作流程 表1 CodeArts TestPlan操作流程说明 流程 说明 开通并授权使用CodeArts TestPlan服务 为您介绍如何购买服务和配置CodeArts TestPlan项目级角色权限。 访问CodeArts TestPlan服务 为您介绍通过项目首页入口和导航入口进入CodeArts TestPlan服务。 新建测试计划 为您介绍配置CodeArts TestPlan测试计划的操作指导。 新建测试用例 您可以通过思维导图创建测试用例或通过服务页面创建测试用例,并执行CodeArts TestPlan测试用例以及管理CodeArts TestPlan测试用例。 新建测试套件 为您介绍如何创建CodeArts TestPlan测试套件和执行CodeArts TestPlan测试套件。 在线拨测 您可以创建在线拨测的测试任务,按照设置的执行频率不间断重复执行测试自动化用例和套件,并且可以设置各种告警策略,通知用户测试任务执行情况。 查看测试质量报告 为您介绍如何查看CodeArts TestPlan测试质量看板和评估CodeArts TestPlan测试质量。
  • 状态码 状态码如表1所示 表1 状态码 状态码 编码 错误码说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTP的新版本协议。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 NoContent 请求完全成功,同时HTTP响应不包含响应体。 在响应OPTIONS方法的HTTP请求时返回此状态码。 205 Reset Content 重置内容,服务器处理成功。 206 Partial Content 服务器成功处理了部分GET请求。 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 301 Moved Permanently 永久移动,请求的资源已被永久的移动到新的URI,返回信息会包括新的URI。 302 Found 资源被临时移动。 303 See Other 查看其它地址。 使用GET和POST请求查看。 304 Not Modified 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 305 Use Proxy 所请求的资源必须通过代理访问。 306 Unused 已经被废弃的HTTP状态码。 400 BadRequest 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 402 Payment Required 保留请求。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 NotFound 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 MethodNotAllowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Time-out 服务器等候请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 410 Gone 客户端请求的资源已经不存在。 返回该状态码,表明请求的资源已被永久删除。 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息。 412 Precondition Failed 未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理。 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。 416 Requested range not satisfiable 客户端请求的范围无效。 417 Expectation Failed 服务器无法满足Expect的请求头信息。 422 UnprocessableEntity 请求格式正确,但是由于含有语义错误,无法响应。 429 TooManyRequests 表明请求超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After首部,然后等待该首部指出的时间后再重试。 500 InternalServerError 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 ServiceUnavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 ServerTimeout 请求在给定的时间内无法完成。客户端仅在为请求指定超时(Timeout)参数时会得到该响应。 505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理。 父主题: 附录
  • 响应消息体 响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。 对于文本对话接口,返回如下消息体。为篇幅起见,这里只展示部分内容。 { "created": 1718772336, "usage": { "completion_tokens": 23, "prompt_tokens": 45, "total_tokens": 68 }, "model": "chatglm3-6b", "id": "chatcmpl-xxx", "choices": [{ "finish_reason": "stop", "index": 0, "message": { "role": "assistant", "content": "你好,有什么我可以帮助你的吗?" }, "logprobs": null }], "object": "chat.completion" } 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_code": "AIAE.31001702", "error_msg": "Model not exists, please check and try again later!" } 其中,error_code表示错误码,error_msg表示错误描述信息。
  • AK/SK认证 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名。详细的签名认证操作流程如下。 AK/SK申请 使用具有管理员权限(admin)账号登录到WiseAgent主页,从右上角凭证管理进入到AK/SK管理页面,新建AK/SK。 每个用户只能同时拥有两个AK/SK凭证。 AK/SK下载 成功创建AK/SK后,会立刻弹出AK/SK凭证下载弹窗,下载后得到凭证文件。 每个凭证仅能下载一次,且无法找回,请妥善保管凭证文件。 使用AK/SK鉴权 在请求头里添加如下header: ts: 毫秒时间戳 nonce: 请求唯一标识(UUID) ak: 凭证文件中的AK明文 resource-code: WiseAgent对外开放接口对应的唯一编码,每个接口唯一 sign: 按如下规则拼接字符串"ts={变量名}&nonce={nonce}&ak={ak}",对拼接得到的字符串plain进行SHA256散列后得到散列值hash,再使用凭证中的SK明文对刚才生产的hash进行再散列,最后进行Base64转码,得到签名字符串。 签名样例代码(JAVA): public String sha256(String plain) { try { MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(plain.getBytes(StandardCharsets.UTF_8)); byte[] bytes = messageDigest.digest(); StringBuffer hexBuffer = new StringBuffer(); for (byte aByte : bytes) { String hex = Integer.toHexString(0xff & aByte); if (hex.length() == 1) { hexBuffer.append('0'); } hexBuffer.append(hex); } return hexBuffer.toString(); } catch (NoSuchAlgorithmException ignore) { } } public String hmacSha256(String hash, String sk) { try { Mac hmacSHA256 = Mac.getInstance("HmacSHA256"); SecretKeySpec secretKeySpec = new SecretKeySpec(sk.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); hmacSHA256.init(secretKeySpec); byte[] bytes = hmacSHA256.doFinal(hash.getBytes(StandardCharsets.UTF_8)); return Base64.encodeBase64String(bytes); } catch (NoSuchAlgorithmException | InvalidKeyException ignore) { } }
  • API Key认证 API Key全称为应用程序接口密钥,是一种用于验证和授权API请求的代码。它通常是一串字符,用于识别调用API的应用程序和开发者。 获取API Key 以管理员身份登录AI原生应用引擎工作台,参考创建API Key获取。 使用API Key鉴权 调用时,在请求头里新增字段Authorization,值填写为Bearer ${API Key},拼接起来如下所示。 Authorization:Bearer sk-5db9*********dd58
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,当前AppStage服务只在“华北-北京四”部署,Endpoint为“appstage.huaweicloud.com/wiseagent”。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取,例如文本对话API的resource-path为“/v1/chat/completions”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“?limit=10”,表示查询不超过10条数据。 例如,您需要调用AppStage在“华北-北京四”区域的文本对话接口,则需使用“华北-北京四”区域的Endpoint(appstage.huaweicloud.com/wiseagent),并在文本对话的URI部分找到resource-path(/v1/chat/completions),拼接起来如下所示。 https://appstage.huaweicloud.com/wiseagent/v1/chat/completions 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 在调用文本对话接口的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://appstage.huaweicloud.com/v1/chat/completions
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3和表4。 表3 AK/SK认证公共请求消息头 名称 描述 是否必选 示例 Content-Type 消息体的类型(格式),当前只支持application/json。 是 application/json ts 毫秒时间戳。 是 1707101222000 nonce 请求唯一标识(UUID)。从AK/SK认证中获取。 是 - ak 为AK/SK凭证文件中的AK明文。从AK/SK认证中获取。 是 - sign 签名字符串。从AK/SK认证中获取。 是 - resource-code WiseAgent对外开放接口对应的唯一编码,每个接口唯一。请参考表5。 是 modelmarket.chat 表4 API Key认证公共请求消息头 名称 描述 是否必选 示例 Content-Type 消息体的类型(格式),当前只支持application/json。 是 application/json Authorization 认证信息。格式为:Bearer ${API Key} 是 Bearer sk-5db9*********dd58 表5 Resource-code Resource-code 接口 modelrouter.chat 文本对话 modelrouter.embeddings 文本向量化 knowledgeBases.query.embeddata 检索知识库数据
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。如果请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于文本对话接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示。 POST https://appstage.huaweicloud.com/wiseagent/v1/chat/completions { "model": "platform:chatglm3-6b", "messages": [ { "role": "user", "content": "你好!" } ], "stream": false } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。
  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 状态码 错误码 错误信息 描述 处理措施 200 AIAE.22001001 API调用异常 API调用异常 调用接口url、请求方式错误或出现访问其他用户资源的越权问题,请检查后重试 200 AIAE.22001002 IAM 认证异常 IAM认证异常 后端服务错误,请联系技术支持 200 AIAE.22001003 认证失败: {reason} 认证失败: {reason} 请参考返回的error message,或联系技术支持 200 AIAE.22001004 参数{parameterName}异常 参数{parameterName}异常 输入的参数有误,请参考返回的error message进行修改后重试 200 AIAE.22001005 {type}类型远程调用失败,错误信息为{error_msg} {type}类型远程调用失败,错误信息为{error_msg} 请参考返回的error message处理后重试 200 AIAE.22001006 文件上传失败: {reason} 文件上传失败: {reason} 文件上传失败,请参考返回的error message处理后重试 200 AIAE.22009001 系统内部错误,请联系管理员 系统内部错误,请联系管理员 系统内部错误,请联系技术支持 400 AIAE.31001106 AK/SK signature verify failed, please check and try again later! 很抱歉,AK/SK签名验证失败! 很抱歉,AK/SK签名验证失败! 400 AIAE.31001601 Sensitive request error, please try again later! 很抱歉,请求内容中包含敏感信息,请重试! 很抱歉,请求内容中包含敏感信息,请重试! 400 AIAE.31001602 Sensitive response error, please try again later! 很抱歉,返回内容中包含敏感信息,请重试! 很抱歉,返回内容中包含敏感信息,请重试! 400 AIAE.31001603 Sensitive content error, please try again later! 很抱歉,请求或返回内容中包含敏感信息,请重试! 很抱歉,请求或返回内容中包含敏感信息,请重试! 400 AIAE.31001701 Bad request parameter error, please check and try again later! 很抱歉,请求参数异常,请检查后重试! 很抱歉,请求参数异常,请检查后重试! 400 AIAE.40001003 Authentication failed X-Auth-Token 鉴权失败 很抱歉,X-Auth-Token 鉴权失败 400 AIAE.40002605 knowledgeBase status is not ENABLE 很抱歉,知识库未启用,没有权限查询 很抱歉,知识库未启用,没有权限查询 401 AIAE.31001101 User not login, please check and try again later! 很抱歉,用户未登录,请登录后重试! 很抱歉,用户未登录,请登录后重试! 401 AIAE.31001102 AK/SK verify failed, please check and try again later! 很抱歉,AK/SK校验失败! 很抱歉,AK/SK校验失败! 401 AIAE.31001103 Authentication verify failed, please check and try again later! 很抱歉,鉴权失败! 很抱歉,鉴权失败! 401 AIAE.31001104 API Key verify failed, please check and try again later! 很抱歉,API Key校验失败! 很抱歉,API Key校验失败! 401 AIAE.31001201 Tenant id is empty, please check and try again later! 很抱歉,空的租户id,请检查后重试! 很抱歉,空的租户id,请检查后重试! 401 AIAE.31005001 The third model service authentication is abnormal, please check and try again later! 很抱歉,三方模型服务鉴权异常,请检查您的鉴权信息! 很抱歉,三方模型服务鉴权异常,请检查您的鉴权信息! 401 AIAE.31005002 Invalid third api key, please check and try again later! 很抱歉,三方模型服务鉴权API Key异常,请检查您的鉴权信息! 很抱歉,三方模型服务鉴权API Key异常,请检查您的鉴权信息! 401 AIAE.31005007 The third model service authentication is empty, please set and try again later! 很抱歉,三方模型服务鉴权未设置,请设置后重试! 很抱歉,三方模型服务鉴权未设置,请设置后重试! 402 AIAE.31005005 The third model service exceeded current quota error, please check and try again later! 很抱歉,账户异常,请检查您的账户余额! 很抱歉,账户异常,请检查您的账户余额! 403 AIAE.31001105 Role permission verify failed, please check and try again later! 很抱歉,当前用户不允许该操作! 很抱歉,当前用户不允许该操作! 403 AIAE.31001501 SKU not subscribed to model service, please try again after subscribed! 很抱歉,您未订阅当前模型服务的SKU,请联系管理员订阅! 很抱歉,您未订阅当前模型服务的SKU,请联系管理员订阅! 403 AIAE.31001502 SKU verify failed, please check and try again later! 很抱歉,SKU校验异常,请检查您的SKU! 很抱歉,SKU校验异常,请检查您的SKU! 403 AIAE.40001004 User does not have permission 当前用户没有权限 很抱歉,当前用户没有权限 404 AIAE.31001202 Model not published, please try again after model published! 很抱歉,模型服务未发布,请发布后重试! 很抱歉,模型服务未发布,请发布后重试! 404 AIAE.31001702 Model not exists, please check and try again later! 很抱歉,模型服务不存在,请检查您输入的模型服务名称! 很抱歉,模型服务不存在,请检查您输入的模型服务名称! 408 AIAE.31001003 Connection timeout, please try again later! 很抱歉,网络连接超时,请稍后重试! 很抱歉,网络连接超时,请稍后重试! 408 AIAE.31005006 The third model service connect timeout, please try again later! 很抱歉,三方服务连接超时,请稍后重试! 很抱歉,三方服务连接超时,请稍后重试! 429 AIAE.31001002 Request too frequent error, please try again later! 很抱歉,您的请求过于频繁,请稍后重试! 很抱歉,您的请求过于频繁,请稍后重试! 429 AIAE.31005003 The third model service rate limit exceeded, please try again later! 很抱歉,您的请求当前已达最大并发数,请稍后重试! 很抱歉,您的请求当前已达最大并发数,请稍后重试! 429 AIAE.31005004 The third model service overload error, please try again later! 很抱歉,服务当前超载,请稍后重试! 很抱歉,服务当前超载,请稍后重试! 500 AIAE.31001001 Internal server error, please try again later! 很抱歉,服务内部出现了问题,请稍后重试! 很抱歉,服务内部出现了问题,请稍后重试! 500 AIAE.31001004 Ai security governance service error, please try again later or disable ai security governance service! 很抱歉, 内容审核 服务出现了问题,请稍后重试! 很抱歉,内容审核服务出现了问题,请稍后重试! 500 AIAE.31005000 Invalid third response, please try again later! 很抱歉,调用三方模型服务异常,请稍后重试! 很抱歉,调用三方模型服务异常,请稍后重试! 父主题: 附录
  • 更多操作 部门添加成功后,您还可以进行以下操作。 表1 部门管理 操作名称 操作步骤 编辑部门 单击待修改部门所在行“操作”列下的“编辑部门”。 修改部门信息,单击“更新”。 说明: 组织创建成功后,会默认生成一个一级部门,该一级部门不支持编辑。 添加子部门 单击待添加子部门的部门所在行“操作”列下的“添加子部门”。 输入部门名称、设置部门CODE(可选),单击“确认”。 删除部门 单击待删除部门所在行“操作”列下的“删除”。 单击“确认”。 说明: 组织创建成功后,会默认生成一个一级部门,该一级部门不支持编辑。 一级部门不支持删除。 删除部门后,数据无法恢复,请谨慎操作。
  • 操作步骤 访问OrgID。 输入个人华为账号和密码,可以输入账号名、手机号码或者邮箱地址。 单击“登录”,成功登录后显示OrgID首页。 图1 OrgID首页 首次登录后显示OrgID管理控制台,后续登录默认进入最近访问的OrgID组织用户中心。如果进入用户中心,管理员可以在右上角账号名的下拉列表中切换组织,进入管理控制台。 在OrgID管理控制台界面,您可以进行以下操作。 单击组织名称,进入该组织的用户中心首页,在账号的下拉菜单中选择管理中心。在管理中心您可以管理该组织,具体请参见管理中心介绍。 单击“创建组织”,您可以创建新的组织,具体操作请参见创建组织。
  • 步骤三:创建并授权应用 组织创建者或组织管理员在OrgID管理中心页面,选择左侧导航栏的“应用管理”。 单击“添加自建应用”。 输入应用名称,如“自建App”,上传应用图标、选择应用类型并设置应用负责人,如图2所示,单击“确定”。 图2 自建App 进入“认证集成”页签,根据实际情况选择认证集成方式:OAuth2、OIDC、SAML、CAS3,选择后不支持修改,此处选择“OAuth2”,单击“确定”。 图3 开启认证集成方式 配置首页URL、Access Token有效期、Refresh Token有效期等参数,单击“保存”。 图4 参数配置 进入“授权管理”页签。单击“授权设置”,在“授权设置”界面中选择被授权成员信息,单击“下一步”。 选择可用成员范围,此处选择“全员可用”,组织下所有成员即可在用户中心看到并使用该应用。 图5 授权设置
  • 步骤二:创建并授权应用 管理员在OrgID管理中心页面,选择左侧导航栏的“应用管理”。 单击“添加自建应用”。 输入应用名称,如“自建App”,上传应用图标、选择应用类型并设置应用负责人,如图1所示,单击“确定”。 图1 自建App 进入“认证集成”页签,根据实际情况选择认证集成方式:OAuth2、OIDC、SAML、CAS3,选择后不支持修改,此处选择“OAuth2”,单击“确定”。 图2 开启认证集成方式 配置首页URL、Access Token有效期、Refresh Token有效期等参数,单击“保存”。 图3 参数配置 进入“授权管理”页签。单击“授权设置”,在“授权设置”界面中选择被授权成员信息,单击“下一步”。 选择可用成员范围,此处选择“全员可用”,组织下所有成员即可在用户中心看到并使用该应用。 图4 授权设置
  • 步骤二:创建并授权应用 管理员在OrgID管理中心页面,选择左侧导航栏的“应用管理”。 单击“添加自建应用”。 输入应用名称,如“自建App”,上传应用图标、选择应用类型并设置应用负责人,如图1所示,单击“确定”。 图1 自建App 进入“认证集成”页签,根据实际情况选择认证集成方式:OAuth2、OIDC、SAML、CAS3,选择后不支持修改,此处选择“OAuth2”,单击“确定”。 图2 开启认证集成方式 配置首页URL、Access Token有效期、Refresh Token有效期等参数,单击“保存”。 图3 参数配置 进入“授权管理”页签。单击“授权设置”,在“授权设置”界面中选择被授权成员信息,单击“下一步”。 选择可用成员范围,此处选择“全员可用”,组织下所有成员即可在用户中心看到并使用该应用。 图4 授权设置
共100000条