華為云計(jì)算 云知識(shí) 追加寫(xiě)對(duì)象AppendObject
追加寫(xiě)對(duì)象AppendObject

 

接口說(shuō)明

追加寫(xiě)對(duì)象操作是指在指定桶內(nèi)的一個(gè)對(duì)象尾追加上傳數(shù)據(jù),不存在相同對(duì)象鍵值的對(duì)象則創(chuàng)建新對(duì)象。

通過(guò)Append Object操作創(chuàng)建的Object類(lèi)型為Appendable Object,而通過(guò)Put Object上傳的Object是Normal Object。

說(shuō)明: 用戶(hù)上傳的 對(duì)象存儲(chǔ) 在桶中。用戶(hù)必須對(duì)桶有WRITE權(quán)限,才可以在桶中上傳對(duì)象。同一個(gè)桶中存儲(chǔ)的對(duì)象名必須是唯一的。

為了確保數(shù)據(jù)在傳輸過(guò)程中沒(méi)有遭到破壞,用戶(hù)可以在請(qǐng)求消息頭中加入Content-MD5參數(shù),OBS收到上傳數(shù)據(jù)后,會(huì)對(duì)數(shù)據(jù)進(jìn)行MD5校驗(yàn),如果不一致則返回出錯(cuò)信息。

該操作支持在創(chuàng)建Appendable對(duì)象時(shí)指定x-obs-acl參數(shù),設(shè)置對(duì)象的權(quán)限控制策略。

該操作支持服務(wù)端加密功能。

URL
POST  https://obs.cn-north-4.myhuaweicloud.com/{object_key} 
請(qǐng)求參數(shù)
名稱(chēng) 類(lèi)型 IN 必選 描述
Authorization
 
string header

請(qǐng)求消息中可帶的簽名信息。

Date
 
string header

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

x-obs-acl
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

第一次寫(xiě)時(shí),可以加上此消息頭設(shè)置對(duì)象的權(quán)限控制策略,使用的策略為預(yù)定義的常用策略,包括:private;public-read;public-read-write(各策略詳細(xì)說(shuō)明見(jiàn)ACL章節(jié)的“使用頭域設(shè)置ACL”)。

類(lèi)型:字符串

說(shuō)明:字符串形式的預(yù)定義策略。

x-obs-grant-read
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

第一次寫(xiě)時(shí),使用此頭域授權(quán)domain下所有用戶(hù)有讀對(duì)象和獲取對(duì)象元數(shù)據(jù)的權(quán)限。

x-obs-grant-read-acp
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

第一次寫(xiě)時(shí),使用此頭域授權(quán)domain下所有用戶(hù)有獲取對(duì)象ACL的權(quán)限。

x-obs-grant-write-acp
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

第一次寫(xiě)時(shí),使用此頭域授權(quán)domain下所有用戶(hù)有寫(xiě)對(duì)象ACL的權(quán)限。

x-obs-grant-full-control
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

第一次寫(xiě)時(shí),使用此頭域授權(quán)domain下所有用戶(hù)有讀對(duì)象、獲取對(duì)象元數(shù)據(jù)、獲取對(duì)象ACL、寫(xiě)對(duì)象ACL的權(quán)限。

x-obs-storage-class
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

第一次寫(xiě)時(shí),可以加上此頭域設(shè)置對(duì)象的存儲(chǔ)類(lèi)型。如果未設(shè)置此頭域,則以桶的默認(rèn)存儲(chǔ)類(lèi)型作為對(duì)象的存儲(chǔ)類(lèi)型。

類(lèi)型:字符串

說(shuō)明:雖然存儲(chǔ)類(lèi)型有3種:STANDARD(標(biāo)準(zhǔn)存儲(chǔ))、WARM(低頻訪(fǎng)問(wèn)存儲(chǔ))、COLD(歸檔存儲(chǔ)),但是冷對(duì)象不支持追加上傳,這里可配置的值只能是:STANDARD和WARM,注意大小寫(xiě)敏感。

