華為云計算 云知識 拷貝段CopyPart
拷貝段CopyPart

 

接口說明

拷貝段 多段上傳任務創(chuàng)建后,用戶可以通過指定多段上傳任務號,為特定的任務上傳段。添加段的方式還包括調(diào)用段拷貝接口。允許客戶將已上傳對象的一部分或全部拷貝為段。

該操作支持服務端加密功能。

須知: 拷貝段的結(jié)果不能僅根據(jù)HTTP返回頭域中的status_code來判斷請求是否成功,頭域中status_code返回200時表示服務端已經(jīng)收到請求,且開始處理拷貝段請求??截愂欠癯晒陧憫⒌腷ody中,只有body體中有ETag標簽才表示成功,否則表示拷貝失敗。

將源對象object拷貝為一個段part1,如果在拷貝操作之前part1已經(jīng)存在,拷貝操作執(zhí)行之后老段數(shù)據(jù)part1會被新拷貝的段數(shù)據(jù)覆蓋??截惓晒?只能列舉到最新的段part1,老段數(shù)據(jù)將會被刪除。因此在使用拷貝段接口時請確保目標段不存在或者已無價值,避免因拷貝段導致數(shù)據(jù)誤刪除??截愡^程中源對象object無任何變化

URL
PUT  https://obs.cn-north-4.myhuaweicloud.com/{object_key} 
請求參數(shù)
名稱 類型 IN 必選 描述
Authorization
 
string header

請求消息中可帶的簽名信息。

Date
 
string header

請求發(fā)起端的日期和時間,例如:Wed, 27 Jun 2018 13:39:15 +0000。 默認值:無。 條件:如果消息頭中帶了x-obs-date字段,則可以不帶該字段,其他情況下必選。

x-obs-copy-source
 
string header

拷貝的源對象。

x-obs-copy-source-range
 
integer header

源對象中待拷貝的段的字節(jié)范圍(start - end),start為段起始字節(jié),end為段結(jié)束字節(jié)

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

SSE-C方式下使用該頭域,該頭域表示加密目標段使用的算法。

類型:字符串

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

約束:需要和x-obs-server-side-encryption-customer-key, x-obs-server-side-encryption-customer-key-MD5一起使用

當使用SSE-C方式時,必選,需要與初始化上傳段任務使用相同的算法。

x-obs-server-side-encryption-customer-key
 
string header

SSE-C方式下使用該頭域,該頭域表示加密目標段使用的密鑰。該密鑰用于加密對象。

類型:字符串

示例:x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw=

約束:該頭域由256-bit的密鑰經(jīng)過base64-encoded得到,需要和x-obs-server-side-encryption-customer-algorithm,x-obs-server-side-encryption-customer-key-MD5一起使用。

當使用SSE-C方式時,必選,需要與初始化上傳段任務使用相同的密鑰。

x-obs-server-side-encryption-customer-key-MD5
 
string header

SSE-C方式下使用該頭域,該頭域表示加密目標段使用的密鑰的MD5值。MD5值用于驗證密鑰傳輸過程中沒有出錯。

類型:字符串

示例:x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

約束:該頭域由密鑰的128-bit MD5值經(jīng)過base64-encoded得到,需要和x-obs-server-side-encryption-customer-algorithm,x-obs-server-side-encryption-customer-key一起使用。

當使用SSE-C方式時,必選,需要與初始化上傳段任務使用相同的MD5值。

x-obs-copy-source-server-side-encryption-customer-algorithm
 
string header

SSE-C方式下使用該頭域,該頭域表示源對象使用的算法。

類型:字符串

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

約束:需要和x-obs-copy-source-server-side-encryption-customer-key,x-obs-copy-source-server-side-encryption-customer-key-MD5一起使用。

當拷貝源對象使用SSE-C方式時,必選。

x-obs-copy-source-server-side-encryption-customer-key
 
string header

SSE-C方式下使用該頭域,該頭域表示源對象使用的密鑰。用于解密源對象。

類型:字符串

示例:x-obs-copy-source-server-side-encryption-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw=

約束:該頭域由256-bit的密鑰經(jīng)過base64-encoded得到,需要和x-obs-copy-source-server-side-encryption-customer-algorithm,x-obs-copy-source-server-side-encryption-customer-key-MD5一起使用。

當拷貝源對象使用SSE-C方式時,必選。

x-obs-copy-source-server-side-encryption-customer-key-MD5
 
string header

SSE-C方式下使用該頭域,該頭域表示源對象使用的密鑰的MD5值。MD5值用于驗證密鑰傳輸過程中沒有出錯。

類型:字符串

示例:x-obs-copy-source-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

約束:該頭域由密鑰的128-bit MD5值經(jīng)過base64-encoded得到,需要和x-obs-copy-source-server-side-encryption-customer-algorithm,x-obs-copy-source-server-side-encryption-customer-key一起使用。

當拷貝源對象使用SSE-C方式時,必選。

object_key
 
string path

通過此請求創(chuàng)建的對象名稱。

bucket_name
 
string query

桶名稱

partNumber
 
integer query

上傳段的段號。

uploadId
 
string query

多段上傳任務Id。

返回參數(shù)
返回碼: 200

請求成功響應消息。

名稱 類型 必選 描述
Content-Length
 
string

響應消息體的字節(jié)長度。

Connection
 
string

指明與服務器的連接是長連接還是短連接。

Date
 
