华为云用户手册

  • 发起请求 共有两种方式可以基于已构建好的请求消息发起请求,分别为: cURL cURL是一个命令行工具,用来执行各种URL操作和信息传输。cURL充当的是HTTP客户端,可以发送HTTP请求给服务端,并接收响应消息。cURL适用于接口调试。关于cURL详细信息请参见https://curl.haxx.se/。由于cURL无法计算签名,使用cURL时仅支持访问匿名的公共OBS资源。 编码 通过编码调用接口,组装请求消息,并发送处理请求消息。可以使用SDK或自行编码实现。
  • 请求消息头 可选的附加请求头字段,如指定的URI和HTTP方法所要求的字段。详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 消息头名称 描述 是否必选 Authorization 请求消息中可带的签名信息。 类型:String 默认值:无。 条件:匿名请求不需要带,其他请求必选。 有条件必选 Content-Length RFC 2616中定义的消息(不包含消息头)长度。 类型:String 默认值:无。 条件:PUT操作可选,加载XML的操作必须带。 有条件必选 Content-Type 资源内容的类型,例如: text/plain。 类型:String 默认值:无。 否 Date 请求发起端的日期和时间,例如:Wed, 27 Jun 2018 13:39:15 +0000。 类型:String 默认值:无。 条件:如果是匿名请求或者消息头中带了x-obs-date字段,则可以不带该字段,其他情况下必选。 有条件必选 Host 表明主机地址。如bucketname.obs.cn-north-4.myhuaweicloud.com。 类型:String 默认值:无。 是
  • 请求URI OBS根据桶和对象及带的资源参数来确定具体的URI,当需要进行资源操作时,可以使用这个URI地址。 URI的一般格式为(方括号内为可选项): protocol://[bucket.]domain[:port][/object][?param] 表1 URI中的参数 参数 描述 是否必选 protocol 请求使用的协议类型,如HTTP、HTTPS。HTTPS表示通过安全的HTTPS访问该资源,对象存储服务支持HTTP,HTTPS两种传输协议。 必选 bucket 请求使用的桶资源路径,在整个系统中唯一标识一个桶。 可选 domain 存放资源的服务器的域名或IP地址。 必选 port 请求使用的端口号。根据软件服务器的部署不同而不同。缺省时使用默认端口,各种传输协议都有默认的端口号,如HTTP的默认端口为80,HTTPS的默认端口为443。 OBS对象存储服务的HTTP方式访问端口为80,HTTPS方式访问端口为443。 可选 object 请求使用的对象资源路径。 可选 param 请求使用的桶和对象的具体资源,缺省默认为请求桶或对象自身资源。 可选 除获取桶列表之外的所有接口,都应当包含桶名。OBS基于DNS解析性能和可靠性的考虑,要求凡是携带桶名的请求,在构造URL的时候都必须将桶名放在domain前面,形成三级域名形式,又称为虚拟主机访问域名。 例如,如果您有一个位于cn-north-4区域的名为test-bucket的桶,期望访问桶中一个名为test-object对象的acl,正确的访问URL为https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test-object?acl
  • 请求示例 DELETE /v2/workflows/{graph_name} HTTP/1.1Host: obs.cn-north-4.myhuaweicloud.com Date: Thu, 27 Aug 2020 12:38:10 GMTAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo=Content-Type: application/jsonContent-Length: 0
  • 请求示例 GET /v2/workflows/{graph_name} HTTP/1.1Host: obs.cn-north-4.myhuaweicloud.com Date: Thu, 27 Aug 2020 12:38:10 GMTAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo=Content-Type: application/jsonContent-Length: 0
  • 请求示例 PUT /v2/workflowexecutions/{execution_name}?x-workflow-graph-name={graph_name} HTTP/1.1Host: obs.cn-north-4.myhuaweicloud.com Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo=Content-Type: application/jsonContent-Length: 0Date: Thu, 27 Aug 2020 12:38:10 GMT
  • 请求示例 POST /v2/workflow-authorization HTTP/1.1Host: obs.cn-north-4.myhuaweicloud.com Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo=Content-Type: application/jsonContent-Length: 0Date: Thu, 27 Aug 2020 12:38:10 GMT
  • 请求消息样式 PUT /v2/workflowexecutions/{execution_name}?x-workflow-graph-name={graph_name} HTTP/1.1Host: obs.cn-north-4.myhuaweicloud.com Authorization: authorizationContent-Type: application/jsonContent-Length: lengthDate: date
  • 响应示例 HTTP/1.1 200 OKServer: OBSDate: Tue, 07 Jul 2020 07:28:46 GMTContent-Type: application/jsonContent-Length: 1063{ "rules": [{ "id": "abc123", "condition": { "httpErrorCodeReturnedEquals": 404, "objectKeyPrefixEquals": "video/" }, "redirect": { "agency": "agency", "publicSource": { "sourceEndpoint": { "master":["http://bucket1.xxx.yyy.com", "https://bucket2.xxx.yyy.com"], "slave": ["http://bucket3.xxx.yyy.com", "https://bucket4.xxx.yyy.com"] } }, "retryConditions": ["4XX", "5XX"], "passQueryString": true, "mirrorFollowRedirect": true, "redirectWithoutReferer": true, "mirrorHttpHeader": { "passAll": false, "pass": ["content-encoding"], "remove": ["content-type"], "set": [{ "key": "helloworld", "value": "2222" }] }, "replaceKeyWith": "prefix${key}suffix", "replaceKeyPrefixWith": "picture/", "vpcEndpointURN": "001" } }]}
  • 并发操作举例 1. 当客户端2正在上传一个对象v1时,客户端1同时上传一个同名的对象v2成功后,不管是客户端1还是客户端2都能够读取最新的对象数据v1,如图1所示。 图1 并发成功上传同一个对象 2. 当客户端2上传一个对象v1的时候,如果在对象数据上传且还没有写入对象元数据的过程中,客户端1删除同名的对象成功后,客户端2的上传对象操作仍然返回成功,并且不论客户端1还是客户端2都能读取到对象数据v1,如图2所示。 图2 并发上传和删除同一个对象(1) 3. 当客户端2上传一个对象v1的时候,如果在对象数据上传完成,系统写入对象元数据的短暂过程中,客户端1发起删除同名的对象成功后,客户端2的上传对象操作仍然返回成功,但是客户端1和客户端2下载对象Object1时,有可能读到对象数据v1,也有可能返回对象不存在,如图3所示。 图3 并发上传和删除同一个对象(2) 4. 当客户端1下载一个对象的过程中,客户端2发起删除同名对象操作,此时客户端1可能下载到完整的对象数据,也有可能只能下载到对象的一部分数据。当客户端2的删除操作返回成功后,再发起下载对象请求,则返回对象不存在,如图4所示。 图4 并发下载和删除同一个对象 5. 当客户端1下载一个对象的过程中,客户端2发起更新同名对象操作,此时客户端1可能下载到完整的对象数据,也有可能只能下载到对象的一部分数据。当客户端2的更新操作返回成功后,再发起下载对象请求,则返回最新的对象数据,如图5所示。 图5 并发下载和更新同一个对象 6. 当客户端2正在上传一个对象的段v1时,客户端1同时上传同一个对象的相同段号的段v2成功后,不管是客户端1还是客户端2列举段时都能够列举etag为v2的段信息,如图6所示。 图6 并发上传同名对象的同名段
  • 与服务端加密相关的接口 本节介绍与服务端加密相关的接口,以及使用该接口时服务端加密对传输协议使用要求。 与服务端加密相关的接口对使用传输协议的具体要求,详情如表所示。 表1 与SSE-C相关的接口对传输协议的使用要求 接口 传输协议 PUT上传对象 HTTPS POST上传对象 HTTPS 初始化上传段任务 HTTPS 获取对象元数据 HTTPS 获取对象内容 HTTPS 上传段 HTTPS 合并段 HTTP or HTTPS 表2 与SSE-KMS相关的接口对传输协议的使用要求 接口 传输协议 PUT上传对象 HTTPS POST上传对象 HTTPS 初始化上传段任务 HTTPS 获取对象元数据 HTTP or HTTPS 获取对象内容 HTTPS 上传段 HTTPS 合并段 HTTP or HTTPS 表3 复制对象接口对传输协议的使用要求 源对象 目标对象 传输协议 非加密对象 SSE-KMS加密对象 HTTPS SSE-KMS加密对象 SSE-KMS加密对象 HTTPS SSE-C加密对象 SSE-KMS加密对象 HTTPS 非加密对象 SSE-C加密对象 HTTPS SSE-KMS加密对象 SSE-C加密对象 HTTPS SSE-C加密对象 SSE-C加密对象 HTTPS 非加密对象 非加密对象 HTTP or HTTPS SSE-KMS加密对象 非加密对象 HTTP or HTTPS SSE-C加密对象 非加密对象 HTTP or HTTPS 表4 拷贝段接口对传输协议的使用要求 源对象 目标段 传输协议 非加密对象 SSE-KMS加密段 HTTP or HTTPS SSE-KMS加密对象 SSE-KMS加密段 HTTP or HTTPS SSE-C加密对象 SSE-KMS加密段 HTTP or HTTPS 非加密对象 SSE-C加密段 HTTPS SSE-KMS加密对象 SSE-C加密段 HTTPS SSE-C加密对象 SSE-C加密段 HTTPS 非加密对象 非加密段 HTTP or HTTPS SSE-KMS加密对象 非加密段 HTTP or HTTPS SSE-C加密对象 非加密段 HTTP or HTTPS 父主题: 服务端加密
  • 响应消息头 对应请求消息头,响应同样也有消息头,如“Content-type”。 详细的公共响应消息头字段请参见表1。 表1 公共响应消息头 消息头名称 描述 Content-Length 响应消息体的字节长度。 类型:String 默认值:无。 Connection 指明与服务器的连接是长连接还是短连接。 类型:String 有效值:keep-alive | close。 默认值:无。 Date OBS系统响应的时间。 类型:String 默认值:无。 ETag 对象的base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。实际的ETag是对象的哈希值。ETag只反映变化的内容,而不是其元数据。上传的对象或拷贝操作创建的对象,通过MD5加密后都有唯一的ETag。如果通过多段上传对象,则无论加密方法如何,MD5会拆分ETag,此类情况ETag就不是MD5的摘要。 类型:String x-obs-id-2 帮助定位问题的特殊符号。 类型:String 默认值:无。 x-obs-request-id 由OBS创建来唯一确定本次请求的值,可以通过该值来定位问题。 类型:String 默认值:无。
  • 请求示例 DELETE /?obsworkflowtriggerpolicy HTTP/1.1Host: bucket.obs.cn-north-4.myhuaweicloud.com Date: Thu, 27 Aug 2020 12:38:10 GMTAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo=Content-Type: application/jsonContent-Length: 0
  • 请求示例 GET /?obsworkflowtriggerpolicy HTTP/1.1Host: bucket.obs.cn-north-4.myhuaweicloud.com Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo=Content-Type: application/jsonContent-Length: 0Date: Thu, 27 Aug 2020 12:38:10 GMT
  • 响应示例 HTTP/1.1 200 OK Date: Thu, 27 Aug 2020 12:38:10 GMT Content-Length: 100 X-Request-ID: 6a63a18b8bab40ffb71ebd9cb80d0085{ "rules": [{ "id":"event-01", "graph_urn": "graph_urn", "events": ["ObjectCreated:*", "ObjectRemoved:*"], "prefix": "", "suffix": "" }]}
  • 响应示例 HTTP/1.1 200 OKServer: OBSDate: Tue, 07 Jul 2020 07:28:46 GMTContent-Type: application/jsonContent-Length: 497{"rules": [{"id": "ruleid","project": "your project id","agency": "testagency","events": ["ObjectCreated:*"],"prefix": "decompress","suffix": ".zip","overwrite": 0,"decompresspath": "after-decompress/"}]}
  • 签名计算工具 OBS提供可视化签名计算工具,帮助您轻松完成签名计算。 表1 签名计算工具 签名计算方式 签名计算工具获取地址 Header中携带签名 可视化签名计算工具 URL中携带签名 可视化签名计算工具 若调用OBS API报如下错误: 状态码:403 Forbidden 错误码:SignatureDoesNotMatch 错误信息:The request signature we calculated does not match the signature you provided. Check your key and signing method. 请参考以下案例进行排查处理:签名不匹配(SignatureDoesNotMatch)如何处理 父主题: 认证鉴权
  • 响应示例 状态码: 200 报告汇总数据对象 { "code" : "SVCSTG.CPTS.0000000", "message" : "success", "extend" : null, "result" : { "err_message" : null, "outline" : { "core_index" : { "error_request_count" : 0, "max_rps" : 49, "max_users" : 1, "request_count" : 2560, "response_time" : { "avg_response_time" : 20.01, "avg_tp50" : 20, "avg_tp90" : 20, "max_response_time" : 25, "min_response_time" : 20 }, "rps" : 46.55, "success_count" : 2560, "success_rate" : 100, "trans_tps" : 46.55 }, "exception_response_sum" : { "failed_assert" : 0, "failed_others" : 0, "failed_parsed" : 0, "failed_refused" : 0, "failed_timeout" : 0 }, "network_traffic" : { "avg_network_traffic" : 6774.15, "max_down_stream" : 4753, "max_network_traffic" : 8428, "max_upstream" : 3675, "min_network_traffic" : 0 }, "response_code_details" : [ ], "response_code_sum" : { "sum1xx" : 0, "sum2xx" : 2560, "sum3xx" : 0, "sum4xx" : 0, "sum5xx" : 0 }, "sla_statistic" : null, "streaming_media" : null, "task_basic_attribute" : { "branch_id" : null, "branch_name" : null, "create_by" : "paas_cpts_zwx419546", "iteration_uri" : "BaseLine", "project_id" : "294819", "protocols" : [ "HTTPS" ], "service_id" : "394207", "stage" : 1, "stage_name" : "Alpha", "task_id" : "cn-north-7-69707", "version_uri" : null }, "task_basic_execution_data" : { "complete_num" : 0, "duration" : 55, "end_time" : "2023-04-27T19:40:40+08:00", "executed_num" : 0, "kpi_case_count" : 1, "kpi_case_execute_count" : 0, "kpi_case_pass_count" : 0, "parallel" : false, "pass_num" : 0, "start_time" : "2023-04-27T19:39:45+08:00", "task_status" : 1, "total_num" : 1, "vum" : 1 } } }}
  • URI GET /v2/{project_id}/task-run-infos/{task_run_id}/reports/log-outline 表1 路径参数 参数 是否必选 参数类型 描述 task_run_id 是 Integer 任务运行id(报告id) 最小值:0 最大值:2147483647 project_id 是 String 项目ID,获取方式请参见获取项目ID。 最小长度:0 最大长度:64
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 code String 响应码 最小长度:0 最大长度:1024 message String 响应消息 最小长度:0 最大长度:10240 extend Object 扩展字段 result ReportOutlineResult object 测试报告总览结果 表3 ReportOutlineResult 参数 参数类型 描述 err_message Object 错误信息 outline ReportOutline object 测试报告总览结果 表4 ReportOutline 参数 参数类型 描述 core_index CoreIndex object 核心指标 exception_response_sum ExceptionResponseSum object 报告中定义为异常的请求数量汇(总包含有请求码返回但校验失败的请求) network_traffic NetworkTraffic object 网络流量相关数据 response_code_sum ResponseCodeSum object 响应码请求数量汇总 task_basic_attribute TaskBasicAttribute object 任务基本属性数据 task_basic_execution_data TaskBasicExecutionData object 任务基本执行数据 response_code_details Array of objects 响应码详细信息 sla_statistic Object SLA数据 streaming_media Object 流媒体相关数据 表5 CoreIndex 参数 参数类型 描述 error_request_count Integer 错误请求数 max_rps Integer 最大RPS max_users Integer 最大并发数 request_count Integer 请求总数 rps Float 平均RPS success_count Integer 成功数 success_rate Integer 成功率 trans_tps Float 平均TPS response_time ResponseTimeInfo object 响应时间相关数据汇总 表6 ResponseTimeInfo 参数 参数类型 描述 avg_response_time Float 平均响应时间 avg_tp50 Integer TP50 avg_tp90 Integer TP90 max_response_time Integer 最大响应时间 min_response_time Integer 最小响应时间 表7 ExceptionResponseSum 参数 参数类型 描述 failed_assert Integer 断言失败数 failed_others Integer 其他错误失败数 failed_parsed Integer 解析失败数 failed_refused Integer 连接被拒绝失败数 failed_timeout Integer 响应超时失败数 表8 NetworkTraffic 参数 参数类型 描述 avg_network_traffic Float 平均网络流量 max_down_stream Integer 最大下行带宽 max_network_traffic Integer 最大网络流量(流量峰值) max_upstream Integer 最大上行带宽 min_network_traffic Integer 最小网络流量 表9 ResponseCodeSum 参数 参数类型 描述 sum1xx Integer 1xx请求数 sum2xx Integer 2xx请求数 sum3xx Integer 3xx请求数 sum4xx Integer 4xx请求数 sum5xx Integer 5xx请求数 表10 TaskBasicAttribute 参数 参数类型 描述 branch_id String 分支ID branch_name String 分支名 create_by String 创建人的工号 iteration_uri String 迭代url project_id String 工程id protocols Array of strings 协议 service_id String 服务id stage Integer 阶段 stage_name String 阶段名称 task_id String 任务id version_uri String 版本uri 表11 TaskBasicExecutionData 参数 参数类型 描述 complete_num Integer 已执行完成的用例数 duration Integer 持续时间 end_time String 结束时间 executed_num Integer 已执行用例数 kpi_case_count Integer 【指标数据:最后一个轮次】 用例数 kpi_case_execute_count Integer 【指标数据:最后一个轮次】 已执行的用例数 kpi_case_pass_count Integer 【指标数据:最后一个轮次】 最后一轮结果为Pass的用例数 parallel Boolean 任务间用例是否并行执行 pass_num Integer 用例通过数 start_time String 开始时间 task_status Integer 任务状态 total_num Integer 总用例数 vum Integer 分钟*并发数
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 code String 响应码 最小长度:0 最大长度:1024 message String 响应消息 最小长度:0 最大长度:10240 extend Object 扩展信息 result UpdateAgentStatusResponseDetail object 结果 表4 UpdateAgentStatusResponseDetail 参数 参数类型 描述 id Integer 全链路应用id 最小值:0 最大值:2147483647 status String 全链路应用状态,枚举值:CREATING,FAILED,NORMAL,DELETE 最小长度:0 最大长度:64 update_time Long 全链路应用更新时间 最小值:0 最大值:9999999999999 result AgentConfig object 探针配置 表5 AgentConfig 参数 参数类型 描述 agent_id Integer 探针id 最小值:0 最大值:2147483647 db_enable Boolean 是否开启数据库影子规则 db_shadow_repository String 数据库影子库名称 最小长度:0 最大长度:1024 db_shadow_type String 数据库影子库类型 最小长度:0 最大长度:64 log_level String 日志级别,枚举值:INFO,DEBUG,WARN,ERROR 最小长度:0 最大长度:128 log_path String 日志路径 最小长度:0 最大长度:1024 main_switch Boolean 影子规则开关 redis_enable Boolean 是否开启redis影子库规则 redis_shadow_key_prefix String redis影子库key前缀 最小长度:0 最大长度:1024 redis_shadow_repository String redis影子库名称 最小长度:0 最大长度:1024 redis_shadow_type String redis影子库类型 最小长度:0 最大长度:1024 kafka_enable Boolean kafka影子规则开关 kafka_shadow_topic_prefix String kafka影子topic前缀 app_log_level String 应用日志等级(ALL/TRACE/DEBUG/INFO/WARN/ERROR/OFF) app_log_path String 应用日志路径 mock_rule_list Array of MockRuleConfig objects mock规则列表 表6 MockRuleConfig 参数 参数类型 描述 service_type String 服务类型(当前只支持http) request_url String 请求地址 request_method String 请求方式(GET/POST/PUT/DELET/PATCH) 最小长度:0 最大长度:1024 redirect_url String 重定向地址 mock_strategy String mock策略(当前只支持redirect) enable Boolean 是否启用 name String 规则名称 project_id String 项目id id Integer 规则id 最小值:0 最大值:2147483647
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 code String 响应码 最小长度:0 最大长度:1024 message String 响应消息 最小长度:0 最大长度:10240 extend Object 扩展信息 result AgentConfig object 结果 表4 AgentConfig 参数 参数类型 描述 agent_id Integer 探针id 最小值:0 最大值:2147483647 db_enable Boolean 是否开启数据库影子规则 db_shadow_repository String 数据库影子库名称 最小长度:0 最大长度:1024 db_shadow_type String 数据库影子库类型 最小长度:0 最大长度:64 log_level String 日志级别,枚举值:INFO,DEBUG,WARN,ERROR 最小长度:0 最大长度:128 log_path String 日志路径 最小长度:0 最大长度:1024 main_switch Boolean 影子规则开关 redis_enable Boolean 是否开启redis影子库规则 redis_shadow_key_prefix String redis影子库key前缀 最小长度:0 最大长度:1024 redis_shadow_repository String redis影子库名称 最小长度:0 最大长度:1024 redis_shadow_type String redis影子库类型 最小长度:0 最大长度:1024 kafka_enable Boolean kafka影子规则开关 kafka_shadow_topic_prefix String kafka影子topic前缀 app_log_level String 应用日志等级(ALL/TRACE/DEBUG/INFO/WARN/ERROR/OFF) app_log_path String 应用日志路径 mock_rule_list Array of MockRuleConfig objects mock规则列表 表5 MockRuleConfig 参数 参数类型 描述 service_type String 服务类型(当前只支持http) request_url String 请求地址 request_method String 请求方式(GET/POST/PUT/DELET/PATCH) 最小长度:0 最大长度:1024 redirect_url String 重定向地址 mock_strategy String mock策略(当前只支持redirect) enable Boolean 是否启用 name String 规则名称 project_id String 项目id id Integer 规则id 最小值:0 最大值:2147483647
  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 状态码 错误码 错误信息 描述 处理措施 200 CPTS.00000000 success 操作成功 操作成功 400 CPTS.04006025 Clear un deleted appCluster failed 强制删除资源组失败 请联系客服人员排查处理 500 CPTS.05001001 An unknown error occurred! 未知错误 请联系客服人员排查处理 父主题: 附录
  • 状态码 状态码如表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对应,传递除请求消息头之外的内容。如果请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的帐号名称,********为用户登录密码,xxxxxxxxxx为project的名称,如cn-north-1,您可以从地区和终端节点中获取。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 为什么一定要定义服务契约? 企业级系统规模普遍较大,微服务组件众多,所以对服务间接口进行统一管理是企业的关键需求。微服务引擎通过契约管理满足这一需求。 管理角度:通过契约管理,企业中的接口管理者可以统一定义微服务的契约文件(符合接口描述标准的接口定义文件),从而做到规范并协调多个开发团队的接口开发,降低沟通成本且避免后期的混乱。 开发角度:在微服务开发的时候,不同团队甚至不同ISV间,可以基于统一的契约文件开发同一应用或系统,从而方便整体系统一致性的维护。具体表现在,单体应用中模间是代码级调用,在编译期就可以解决API不兼容问题,修复成本也极低。微服务解耦后,服务间变为了远程调用,接口不一致通常发现时间较晚,会造成更大的修复成本。有了契约可以保证架构师设计契约,严格审查变更,并反向生成代码,保证兼容性。 另外,对于规模较小、统一管理要求不高的系统,产品支持从接口代码自动生成契约文件。 父主题: ServiceComb引擎
  • 注意事项 迁移注意事项如下: 首先需要确认是否有使用微服务引擎专业版,如果实例注册在名称为Cloud Service Engine的引擎上,说明使用了专业版。 若用户业务要迁移至微服务引擎专享版引擎,则必须先创建微服务引擎专享版引擎。高可用引擎当前规格为100,500,2000,可以根据客户自身业务实例规模进行选择。 新建微服务引擎所在VPC必须与待升级组件部署环境的VPC一致。 迁移本质上是注册中心、配置中心地址的切换,切换前,所有服务注册到旧的微服务引擎;切换后,所有服务注册到新的微服务引擎;切换过程中,部分微服务注册到新引擎,部分微服务注册到旧引擎,这两部分的微服务无法进行服务发现和调用,可能导致业务不可用。 确认部署方式,如果使用ServiceStage应用托管进行部署,可以联系运维人员获取快速迁移方案;如果未使用应用托管需要用户自己去修改配置中心以及注册中心的地址为新的专享版引擎的配置地址以及注册发现地址。若未使用ServiceStage应用托管,因为部署方式的多样性,建议迁移之前拉运维人员进行风险评估,并确认可靠的迁移方案。 迁移不仅仅是实例的迁移,也包括配置的迁移,所以需要提前备份配置中心数据,可以联系运维人员进行协助。配置迁移包括动态配置迁移以及全局配置迁移。全局配置:在专业版控制台,逐个切环境,查看是否有全局配置,若存在,需要导出进行备份。动态配置:若一个微服务没有动态配置,则可忽略该服务。若一个微服务下的某个作用域没有动态配置,则可忽略该作用域。若存在配置则可以导出动态配置并保存。 进行迁移前建议对各个微服务进行原地升级,确保无平台外因素导致升级失败。 排查是否涉及JAVA_ARGS参数,若存在需要检查是否存在以下内容: spring.cloud.servicecomb.discovery.addressspring.cloud.servicecomb.credentials.enabledspring.cloud.servicecomb.credentials.accessKeyspring.cloud.servicecomb.credentials.secretKeyspring.cloud.servicecomb.credentials.akskCustomCipherspring.cloud.servicecomb.credentials.project 若存在,迁移后将不再需要,可以删除。 如果专享版引擎版本为2.x以上版本,使用导入配置文件功能,发现原配置中心格式的文件无法导入,提示文件为空或者格式错误,请参考微服务专享版引擎版本从1.x升级到2.x时有哪些注意事项?中相应操作进行处理。
  • 迁移背景 微服务引擎专业版为逻辑多租引擎,所有用户共用一个引擎,一旦引擎故障,会造成所有注册业务的中断。为防止此类故障发生和保证业务的连续性,请将业务从微服务引擎专业版切换至商用微服务引擎专享版。 用户业务从微服务引擎专业版迁移至专享版后,将会有以下优势: 物理隔离。微服务引擎专享版采用物理隔离的方式部署,租户独占微服务引擎。一个引擎故障不会影响其他引擎。 多AZ。微服务引擎专享版支持多AZ部署,提升可靠性。 容量大。单个微服务引擎专享版可支持2000实例,且可创建多个引擎,大大超过微服务引擎专业版(单租户500实例)。 用户从微服务引擎专业版(Cloud Service Engine)引擎切换至专享版(微服务引擎名称可自定义)后,引擎功能保持一致,对使用无影响,用户的配置、服务数据也将在切换过程中迁移到新引擎。
  • 解决方法 可在开发环境下使用mvn dependency:tree命令查看依赖树,排查微服务开发框架同netty版本是否匹配。 例如,ServiceComb 2.0.1开发框架所匹配的netty依赖版本为4.1.45.Final。 使用maven管理复杂依赖关系,请参考:https://servicecomb.apache.org/cn/docs/maven_dependency_management/。
  • 微服务专享版引擎版本从1.x升级到2.x时有哪些注意事项? 微服务引擎专享版从1.x升级到2.x的过程中及升级完以后可能会出现的现象及解决方法如下: 现象1:在微服务引擎专享版从1.x版本升级至2.x版本的过程中,使用接口获取配置或更新配置失败,报connection refused或Connection was closed,出现错误信息示例如下: [ERROR] Config update from xxx.xxx.xxx.xx failed. Error message is [Connection refused: xxx.xxx.xxx.xx]. org.apache.servicecomb.config.client.ConfigCenterClient$ConfigRefresh.lambda$null$13(ConfigCenterClient.java:428) 或 [ERROR]Config update from xxx.xxx.xxx.xx failed. Error message is [Connection was closed]. org.apache.servicecomb.config.client.ConfigCenterClient$ConfigRefresh.lambda$null$13(ConfigCenterClient.java:428) 解决方法:微服务引擎专享版1.x版本升级至2.x版本时配置中心会有短暂的重启,重启期间获取配置或更新配置会报错断连。因此引擎升级过程中避免更新配置,升级完成后该问题即可解决。 现象2:使用引擎版本为1.x配置中心接入的用户,无法使用“业务场景治理”功能。 解决办法:由于引擎版本为2.x的配置中心换成了kie,需要将配置中心接入方式切换为kie,具体切换方式详见Spring Cloud使用配置中心中相关内容。 现象3:在使用版本为2.x微服务引擎时,使用导入配置文件功能,存在原配置中心格式的文件无法导入,提示文件为空或者格式错误。 解决办法:将配置文件的配置项格式修改为2.x引擎要求的配置文件格式,新的配置文件为json文件,内容格式如下: { "data":[ { "key":"xxx", "labels":{ "environment":"xxx","service": "xxx","app": "xxx","version": "xxx" }, "value":"xxx", "value_type":"text", "status":"enabled" },{ "key":"xxx", "labels":{ "environment":"xxx" }, "value":"xxx", "value_type":"text", "status":"enabled" },{ "key":"xxx", "labels":{ "environment":"xxx","service": "xxx" }, "value":"xxx", "value_type":"text", "status":"enabled" },{ "key":"xxx", "labels":{ "environment":"xxx","service": "xxx","app": "xxx" }, "value":"xxx", "value_type":"text", "status":"enabled" } ]} 其中: key和value是配置项对应的键和值,其为必填。 labels是配置范围,其为必填,通过填写environment,service,app,version等字段来确定配置范围。 value_type是配置项类型,其为必填,可以选择ini、json、text、yaml、properties、xml,默认为text。 status是配置是否启用,其为选填,可以选择enabled(开启),disabled(关闭),默认关闭。 父主题: ServiceComb引擎
共100000条