华为云用户手册

  • 导入HTTP类型后端服务API 包含 IAM 认证和请求参数编排的GET方法API定义,后端服务类型为HTTP。 Swagger示例: swagger: "2.0"info: title: "importHttpEndpoint10" description: "import apis" version: "1.0"host: "api.account.com"paths: '/http/{userId}': get: operationId: "getUser3" description: "get user by userId" security: - apig-auth-iam: [] schemes: - https parameters: - name: "test" description: "authorization token" type: "string" in: "header" required: true - name: "userId" description: "user id" type: "string" in: "path" required: true responses: "200": description: "user information" x-apigateway-request-type: "public" x-apigateway-cors: true x-apigateway-match-mode: "NORMAL" x-apigateway-backend: type: "HTTP" parameters: - name: "userId" value: "userId" in: "query" origin: "REQUEST" description: "user id" - name: "X-Invoke-User" value: "apigateway" in: "header" origin: "CONSTANT" description: "invoke user" httpEndpoints: address: "example.com" scheme: "http" method: "GET" path: "/users" timeout: 30000securityDefinitions: apig-auth-app: in: header name: Authorization type: apiKey x-apigateway-auth-type: AppSigv1 apig-auth-iam: in: header name: unused type: apiKey x-apigateway-auth-type: IAM 父主题: 导入API示例
  • x-apigateway-ratelimits 含义:流控策略名称与关联策略映射。 作用域:Swagger Object 示例: x-apigateway-ratelimits: customRatelimitName: api-limit: 200 app-limit: 200 user-limit: 200 ip-limit: 200 interval: 1 unit: second/minute/hour shared: true special: - type: APP limit: 100 instance: xxxxxxxxx 表1 参数说明 参数 是否必选 类型 说明 customRatelimitName 否 x-apigateway-ratelimits.policy 指定名称的流控策略。 要使用该策略,将x-apigateway-ratelimit属性值引用为该策略名称。 父主题: x-apigateway-ratelimits
  • x-apigateway-backend-policies.conditions 含义:API网关定义的API后端策略条件。 作用域:x-apigateway-backend-policies 示例: paths: '/users/{userId}': get: produces: - "application/json" responses: default: description: "default response" x-apigateway-request-type: "public" x-apigateway-backend: type: "backend endpoint type" x-apigateway-backend-policies: - type: "backend endpoint type" name: "backend policy name" conditions: - type: "equal/enum/pattern", value: "string", origin: "source/request_parameter", parameter_name: "string" 表1 参数说明 参数 是否必选 类型 说明 type 是 String 策略条件类型,支持equal、enum、pattern value 是 String 策略条件值 origin 是 String 策略条件输入来源,支持source、request parameter 否 String 策略条件输入来源为request时,请求入参的名称 父主题: x-apigateway-backend-policies
  • x-apigateway-access-controls 含义:访问控制策略名称与关联策略映射。 作用域:Swagger Object 示例: x-apigateway-access-controls: customAccessControlName: acl-type: "DENY" entity-type: "IP" value: 127.0.0.1,192.168.0.1/16 表1 参数说明 参数 是否必选 类型 说明 customAccessControlName 否 x-apigateway-access-controls.policy 指定名称的访问控制策略。 要使用该策略,将x-apigateway-access-control属性值引用为该策略名称。 父主题: x-apigateway-access-controls
  • 导入HTTP VPC类型后端服务API 包含APP认证和请求参数编排的ANY方法API定义,后端服务使用VPC通道。 Swagger示例: swagger: "2.0"info: title: "importHttpVpcEndpoint" description: "import apis" version: "1.0"host: "api.account.com"paths: '/http-vpc': x-apigateway-any-method: operationId: "userOperation" description: "user operation resource" security: - apig-auth-app: [] schemes: - https parameters: - name: "Authorization" description: "authorization signature" type: "string" in: "header" required: true responses: "default": description: "endpoint response" x-apigateway-request-type: "public" x-apigateway-cors: true x-apigateway-match-mode: "SWA" x-apigateway-backend: type: "HTTP-VPC" parameters: - name: "X-Invoke-User" value: "apigateway" in: "header" origin: "CONSTANT" description: "invoke user" httpVpcEndpoints: name: "userVpc" scheme: "http" method: "GET" path: "/users" timeout: 30000securityDefinitions: apig-auth-app: in: header name: Authorization type: apiKey x-apigateway-auth-type: AppSigv1 apig-auth-iam: in: header name: unused type: apiKey x-apigateway-auth-type: IAM 父主题: 导入API示例
  • x-apigateway-match-mode 含义:API网关定义的API请求URL的匹配模式,支持NORMAL和SWA。 作用域:Operation Object(2.0) 示例: paths: '/path': get: x-apigateway-match-mode: 'SWA' 表1 参数说明 参数 是否必选 类型 说明 x-apigateway-match-mode 是 String API匹配模式,支持SWA和NORMAL。 SWA:前缀匹配,如“/prefix/foo”和“/prefix/bar”都会被“/prefix ”匹配,但“/prefixpart”却不会被匹配。 NORMAL:绝对匹配。 父主题: 扩展定义
  • x-apigateway-request-type 含义:API网关定义的API请求类型,支持public和private。 作用域:Operation Object(2.0) 示例: paths: '/path': get: x-apigateway-request-type: 'public' 表1 参数说明 参数 是否必选 类型 说明 x-apigateway-request-type 是 String API类型,支持public和private。 public:公开类型API,可以上架。 private:私有类型API,不会被上架。 父主题: 扩展定义
  • x-apigateway-auth-type 含义:基于Swagger的apiKey认证格式,定义API网关支持的特有认证方式。 作用域:Security Scheme Object(2.0) Swagger: securityDefinitions: apig-auth-app: in: header name: Authorization type: apiKey x-apigateway-auth-type: AppSigv1 apig-auth-iam: in: header name: unused type: apiKey x-apigateway-auth-type: IAM 表1 参数说明 参数 是否必选 类型 说明 x-apigateway-auth-type 是 String API网关认证方式,支持AppSigv1、IAM type 是 String 认证类型,仅支持apiKey name 是 String 用于认证的参数名称 in 是 String 仅支持header description 否 String 描述信息 父主题: 扩展定义
  • 响应示例 状态码: 200 查询作业exe对象详情成功。 { "job_execution" : { "id" : "632863d5-15d4-4691-9dc1-1a72340cb097", "create_at" : "1484240559176", "update_at" : "1484240559176", "tenant_id" : "3f99e3319a8943ceb15c584f3325d064", "job_id" : "632863d5-15d4-4691-9dc1-1a72340cb097", "job_name" : "hive_script", "start_time" : "1484240559176", "end_time" : null, "cluster_id" : "8b1d55f6-150e-45e2-8347-b2ca608d366b", "group_id" : "632863d5-15d4-4691-9dc1-1a72340cb097", "jar_path" : "s3a://jp-test1/program/Hivescript.sql", "input" : "s3a://jp-test1/input/", "output" : "s3a://jp-test1/output/", "job_log" : "s3a://jp-test1/joblogs/", "job_type" : "3", "file_action" : "", "arguments" : "wordcount", "hql" : null, "job_state" : "3", "job_final_status" : "1", "hive_script_path" : "s3a://jp-test1/program/Hivescript.sql", "create_by" : "3f99e3319a8943ceb15c584f3325d064", "finished_step" : "0", "job_main_id" : "", "job_step_id" : "", "postpone_at" : "1484240558705", "step_name" : "", "step_num" : "0", "task_num" : "0", "update_by" : "3f99e3319a8943ceb15c584f3325d064", "spend_time" : null, "step_seq" : "222", "progress" : "first progress" }}
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 job_execution JobExeResult object 作业详细信息。 表3 JobExeResult 参数 参数类型 描述 id String 作业ID。 create_at Long 作业创建时间,十三位时间戳。 update_at Long 作业更新时间,十三位时间戳。 tenant_id String 项目编号。获取方法,请参见获取项目ID。 job_id String 作业ID。 job_name String 作业名称。 start_time Long 作业执行开始时间,十三位时间戳。 end_time Long 作业执行结束时间,十三位时间戳。 cluster_id String 作业所属集群ID。 group_id String 作业执行组ID jar_path String 执行程序jar包或sql文件地址。 input String 数据输入地址。 output String 数据输出地址。 job_log String 作业日志存储地址 job_type Integer 作业类型码。 1:MapReduce 2:Spark 3:Hive Script 4:HiveSQL(当前不支持) 5:DistCp 6:Spark Script 7:Spark SQL(该接口当前不支持) file_action String 导入导出数据。 arguments String 程序执行的关键参数,该参数由用户程序内的函数指定, MRS 只负责参数的传入。该参数可为空。 hql String HQL脚本语句。 job_state Integer 作业状态编码: -1:Terminated表示已终止的作业状态 2:Running表示运行中的作业状态 3:Completed表示已完成的作业状态 4:Abnormal表示异常的作业状态 job_final_status Integer 作业最终状态码。 0:未完成 1:执行错误,终止执行 2:执行完成并且成功 3:已取消 hive_script_path String Hive脚本地址。 create_by String 创建作业的用户ID。 finished_step Integer 当前已完成的步骤数。 job_main_id String 作业主ID。 job_step_id String 作业步骤ID。 postpone_at Long 延迟时间,十三位时间戳。 step_name String 作业步骤名。 step_num Integer 步骤数量。 task_num Integer 任务数量。 update_by String 更新作业的用户ID。 spend_time Float 作业执行持续时间,单位:秒。 step_seq Integer 步骤序列号。 progress String 作业执行进度。
  • 操作步骤 接口相关信息 URI格式:POST /v2/{project_id}/clusters/{cluster_id}/job-executions/{job_execution_id}/kill 详情请参见终止作业。 请求示例 POST: https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions/{job_execution_id}/kill {endpoint}信息具体请参考终端节点。 {project_id}信息请通过获取项目ID获取。 {cluster_id}信息即创建集群成功后返回结果中的“cluster_id” 或参考获取集群ID获取。 {job_execution_id}信息即作业提交成功后返回结果中的“job_id”或参考获取作业ID获取。 Body:无 响应示例 无
  • 约束限制 集群已创建成功并处于“运行中”。 已获取待创建集群区域的项目ID,请参考获取项目ID获取。 已获取集群ID,即创建集群成功后返回结果中的“cluster_id” 或参考获取集群ID获取。 已获取作业ID,即作业提交成功后返回结果中的“job_id”或参考获取作业ID获取。 IAM用户已同步完成,可通过在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“单击同步”进行IAM用户同步。 作业相关程序和输入文件已存放在OBS中。 该示例以新增MapReduce作业为例。
  • 操作步骤 接口相关信息 URI格式:POST /v2/{project_id}/clusters/{cluster_id}/job-executions 详情请参见新增并执行作业。 请求示例 POST: https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions {endpoint}信息具体请参考终端节点。 {project_id}信息请通过获取项目ID获取。 {cluster_id}信息即创建集群成功后返回结果中的“cluster_id” 或参考获取集群ID获取。 Body: { "job_name":"MapReduceTest", "job_type":"MapReduce", "arguments":[ "obs://obs-test/program/hadoop-mapreduce-examples-x.x.x.jar", "wordcount", "obs://obs-test/input/", "obs://obs-test/job/mapreduce/output" ], "properties":{ "fs.obs.endpoint":"obs endpoint", "fs.obs.access.key":"xxx", "fs.obs.secret.key":"yyy" }} 参数详细信息请参考新增并执行作业获取。 响应示例 { "job_submit_result":{ "job_id":"44b37a20-ffe8-42b1-b42b-78a5978d7e40", "state":"COMPLETE" }}
  • 调用API获取项目ID 项目ID可以通过调用查询指定条件下的项目信息API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,具体请参考终端节点。 响应示例如下,其中projects下的“id”即为“name”所对应区域的项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "region_id", "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" }}
  • 状态码 状态码如表1所示。 表1 状态码 状态码 编码 状态说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTPS的新版本协议。 200 OK 服务器已成功处理了请求。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 NoContent 请求完全成功,同时HTTPS响应不包含响应体。 在响应OPTIONS方法的HTTPS请求时返回此状态码。 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 已经被废弃的HTTPS状态码。 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 HTTPS Version not supported 服务器不支持请求的HTTPS协议的版本,无法完成处理。 父主题: 附录
  • 请求示例 在MRS集群中扩容1个core节点。 PUT /v1.1/{project_id}/cluster_infos/{cluster_id}{ "service_id" : "", "plan_id" : "", "parameters" : { "order_id" : "", "scale_type" : "scale_out", "node_id" : "node_orderadd", "node_group" : "core_node_default_group", "instances" : "1", "skip_bootstrap_scripts" : false, "scale_without_start" : false }, "previous_values" : { }} 当Task节点个数大于零时,在MRS集群中扩容1个Task节点。 PUT /v1.1/{project_id}/cluster_infos/{cluster_id}{ "service_id" : "", "plan_id" : "", "parameters" : { "order_id" : "", "scale_type" : "scale_out", "node_id" : "node_orderadd", "node_group" : "task_node_default_group", "instances" : "1", "skip_bootstrap_scripts" : false, "scale_without_start" : false }, "previous_values" : { }} 当Task节点个数大于零时,在MRS集群中扩容1个规格为s3.xlarge.2.linux.bigdata 的Task节点。 PUT /v1.1/{project_id}/cluster_infos/{cluster_id}{ "service_id" : "", "plan_id" : "", "parameters" : { "order_id" : "", "scale_type" : "scale_out", "node_id" : "node_orderadd", "node_group" : "task_node_default_group", "task_node_info" : { "node_size" : "s3.xlarge.2.linux.bigdata", "data_volume_type" : "SATA", "data_volume_count" : 2, "data_volume_size" : 600 }, "instances" : "1", "scale_without_start" : false }, "previous_values" : { }} 在MRS集群中缩容1个Core节点。 PUT /v1.1/{project_id}/cluster_infos/{cluster_id}{ "service_id" : "", "plan_id" : "", "parameters" : { "order_id" : "", "scale_type" : "scale_in", "node_id" : "node_orderadd", "node_group" : "core_node_default_group", "instances" : "1" }, "previous_values" : { }} 在MRS集群中缩容1个Task节点 PUT /v1.1/{project_id}/cluster_infos/{cluster_id}{ "service_id" : "", "plan_id" : "", "parameters" : { "order_id" : "", "scale_type" : "scale_in", "node_id" : "node_orderadd", "node_group" : "task_node_default_group", "instances" : "1" }, "previous_values" : { }} 在MRS集群中缩容指定的Task节点。 PUT /v1.1/{project_id}/cluster_infos/{cluster_id}{ "service_id" : "", "plan_id" : "", "parameters" : { "order_id" : "", "scale_type" : "scale_in", "node_id" : "node_orderadd", "node_group" : "task_node_default_group", "instances" : "2", "server_ids" : [ "c9573435-7814-4b2c-9131-ad78b814414c", "a4951009-6a0f-4e7b-9c81-9d4bd1f8c537" ] }, "previous_values" : { }}
  • 规格 表1 通用计算增强型(C型)弹性云服务器的规格 类型 vCPU 内存(GB) 规格名称 虚拟化类型 C3型 32 64 c3.8xlarge.2 KVM C3型 16 64 c3.4xlarge.4 KVM C3型 32 128 c3.8xlarge.4 KVM C3型 60 256 c3ne.15xlarge.4 KVM C3ne型 32 64 c3ne.8xlarge.2 KVM C3ne型 16 64 c3ne.4xlarge.4 KVM C3ne型 32 128 c3ne.8xlarge.4 KVM C3ne型 60 256 c3ne.15xlarge.4 KVM C6型 32 64 c6.8xlarge.2 KVM C6型 64 128 c6.16xlarge.2 KVM C6型 16 64 c6.4xlarge.4 KVM C6型 32 128 c6.8xlarge.4 KVM C6型 64 256 c6.16xlarge.4 KVM C6s型 32 64 c6s.8xlarge.2 KVM C6s型 64 128 c6s.16xlarge.2 KVM C7型 32 64 c7.8xlarge.2 基于擎天架构的自研极简虚拟化 C7型 64 128 c7.16xlarge.2 基于擎天架构的自研极简虚拟化 C7型 128 256 c7.32xlarge.2 基于擎天架构的自研极简虚拟化 C7型 16 64 c7.4xlarge.4 基于擎天架构的自研极简虚拟化 C7型 32 128 c7.8xlarge.4 基于擎天架构的自研极简虚拟化 C7型 64 256 c7.16xlarge.4 基于擎天架构的自研极简虚拟化 C7型 128 512 c7.32xlarge.4 基于擎天架构的自研极简虚拟化 表2 内存优化型弹性云服务器的规格 类型 vCPU 内存(GB) 规格名称 虚拟化类型 M3型 8 64 m3.2xlarge.8 KVM M3型 16 128 m3.4xlarge.8 KVM M3型 32 256 m3.8xlarge.8 KVM M3型 60 512 m3.15xlarge.8 KVM M6型 8 64 m6.2xlarge.8 KVM M6型 16 128 m6.4xlarge.8 KVM M6型 32 256 m6.8xlarge.8 KVM M6型 64 512 m6.16xlarge.8 KVM M7型 8 64 m7.2xlarge.8 基于擎天架构的自研极简虚拟化 M7型 16 128 m7.4xlarge.8 基于擎天架构的自研极简虚拟化 M7型 32 256 m7.8xlarge.8 基于擎天架构的自研极简虚拟化 M7型 64 512 m7.16xlarge.8 基于擎天架构的自研极简虚拟化 M7型 128 1024 m7.32xlarge.8 基于擎天架构的自研极简虚拟化 表3 鲲鹏通用计算增强型(KC1型)弹性云服务器的规格 类型 vCPU 内存(GB) 规格名称 虚拟化类型 KC1型 16 64 kc1.4xlarge.4 KVM KC1型 32 64 kc1.8xlarge.2 KVM KC1型 32 128 kc1.8xlarge.4 KVM KC1型 60 120 kc1.15xlarge.2 KVM 表4 鲲鹏内存优化型(KM1型)弹性云服务器的规格 类型 vCPU 内存(GB) 规格名称 虚拟化类型 KM1型 8 64 km1.2xlarge.8 KVM KM1型 16 128 km1.4xlarge.8 KVM KM1型 32 256 km1.8xlarge.8 KVM KM1型 60 480 km1.15xlarge.8 KVM 表5 鲲鹏超高I/O型(KI1型)弹性云服务器的规格 类型 vCPU 内存(GB) 规格名称 虚拟化类型 KI1型 16 64 ki1.4xlarge.4 KVM KI1型 32 128 ki1.8xlarge.4 KVM KI1型 64 228 ki1.16xlarge.4 KVM 表6 超高I/O型弹性云服务器的规格 类型 vCPU 内存(GB) 规格名称 虚拟化类型 I3型 8 64 i3.2xlarge.8 KVM I3型 16 128 i3.4xlarge.8 KVM I3型 32 256 i3.8xlarge.8 KVM I3型 64 512 i3.16xlarge.8 KVM IR3型 16 64 ir3.4xlarge.4 KVM IR3型 32 128 ir3.8xlarge.4 KVM
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12M以内,12M以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见AK/SK签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 {"auth": {"identity": {"methods": ["password"],"password": {"user": {"name": "username","password": "********","domain": {"name": "domainname"}}}},"scope": {"project": {"id": "xxxxxxxx"}}}} 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 Content-Type: application/jsonX-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333 。
  • 基本概念 帐号 用户注册时的帐号,帐号对其所拥有的资源及服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于帐号是付费主体,为了确保帐号安全,建议您不要直接使用帐号进行日常管理工作,而是创建用户并使用用户进行日常管理工作。 用户 由帐号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看帐号ID和用户ID。通常在调用API的鉴权过程中,您需要用到帐号、用户和密码等信息。 区域 指云资源所在的物理位置,同一区域内可用区间内网互通,不同区域间内网不互通。通过在不同地区创建云资源,可以将应用程序设计的更接近特定客户的要求,或满足不同地区的法律或其他要求。 可用区 一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您帐号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 Checkpoint 消费检查点。应用程序消费数据时,记录已消费数据的最新序列号作为检查点。当重新消费数据时,可根据此检查点继续消费。 APP 应用程序标识符。当多个应用程序分别消费同一通道的数据时,为区分不同应用程序的消费检查点,使用APP作为标识。 父主题: 使用前必读
  • 概述 欢迎使用 MapReduce服务 (MapReduce Service,MRS)。MRS服务提供租户完全可控的企业级大数据集群云服务,轻松运行Hadoop、Spark、HBase、Kafka、Storm等大数据组件。 您可以使用本文档提供API对MRS服务进行相关操作,如创建集群、删除集群、调整集群节点、创建作业并执行等。支持的全部操作请参见API概览。 在调用MRS服务API之前,请确保已经充分了解MRS服务相关概念,详细信息请参见产品介绍。 MRS 3.x版本镜像,不支持MRS V1.1作业管理接口,需要使用V2作业管理接口。如果仍需使用V1.1作业管理接口,请在历史API中,获取相关接口。 父主题: 使用前必读
  • API版本选择建议 当前MRS服务对外API提供云服务自定义规范的API V1.1和V2两类接口,V2版本目前仅部分接口支持,主要用于提交作业和提交SQL语句。在接口功能相同的情况下,推荐您优先使用V2接口。 MRS所有版本均支持V1.1接口。 针对MRS 1.X版本的集群,MRS 1.8.7及之后版本支持V2接口。 针对MRS 2.X版本的集群,MRS 2.0.3及之后版本支持V2接口。 在某些功能上V2接口以V1.1接口为基础,在功能上做了如下功能增强: 支持安全集群提交作业。 支持HiveSql、Spark python和Flink作业。 支持SparkSql和SparkScript结果查询。 整体API及对应功能列表详见API概览。 父主题: 使用前必读
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 total_count Long 文件总数,与分页无关。 files Array of FileStatusV2 objects 文件列表。 表4 FileStatusV2 参数 参数类型 描述 path_suffix String 文件在当前目录下的后缀,如获取“/tmp”目录,下面的“/tmp/test”文件,此处path_suffix内容为“test”。 owner String 文件拥有者。 group String 文件属组。 permission String 权限信息。 replication Integer 副本数。 block_size Integer 块大小。 length Integer 文件长度。 type String 文件类型: FILE:文件 DIRECTORY:目录 children_num Integer 该目录下的文件条目数。 access_time Long 文件访问时间。 modification_time Long 文件修改时间。
  • 响应示例 状态码: 200 获取指定目录文件列表成功 { "total_count" : 2, "files" : [ { "access_time" : 0, "block_size" : 0, "children_num" : 0, "group" : "hadoop", "length" : 0, "modification_time" : 1587179516623, "owner" : "hdfs", "path_suffix" : "app-logs", "permission" : 777, "replication" : 0, "type" : "DIRECTORY" }, { "access_time" : 1587267212761, "block_size" : 134217728, "children_num" : 0, "group" : "hadoop", "length" : 23666188, "modification_time" : 1587222156003, "owner" : "root", "path_suffix" : "data-m-00000", "permission" : "644", "replication" : 3, "type" : "FILE" } ]}
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 X-Sdk-Date 请求的发生时间,格式为(YYYYMMDD'T'HHMMSS'Z')。 取值为当前系统的GMT时间。 使用AK/SK认证时必选。 20150907T101459Z Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 使用AK/SK认证时必选。 code.test.com or code.test.com:443 Content-Type 发送的实体的MIME类型。推荐用户默认使用application/json,有其他取值时会在具体接口中专门说明。 是 application/json Content-Length 请求body长度,单位为Byte。 POST/PUT请求必填。 GET不能包含。 3495 X-Project-Id project id,用于不同project取token。 否 e9993fc787d94b6c886cbaa340f9c0f4 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时必选。 - X-Language 请求语言。 否 en-us X-Domain-Id 帐号ID。 否 - API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json
  • 请求消息体(可选) 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的帐号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的ID,获取方法请参见获取项目ID。 scope参数定义了Token的作用域,上面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个帐号下所有资源或帐号的某个project下的资源,详细定义请参见IAM服务的获取用户Token。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "id": "xxxxxxxxxxxxxxxxxx" } } }} 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求URI 请求URI由如下部分组成: {URI-scheme}://{Endpoint}/{resource-path}?{query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 说明 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,具体请参考终端节点。 resource-path 资源路径,也即API访问路径。从具体接口的URI模块获取,例如获取用户TokenAPI的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京一”区域的Token,则需使用“华北-北京一”区域的Endpoint(iam.cn-north-1.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,MRS集群管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝某项操作。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 依赖的授权项:部分Action存在对其他Action的依赖,需要将依赖的Action同时写入授权项,才能实现对应的权限功能。 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。 “√”表示支持,“x”表示暂不支持。 表1 API授权项列表 权限 对应API接口 授权项(Action) IAM项目 (Project) 企业项目 (Enterprise Project) 创建集群并执行作业(V1) POST /v1.1/{project_id}/run-job-flow mrs:cluster:create √ √ 创建集群(V2) POST/v2/{project_id}/clusters √ √ 查询集群列表(V1) GET /v1.1/{project_id}/cluster_infos mrs:cluster:list √ √ 获取集群列表V2接口(可获取集群详细信息) GET/v2/{project_id}/clusters √ √ 删除集群 DELETE /v1.1/{project_id}/clusters/{cluster_id} mrs:cluster:delete √ √ 查询主机列表(V1) GET /v1.1/{project_id}/clusters/{cluster_id}/hosts mrs:host:list √ √ 查询文件列表(V2) GET/v2/{project_id}/clusters/{cluster_id}/files mrs:file:list √ √ 新增作业并执行(V1) POST /v1.1/{project_id}/jobs/submit-job mrs:job:submit √ √ 新增并执行作业(V2) POST /v2/{project_id}/clusters/{cluster_id}/job-executions √ √ 查询作业exe对象列表(V1) GET /v1.1/{project_id}/job-exes mrs:job:list √ √ 查询单个作业信息(V2) GET /v2/{project_id}/clusters/{cluster_id}/job-executions/{job_execution_id} √ √ 查询作业列表信息(V2) GET /v2/{project_id}/clusters/{cluster_id}/job-executions √ √ 获取SQL结果(V2) GET /v2/{project_id}/clusters/{cluster_id}/job-executions/{job_execution_id}/sql-result √ √ 查询作业exe对象详情(V1) GET /v1.1/{project_id}/job-exes/{job_exe_id} mrs:job:get √ √ 查询用户代理信息 GET/v2/{project_id}/clusters/{cluster_id}/agency-mapping √ √ 查询作业日志详情 GET/v2/{project_id}/clusters/{cluster_id}/job-executions/{job_execution_id}/log-detail √ √ 查询指定集群的标签 GET /v1.1/{project_id}/clusters/{cluster_id}/tags mrs:tag:list √ √ 查询所有标签 GET /v1.1/{project_id}/clusters/tags √ √ 创建单个集群标签 POST/v1.1/{project_id}/clusters/{cluster_id}/tags mrs:tag:create √ √ 批量添加/删除集群标签 POST /v1.1/{project_id}/clusters/{cluster_id}/tags/action mrs:tag:batchOperate √ √ 查询特定标签的集群列表 POST /v1.1/{project_id}/clusters/resource_instances/action mrs:tag:listResource √ × 终止作业(V2) POST /v2/{project_id}/clusters/{cluster_id}/job-executions/{job_execution_id}/kill mrs:job:stop √ √ 批量删除作业(V2) POST /v2/{project_id}/clusters/{cluster_id}/job-executions/batch-delete mrs:job:batchDelete √ √ 取消sql执行 POST/v2/{project_id}/clusters/{cluster_id}/sql-execution/{sql_id}/cancel mrs:sql:cancel √ √ 提交SQL语句 POST/v2/{project_id}/clusters/{cluster_id}/sql-execution mrs:sql:execute √ √ 获取所有的弹性伸缩策略 GET/v2/{project_id}/autoscaling-policy/{cluster_id} mrs:cluster:policy √ √ 配置弹性伸缩规则 POST /v1.1/{project_id}/autoscaling-policy/{cluster_id} √ √ 更新用户代理信息 PUT/v2/{project_id}/clusters/{cluster_id}/agency-mapping mrs:cluster:syncUser √ √ 获取sql执行结果 GET/v2/{project_id}/clusters/{cluster_id}/sql-execution/{sql_id} mrs:sql:get √ √
  • 接口约束 集群登录方式有密码和密钥对两种,两者必选其一。- 使用密码方式需要配置访问集群节点的root密码,即cluster_master_secret。- 使用密钥对方式需要配置密钥对名称,即node_public_cert_name。- 磁盘参数可以使用volume_type和volume_size表示,也可以使用多磁盘相关的参数(master_data_volume_type、master_data_volume_size、master_data_volume_count、core_data_volume_type、core_data_volume_size和core_data_volume_count)表示,以上两种方式任选一组进行配置。
共100000条