华为云计算 云知识 合并段CompleteMultipartUpload
合并段CompleteMultipartUpload

 

接口说明

如果用户上传完所有的段,就可以调用合并段接口,系统将在服务端将用户指定的段合并成一个完整的对象。在执行“合并段”操作以前,用户不能下载已经上传的数据。在合并段时需要将多段上传任务初始化时记录的附加消息头信息拷贝到对象元数据中,其处理过程和普通上传对象带这些消息头的处理过程相同。在并发合并段的情况下,仍然遵循Last Write Win策略,但“Last Write”的时间定义为段任务的初始化时间。 已经上传的段,只要没有取消对应的多段上传任务,都要占用用户的容量配额;对应的多段上传任务“合并段”操作完成后,只有指定的多段数据占用容量配额,用户上传的其他此多段任务对应的段数据如果没有包含在“合并段”操作制定的段列表中,“合并段”完成后删除多余的段数据,且同时释放容量配额。 合并完成的多段上传数据可以通过已有的下载对象接口,下载整个多段上传对象或者指定Range下载整个多段上传对象的某部分数据。 合并完成的多段上传数据可以通过已有的删除对象接口,删除整个多段上传对象的所有分段数据,删除后不可恢复。 合并完成的多段上传数据不记录整个对象的MD5作为Etag,在下载多段数据或List桶内对象看到的多段数据其Etag的生成方式为:MD5(M1M2......MN)-N,其中,Mn表示第n段的MD5值, 如请求示例所示,有3个分段,每个分段都有对应的MD5值,合并段ETag的生成是先将3个分段的MD5合并起来再进行MD5计算得到一个新值,再拼接-N作为合并段的ETag值,-N表示总共有多少段,在该示例中即为-3。 合并段请求如果出现等待响应超时、服务端返回500或503报错时,建议客户端可以先尝试获取多段任务对应的对象元数据,并比较响应的x-obs-uploadId头域的值,是否与本次要合并的段任务ID相同,如果相同,说明服务端实际已经合并段成功,无需再进行重试。关于并发一致性说明,参见7.5-并发一致性说明

多版本 #### 如果桶的多版本状态是开启的,则合并段后得到的对象生成一个唯一的版本号,并且会在响应报头x-obs-version-id返回该版本号。如果桶的多版本状态是暂停的,则合并段后得到的对象版本号为null。关于桶的多版本状态,参见设置桶的多版本状态

须知: 如果上传了10个段,但合并时只选择了9个段进行合并,那么未被合并的段将会被系统自动删除,未被合并的段删除后不能恢复。在进行合并之前请使用列出已上传的段接口进行查询,仔细核对所有段,确保没有段被遗漏。

URL
POST  https://obs.cn-north-4.myhuaweicloud.com/{object_key} 
请求参数
名称 类型 IN 必选 描述
Authorization
 
string header

请求消息中可带的签名信息。

Date
 
string header

请求发起端的日期和时间,例如:Wed, 27 Jun 2018 13:39:15 +0000。 默认值:无。 条件:如果消息头中带了x-obs-date字段,则可以不带该字段,其他情况下必选。

object_key
 
string path

对象名称。

bucket_name
 
string query

桶名称

uploadId
 
string query

多段上传任务的id。

encoding-type
 
string query

对响应中的Key进行指定类型的编码。如果Key包含xml 1.0标准不支持的控制字符,可通过设置encoding-type对响应中的Key进行编码。

Body参数
名称 类型 必选 描述
Part
 
Array of CompleteMultipartUploadPart objects

合并的段。

参数:
Part
名称 类型 必选 描述
PartNumber
 
integer

段号。

ETag
 
string

上传段成功后返回的ETag值,是段内容的唯一标识。该值用于合并段时进行数据一致性校验。

返回参数
返回码: 200

请求成功响应消息。

名称 类型 必选 描述
Content-Length
 
string

响应消息体的字节长度。

Connection
 
string

指明与服务器的连接是长连接还是短连接。

Date
 
string

OBS系统响应的时间。

ETag
 
string

对象的base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。实际的ETag是对象的哈希值。ETag只反映变化的内容,而不是其元数据。上传的对象或拷贝操作创建的对象,通过MD5加密后都有唯一的ETag。如果通过多段上传对象,则无论加密方法如何,MD5会拆分ETag,此类情况ETag就不是MD5的摘要。

x-obs-id-2
 
string

帮助定位问题的特殊符号。

x-obs-request-id
 
string

由OBS创建来唯一确定本次请求的值,可以通过该值来定位问题。

x-obs-version-id
 
string

合并得到的对象的版本号。

x-obs-server-side-encryption
 
string

