获取分段上传授权 - ShowAssetTempAuthority
功能介绍
客户端请求创建媒资时,如果媒资文件超过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需要根据指定的操作选择。

v1.1版本的接口返回结果不需要拼接url,拿到结果中的sign_str,直接发送请求即可。
授权信息
账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权,具体权限要求请参见权限和授权项。
- 如果使用身份策略授权,需具备如下身份策略权限。
授权项
访问级别
资源类型(*为必须)
条件键
别名
依赖的授权项
vod:asset:upload
Write
assets *
-
-
-
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 | 处理失败返回。 |
错误码
请参见错误码。