示例:x-obs-storage-class:STANDA

x-obs-meta-*
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

第一次寫(xiě)時(shí),可以在HTTP請(qǐng)求中加入以“x-obs-meta-”開(kāi)頭的消息頭,用來(lái)加入自定義的元數(shù)據(jù),以便對(duì)對(duì)象進(jìn)行自定義管理。當(dāng)用戶(hù)獲取此對(duì)象或查詢(xún)此對(duì)象元數(shù)據(jù)時(shí),加入的自定義元數(shù)據(jù)將會(huì)在返回消息的頭中出現(xiàn)。HTTP請(qǐng)求不包含消息體,長(zhǎng)度不能超過(guò)8KB。

類(lèi)型:字符串

示例:x-obs-meta-test:test metadata

x-obs-persistent-headers
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

第一次寫(xiě)時(shí),可以在HTTP請(qǐng)求中加入“x-obs-persistent-headers”消息頭,用來(lái)加入一個(gè)或多個(gè)自定義的響應(yīng)頭,當(dāng)用戶(hù)獲取此對(duì)象或查詢(xún)此對(duì)象元數(shù)據(jù)時(shí),加入的自定義響應(yīng)頭將會(huì)在返回消息的頭域中出現(xiàn)。

類(lèi)型:字符串

格式:x-obs-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)....

說(shuō)明:其中key1/key2等為自定義header,若含有非ASCII碼或不可識(shí)別字符,可以采用URL編碼或者Base64編碼,服務(wù)端只會(huì)作為字符串處理,不會(huì)做解碼。value1/value2等為對(duì)應(yīng)自定義header的值,base64_encode指做base64編碼,即將自定義header和對(duì)應(yīng)值的base64編碼作為一個(gè)key-value對(duì)用“:”連接,然后用“,”將所有的key-value對(duì)連接起來(lái),放在x-obs-persistent-headers這個(gè)header中即可,服務(wù)端會(huì)對(duì)上傳的value做解碼處理。

示例:x-obs-persistent-headers: key1:dmFsdWUx,key2:dmFsdWUy

下載此對(duì)象或獲取此對(duì)象元數(shù)據(jù)時(shí):返回兩個(gè)頭域分別為“key1:value1”與“key2:value2”

約束:

  1. 通過(guò)該方式指定的自定義響應(yīng)頭不能以“x-obs-”為前綴,比如可以指定“key1”,但是不能指定“x-obs-key1”

  2. 不能指定http標(biāo)準(zhǔn)頭,例如host/content-md5/origin/range/Content-Disposition等

  3. 此頭域和自定義元數(shù)據(jù)總長(zhǎng)度不能超過(guò)8KB

  4. 如果傳入相同key,將value以“,”拼接后放入同一個(gè)key中返回

x-obs-website-redirect-location
 
string header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

當(dāng)桶設(shè)置了Website配置,可以將獲取這個(gè)對(duì)象的請(qǐng)求重定向到桶內(nèi)另一個(gè)對(duì)象或一個(gè)外部的URL,OBS將這個(gè)值從頭域中取出,保存在對(duì)象的元數(shù)據(jù)中。

類(lèi)型:字符串

默認(rèn)值:無(wú)

約束:必須以“/”、“http://”或“https://”開(kāi)頭,長(zhǎng)度不超過(guò)2K。

x-obs-expires
 
integer header

請(qǐng)求參數(shù)position=0時(shí),該請(qǐng)求可以使用的附加消息頭

表示對(duì)象的過(guò)期時(shí)間,單位是天。過(guò)期之后對(duì)象會(huì)被自動(dòng)刪除。(從對(duì)象最后修改時(shí)間開(kāi)始計(jì)算)

x-obs-server-side-encryption
 
string header

使用該頭域表示服務(wù)端加密是SSE-KMS方式。 示例:x-obs-server-side-encryption:kms 當(dāng)使用SSE-KMS方式時(shí),必選。

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

