获取分段上传授权
功能介绍
客户端请求创建媒资时,如果媒资文件超过20MB,需采用分段的方式向OBS上传,在每次与OBS交互前,客户端需通过此接口获取到授权方可与OBS交互。
该接口可以获取初始化多段上传任务、上传段、合并段、列举已上传段、取消段合并的带有临时授权的URL,用户需要根据OBS的接口文档配置相应请求的HTTP请求方法、请求头、请求体,然后请求对应的带有临时授权的URL。
视频分段上传方式和OBS的接口文档保持一致,包括HTTP请求方法、请求头、请求体等各种入参,此接口的作用是为用户生成带有鉴权信息的URL(鉴权信息即sign_str),用来替换OBS接口中对应的URL,临时给用户开通向点播服务的桶上传文件的权限。
调用获取授权接口时需要传入bucket、object_key、http_verb,其中bucket和object_key是由创建媒资:上传方式接口中返回的响应体中的target字段获得的bucket和object,http_verb需要根据指定的操作选择。
URI
GET /v1.1/{project_id}/asset/authority
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID,获取方法请参考获取项目ID |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
http_verb |
是 |
String |
分段上传时调用OBS接口的HTTP方法,具体操作需要的HTTP方法请参考OBS的接口文档。
|
bucket |
是 |
String |
桶名。 调用创建媒资:上传方式接口中返回的响应体中的target字段获得的bucket值。 |
object_key |
是 |
String |
对象名。 调用创建媒资:上传方式接口中返回的响应体中的target字段获得的object值。 |
content_type |
否 |
String |
文件类型对应的content-type,当为上传任务初始化场景该字段必填。 参数填写可参考媒资分段上传(20M以上)。
|
content_md5 |
否 |
String |
上传段时每段的MD5。 |
upload_id |
否 |
String |
每一个上传任务的id,是OBS初始化视频分段上传任务后返回的值。除上传任务初始化场景外,该字段必填。 |
part_number |
否 |
Integer |
上传段时每一段的id。 取值范围:[1,10000]。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
否 |
String |
用户Token,使用Token鉴权方式时必选。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
Authorization |
否 |
String |
使用AK/SK方式认证时必选,携带的鉴权信息。 |
X-Sdk-Date |
否 |
String |
使用AK/SK方式认证时必选,请求的发生时间。 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
sign_str |
String |
带授权签名字符串的URL。具体调用示例请参见示例2:媒资分段上传(20M以上)。示例:https://{obs_domain}/{bucket}?AWSAccessKeyId={AccessKeyID}&Expires={ExpiresValue}&Signature={Signature} |
状态码: 403
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码。 |
error_msg |
String |
错误描述。 |
请求示例
-
初始化上传任务:
GET https://{endpoint}/v1.1/{project_id}/asset/authority?http_verb=POST&content_type={type}&bucket={bucket}&object_key={objectKey}
-
上传段:
GET https://{endpoint}/v1.1/{project_id}/asset/authority?http_verb=PUT&content_md5={md5}&part_number={num}&upload_id={id}&bucket={bucket}&object_key={objectKey}
-
合并段:
GET https://{endpoint}/v1.1/{project_id}/asset/authority?http_verb=POST&upload_id={id}&bucket={bucket}&object_key={objectKey}
-
取消段:
GET https://{endpoint}/v1.1/{project_id}/asset/authority?http_verb=DELETE&bucket={bucket}&object_key={objectKey}&upload_id={uploadId}
-
列举已上传的段:
GET https://{endpoint}/v1.1/{project_id}/asset/authority?http_verb=GET&bucket={bucket}&object_key={objectKey}&upload_id={uploadId}
响应示例
状态码: 200
处理成功返回。
{ "sign_str" : "https://obs.cn-north-4.myhuaweicloud.com:443/obs-vod-1/%7Bproject_id%7D/f488337c31c8e4622f1590735b134c65/Avatar_480P.mp4?AWSAccessKeyId=CBN2J**********0RCSN&Expires=1518147618&Signature=kZYh0hEos2V**********AHGyXA%3D" }
状态码: 403
处理失败返回。
{ "error_code" : "VOD.10053", "error_msg" : "The request parameter is illegal, illegal field: {xx}." }
状态码
状态码 |
描述 |
---|---|
200 |
处理成功返回。 |
403 |
处理失败返回。 |
错误码
请参见错误码。