如果服务端加密是SSE-KMS方式,响应包含该头域。

类型:字符串

示例:x-obs-server-side-encryption:kms

x-obs-server-side-encryption-kms-key-id
 
string

如果服务端加密是SSE-KMS方式,响应包含该头域,该头域表示主密钥。

类型:字符串

格式为: regionID:domainID(租户ID):key/key_id

其中regionID是使用密钥所属region的ID;domainID是使用密钥所属租户的租户ID;key_id是本次加密使用的密钥ID。

示例: x-obs-server-side-encryption-kms-key-id:cn-north-4:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0

x-obs-server-side-encryption-customer-algorithm
 
string

如果服务端加密是SSE-C方式,响应包含该头域,该头域表示加密使用的算法。

类型:字符串

示例:x-obs-server-side-encryption-customer-algorithm:AES256

返回码: 400

请求失败响应消息。 除了公共的错误码外,此接口还会返回一些其他的错误码。下面列出本接口的一些常见错误,以及可能原因。

错误码 描述 HTTP状态码
- 没有消息体。 400 Bad Request
- 消息体格式不正确。 400 Bad Request
InvalidPartOrderInvalidPartOrder 消息体中段信息未按照段序号升序排列。 400 Bad Request
InvalidPart 请求段列表中包含了不存在的段。 400 Bad Request
InvalidPart 请求段列表中包含的段的Etag错误。 400 Bad Request
- 除最后一个段之外的其它段尺寸过小(小于100KB)。 400 Bad Request
- 对象在合并完成后总大小如果超过48.8TB。 400 Bad Request
名称 类型 必选 描述
Code
 
string

错误响应消息体XML中错误响应对应的HTTP消息返回码,具体的错误码请参见错误码-表2

Message
 
string

错误响应消息体XML中具体错误更全面、详细的英文解释,具体的错误消息请参见错误码-表2

RequestId
 
string

本次错误请求的请求ID,用于错误定位。

HostId
 
string

返回该消息的服务端ID。

Resource
 
string

该错误相关的桶或对象资源。

返回码: 403

请求失败响应消息。 除了公共的错误码外,此接口还会返回一些其他的错误码。下面列出本接口的一些常见错误,以及可能原因。

错误码 描述 HTTP状态码
AccessDenied AccessKey或签名无效。 403 Forbidden
AccessDenied 用户不是该任务的发起者(initiator)。 403 Forbidden
名称 类型 必选 描述
Code
 
string

错误响应消息体XML中错误响应对应的HTTP消息返回码,具体的错误码请参见错误码-表2

Message
 
string

错误响应消息体XML中具体错误更全面、详细的英文解释,具体的错误消息请参见错误码-表2

RequestId
 
string

本次错误请求的请求ID,用于错误定位。

HostId
 
string

返回该消息的服务端ID。

Resource
 
string

该错误相关的桶或对象资源。

返回码: 404

请求失败响应消息。 除了公共的错误码外,此接口还会返回一些其他的错误码。下面列出本接口的一些常见错误,以及可能原因。

错误码 描述 HTTP状态码
NoSuchBucket 请求的桶不存在。 404 Not Found
NoSuchUpload 请求的多段上传任务不存在。 404 Not Found
名称 类型 必选 描述
Code
 
string

错误响应消息体XML中错误响应对应的HTTP消息返回码,具体的错误码请参见错误码-表2

Message
 
string

错误响应消息体XML中具体错误更全面、详细的英文解释,具体的错误消息请参见错误码-表2

RequestId
 
string

本次错误请求的请求ID,用于错误定位。

HostId
 
string

返回该消息的服务端ID。

Resource
 
string

该错误相关的桶或对象资源。

请求示例
示例 1
 
"POST /object02?uploadId=00000163D46218698DF407362295674C"
 
"POST /object02?uploadId=00000163D46218698DF407362295674C HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: WED, 01 Jul 2015 05:23:46 GMT\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:dOfK9iILcKxo58tRp3fWeDoYzKA=\nContent-Length: 422\n\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<CompleteMultipartUpload> \n <Part> \n <PartNumber>1</PartNumber> \n <ETag>a54357aff0632cce46d942af68356b38</ETag> \n </Part> \n <Part> \n <PartNumber>2</PartNumber> \n <ETag>0c78aef83f66abc1fa1e8477f296d394</ETag> \n </Part> \n <Part> \n <PartNumber>3</PartNumber> \n <ETag>acbd18db4cc2f85cedef654fccc4a4d8</ETag> \n </Part>\n</CompleteMultipartUpload>"
错误码
请参考 错误码说明

 

上一篇:DDoS高防不能防御是为什么 下一篇:什么是需求管理