SSE-KMS方式下使用該頭域,該頭域表示主密鑰,如果用戶(hù)沒(méi)有提供該頭域,那么默認(rèn)的主密鑰將會(huì)被使用。

類(lèi)型:字符串

支持兩種格式的描述方式:

  1. regionID:domainID(租戶(hù)ID):key/key_id

或者

2.key_id

其中regionID是使用密鑰所屬region的ID;domainID是使用密鑰所屬租戶(hù)的租戶(hù)ID;key_id是從 數(shù)據(jù)加密 服務(wù)創(chuàng)建的密鑰ID。

示例:

  1. x-obs-server-side-encryption-kms-key-id:cn-north-4:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0 或者

  2. x-obs-server-side-encryption-kms-key-id :4f1cd4de-ab64-4807-920a-47fc42e7f0d0

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

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

類(lèi)型:字符串

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

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

當(dāng)使用SSE-C方式時(shí),必選。

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

SSE-C方式下使用該頭域,該頭域表示加密使用的密鑰。該密鑰用于加密對(duì)象。

類(lèi)型:字符串

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

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

當(dāng)使用SSE-C方式時(shí),必選。

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

SSE-C方式下使用該頭域,該頭域表示加密使用的密鑰的MD5值。MD5值用于驗(yàn)證密鑰傳輸過(guò)程中沒(méi)有出錯(cuò)。

類(lèi)型:字符串

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

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

當(dāng)使用SSE-C方式時(shí),必選。

object_key
 
string path

追加寫(xiě)的對(duì)象名稱(chēng)。

bucket_name
 
string query

請(qǐng)求的桶名稱(chēng)。

append
 
string query

append表示以追加寫(xiě)方式上傳對(duì)象。

position
 
integer query

追加寫(xiě)位置。需要追加寫(xiě)的對(duì)象首次上傳時(shí)就必須指定position為0,下次追加需要填寫(xiě)的position會(huì)在服務(wù)端本次上傳成功返回消息的頭域x-obs-next-append-position中攜帶。

Body參數(shù)
名稱(chēng) 類(lèi)型 必選 描述
 
file  
返回參數(shù)
返回碼: 200

請(qǐng)求成功響應(yīng)消息。

名稱(chēng) 類(lèi)型 必選 描述
Content-Length
 
string

響應(yīng)消息體的字節(jié)長(zhǎng)度。

Connection
 
string

指明與服務(wù)器的連接是長(zhǎng)連接還是短連接。

Date
 
string

OBS系統(tǒng)響應(yīng)的時(shí)間。

ETag
 
string

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

x-obs-id-2
 
string

幫助定位問(wèn)題的特殊符號(hào)。

x-obs-request-id
 
string

由OBS創(chuàng)建來(lái)唯一確定本次請(qǐng)求的值,可以通過(guò)該值來(lái)定位問(wèn)題。

x-obs-version-id
 
string

對(duì)象的版本號(hào)。如果桶的多版本狀態(tài)為開(kāi)啟,則會(huì)返回對(duì)象的版本號(hào)。

x-obs-server-side-encryption
 
string

如果服務(wù)端加密是SSE-KMS方式,響應(yīng)包含該頭域。

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

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

如果服務(wù)端加密是SSE-KMS方式,響應(yīng)包含該頭域,該頭域表示主密鑰。

類(lèi)型:字符串

格式為: regionID:domainID(租戶(hù)ID):key/key_id

其中regionID是使用密鑰所屬region的ID;domainID是使用密鑰所屬租戶(hù)的租戶(hù)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

如果服務(wù)端加密是SSE-C方式,響應(yīng)包含該頭域,該頭域表示加密使用的算法。

類(lèi)型:字符串

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

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

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

類(lèi)型:字符串

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

x-obs-next-append-position
 
integer

指明下一次請(qǐng)求應(yīng)該提供的position。

返回碼: 400