string

OBS系統(tǒng)響應的時間。

ETag
 
string

對象的base64編碼的128位MD5摘要。ETag是對象內(nèi)容的唯一標識,可以通過該值識別對象內(nèi)容是否有變化。比如上傳對象時ETag為A,下載對象時ETag為B,則說明對象內(nèi)容發(fā)生了變化。實際的ETag是對象的哈希值。ETag只反映變化的內(nèi)容,而不是其元數(shù)據(jù)。上傳的對象或拷貝操作創(chuàng)建的對象,通過MD5加密后都有唯一的ETag。如果通過多段上傳對象,則無論加密方法如何,MD5會拆分ETag,此類情況ETag就不是MD5的摘要。

x-obs-id-2
 
string

幫助定位問題的特殊符號。

x-obs-request-id
 
string

由OBS創(chuàng)建來唯一確定本次請求的值,可以通過該值來定位問題。

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

x-obs-server-side-encryption-customer-key-MD5
 
string

如果服務端加密是SSE-C方式,響應包含該頭域,該頭域表示加密使用的密鑰的MD5值。

類型:字符串

示例:x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

x-obs-hash-crc64ecma
 
string

如果源段有CRC64值,則返回CRC64值

名稱 類型 必選 描述
LastModified
 
string

對象上次修改時間。

ETag
 
string

目標段的ETag值,是段內(nèi)容的唯一標識,用于段合并時校驗數(shù)據(jù)一致性。

返回碼: 400

請求失敗響應消息。 除了公共的錯誤碼外,此接口還會返回一些其他的錯誤碼。下面列出本接口的一些常見錯誤,以及可能原因。

錯誤碼 描述 HTTP狀態(tài)碼
- 拷貝的單段超過5G。 400 Bad Request
- 用戶不是多段上傳任務的發(fā)起者。 400 Bad Request
名稱 類型 必選 描述
Code
 
string

錯誤響應消息體XML中錯誤響應對應的HTTP消息返回碼,具體的錯誤碼請參見錯誤碼-表2。

Message
 
string

錯誤響應消息體XML中具體錯誤更全面、詳細的英文解釋,具體的錯誤消息請參見錯誤碼-表2。

RequestId
 
string

本次錯誤請求的請求ID,用于錯誤定位。

HostId
 
string

返回該消息的服務端ID。

Resource
 
string

該錯誤相關的桶或?qū)ο筚Y源。

返回碼: 403

請求失敗響應消息。

錯誤碼 描述 HTTP狀態(tài)碼
AccessDenied AccessKey或簽名無效。 403 Forbidden
AccessDenied 用戶對指定對象沒有讀權(quán)限。 403 Forbidden
AccessDenied 用戶對目的桶沒有寫權(quán)限。 403 Forbidden
AccessDenied 用戶不是多段上傳任務的發(fā)起者。 403 Forbidden
名稱 類型 必選 描述
Code
 
string

錯誤響應消息體XML中錯誤響應對應的HTTP消息返回碼,具體的錯誤碼請參見錯誤碼-表2。

Message
 
string

錯誤響應消息體XML中具體錯誤更全面、詳細的英文解釋,具體的錯誤消息請參見錯誤碼-表2。

RequestId
 
string

本次錯誤請求的請求ID,用于錯誤定位。

HostId
 
string

返回該消息的服務端ID。

Resource
 
string

該錯誤相關的桶或?qū)ο筚Y源。

返回碼: 404

請求失敗響應消息。 除了公共的錯誤碼外,此接口還會返回一些其他的錯誤碼。下面列出本接口的一些常見錯誤,以及可能原因。

錯誤碼 描述 HTTP狀態(tài)碼
NoSuchBucket 桶不存在。 404 Not Found
NoSuchKey 源對象不存在。 404 Not Found
NoSuchUpload 查詢指定的任務不存在。 404 Not Found
名稱 類型 必選 描述
Code
 
string

錯誤響應消息體XML中錯誤響應對應的HTTP消息返回碼,具體的錯誤碼請參見錯誤碼-表2。

Message
 
string

錯誤響應消息體XML中具體錯誤更全面、詳細的英文解釋,具體的錯誤消息請參見錯誤碼-表2。

RequestId
 
string

本次錯誤請求的請求ID,用于錯誤定位。

HostId
 
string

返回該消息的服務端ID。

Resource
 
string

該錯誤相關的桶或?qū)ο筚Y源。

請求示例
示例 1
 
"PUT /object02?partNumber=1&uploadId=00000163D40171ED8DF4050919BD02B8"
 
"PUT /tobject02?partNumber=2&uploadId=00000163D40171ED8DF4050919BD02B8 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.cn-north-4.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 05:16:32 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:dSnpnNpawDSsLg/xXxaqFzrAmMw= x-obs-copy-source: /destbucket/object01"
返回示例
返回碼:200

請求成功響應消息。

示例 1
 
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D40ABBD20405D30B0542 x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCTIJpD2efLy5o8sTTComwBb2He0j11Ne Content-Type: application/xml Date: WED, 01 Jul 2015 05:16:32 GMT Transfer-Encoding: chunked <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <CopyPartResult xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/"> <LastModified>2015-07-01T05:16:32.344Z</LastModified> <ETag>"3b46eaf02d3b6b1206078bb86a7b7013"</ETag> </CopyPartResult>
錯誤碼
請參考 錯誤碼說明