請(qǐng)求失敗響應(yīng)消息。 除了公共的錯(cuò)誤碼外,此接口還會(huì)返回一些其他的錯(cuò)誤碼。下面列出本接口的一些常見(jiàn)錯(cuò)誤,以及可能原因。

錯(cuò)誤碼 描述 HTTP狀態(tài)碼
AppendTooLarge 本次追加上傳使對(duì)象長(zhǎng)度超過(guò)對(duì)象長(zhǎng)度限制。 400 Bad Request
OperationNotSupported 桶設(shè)置了跨區(qū)域復(fù)制配置,則不能調(diào)用該接口。 400 Bad Request
名稱(chēng) 類(lèi)型 必選 描述
Code
 
string

錯(cuò)誤響應(yīng)消息體XML中錯(cuò)誤響應(yīng)對(duì)應(yīng)的HTTP消息返回碼,具體的錯(cuò)誤碼請(qǐng)參見(jiàn)錯(cuò)誤碼-表2。

Message
 
string

錯(cuò)誤響應(yīng)消息體XML中具體錯(cuò)誤更全面、詳細(xì)的英文解釋,具體的錯(cuò)誤消息請(qǐng)參見(jiàn)錯(cuò)誤碼-表2

RequestId
 
string

本次錯(cuò)誤請(qǐng)求的請(qǐng)求ID,用于錯(cuò)誤定位。

HostId
 
string

返回該消息的服務(wù)端ID。

Resource
 
string

該錯(cuò)誤相關(guān)的桶或?qū)ο筚Y源。

返回碼: 409

請(qǐng)求失敗響應(yīng)消息。 除了公共的錯(cuò)誤碼外,此接口還會(huì)返回一些其他的錯(cuò)誤碼。下面列出本接口的一些常見(jiàn)錯(cuò)誤,以及可能原因。

錯(cuò)誤碼 描述 HTTP狀態(tài)碼
PositionNotEqualToLength position的值和當(dāng)前對(duì)象的原始長(zhǎng)度不一致 409 Bad Request
ObjectNotAppendable 指定桶中存在相同對(duì)象鍵值的對(duì)象,對(duì)象類(lèi)型非Appendable。 409 Bad Request
ObjectNotAppendable 對(duì)象追加寫(xiě)次數(shù)超過(guò)10000次。 409 Bad Request
ObjectNotAppendable 對(duì)象存儲(chǔ)類(lèi)型為Cold,則不能調(diào)用該接口。 409 Bad Request
名稱(chēng) 類(lèi)型 必選 描述
Code
 
string

錯(cuò)誤響應(yīng)消息體XML中錯(cuò)誤響應(yīng)對(duì)應(yīng)的HTTP消息返回碼,具體的錯(cuò)誤碼請(qǐng)參見(jiàn)錯(cuò)誤碼-表2。

Message
 
string

錯(cuò)誤響應(yīng)消息體XML中具體錯(cuò)誤更全面、詳細(xì)的英文解釋,具體的錯(cuò)誤消息請(qǐng)參見(jiàn)錯(cuò)誤碼-表2。

RequestId
 
string

本次錯(cuò)誤請(qǐng)求的請(qǐng)求ID,用于錯(cuò)誤定位。

HostId
 
string

返回該消息的服務(wù)端ID。

Resource
 
string

該錯(cuò)誤相關(guān)的桶或?qū)ο筚Y源。

請(qǐng)求示例
示例 1
 
"/obj001?append&position=0"
 
"POST /obj001?append&position=0 HTTP/1.1\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nExpires: Wed, 27 Jun 2015 13:45:50 GMT\nDate: Wed, 08 Jul 2015 06:57:01 GMT\nx-obs-website-redirect-location: http://www.example.com/\nx-obs-meta-redirect: redirect\nContent-Length: 6\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:kZoYNv66bsmc10+dcGKw5x2PRrk=\n\n[6 bytes of object data]\n"
錯(cuò)誤碼
請(qǐng)參考 錯(cuò)誤碼說(shuō)明。