PutBucketReplication介面用於為儲存空間(Bucket)指定資料複製規則。OSS支援跨地區複製(Cross-Region Replication)和同地區複製(Same-Region Replication)。
注意事項
資料複製是以非同步(近即時)方式將源Bucket中的檔案(Object)以及對Object的建立、更新和刪除等操作自動複製到目標Bucket。使用資料複製時,有如下注意事項:
資料複製採用非同步複製,資料複製到目標Bucket需要一定的時間,通常幾分鐘到幾小時不等,具體取決於資料的大小。
源Bucket與目標Bucket的名稱不能相同。
使用跨地區複製時,源Bucket與目標Bucket必須處於不同的資料中心;使用同地區複製時,源Bucket與目標Bucket必須處於相同的資料中心。
請求文法
POST /?replication&comp=add HTTP/1.1
Date: GMT Date
Content-Length: ContentLength
Content-Type: application/xml
Authorization: SignatureValue
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration>
<Rule>
<RTC>
<Status>enabled or disabled</Status>
</RTC>
<PrefixSet>
<Prefix>prefix_1</Prefix>
<Prefix>prefix_2</Prefix>
</PrefixSet>
<Action>ALL or PUT</Action>
<Destination>
<Bucket>destbucket</Bucket>
<Location>oss-cn-hangzhou</Location>
<TransferType>oss_acc</TransferType>
</Destination>
<HistoricalObjectReplication>enabled or disabled</HistoricalObjectReplication>
</Rule>
</ReplicationConfiguration>
請求元素
名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
ReplicationConfiguration | 容器 | 是 | 不涉及 | 配置Bucket資料複製規則的容器。 父節點:無 子節點:Rule |
Rule | 容器 | 是 | 不涉及 | 儲存資料複製規則的容器。 父節點:ReplicationConfiguration 子節點:Destination、HistoricalObjectReplication和ID |
RTC | 容器 | 否 | 不涉及 | 儲存RTC狀態規則的容器。 父節點:Rule 子節點:Status |
Status | 字串 | 否 | enabled | 開啟或關閉RTC功能。RTC功能僅支援跨地區複製時配置。 取值:
父節點:RTC 子節點:無 說明 關於RTC功能支援地區的更多資訊,請參見RTC支援地區。 |
PrefixSet | 容器 | 否 | 不涉及 | 儲存首碼(Prefix)的容器。每條資料複製規則中,最多可指定10條Prefix。 父節點:Rule 子節點:Prefix |
Prefix | 字串 | 否 | source1 | 設定待覆制Object的Prefix。只有匹配該Prefix的Object才被複製到目標Bucket。
父節點:PrefixSet 子節點:無 |
Action | 字串 | 否 | ALL | 指定可以被複製到目標Bucket的操作。如果配置了Action,則新寫入的資料和歷史資料的同步都會遵循Action指定的複製操作。 Action允許以下操作類型,您可以指定一項或多項。 取值:
父節點:Rule 子節點:無 |
Destination | 容器 | 是 | 不涉及 | 儲存目標Bucket資訊的容器。 父節點:Rule 子節點:Bucket和Location |
Bucket | 字串 | 是 | destbucket | 指定資料要複製到的目標Bucket。 父節點:Destination 子節點:無 |
Location | 字串 | 是 | oss-cn-hangzhou | 目標Bucket所處的地區。 父節點:Destination 子節點:無 |
TransferType | 字串 | 是 | oss_acc | 指定資料複製時使用的資料轉送鏈路。 取值:
父節點:Destination 子節點:無 |
HistoricalObjectReplication | 字串 | 否 | disabled | 指定是否複製歷史資料。即開啟資料複製前,是否將源Bucket中的資料複製到目標Bucket。 取值:
父節點:Rule 子節點:無 |
SyncRole | 字串 | 否 | aliyunramrole | 授權OSS使用哪個角色來進行資料複製。如果指定使用SSE-KMS加密目標對象,則必須指定該元素。 說明 請確保授予角色 |
SourceSelectionCriteria | 容器 | 否 | 不涉及 | 用於標識要複製的來源物件的其他篩選條件的容器。當前OSS僅支援針對SSE-KMS加密的來源物件指定篩選條件。 |
SseKmsEncryptedObjects | 容器 | 否 | 不涉及 | 用於篩選使用SSE-KMS加密對象的容器。如果在資料複製規則中指定了SourceSelectionCriteria,則必須指定該元素。 |
Status | 字串 | 否 | Enabled | 指定OSS是否複製通過SSE-KMS加密建立的對象。取值範圍如下:
|
EncryptionConfiguration | 容器 | 否 | 不涉及 | 目標對象加密配置。如果指定Status為Enabled,則必須指定該元素。 |
ReplicaKmsKeyID | 字串 | 否 | c4d49f85-ee30-426b-a5ed-95e9139d**** | 指定SSE-KMS密鑰ID。如果指定Status為Enabled,則必須指定該元素。 |
此介面還需要包含Host、Date等公用要求標頭。更多資訊,請參見公用要求標頭(Common Request Headers)。
回應標頭
此介面僅包含公用回應標頭。更多資訊,請參見公用回應標頭(Common Response Headers)。
樣本
請求樣本
POST /?replication&comp=add HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Type: application/xml
Content-Length: 186
Date: Thu, 24 Sep 2015 15:39:12 GMT
Authorization: OSS qn6q**************:77Dv****************
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration>
<Rule>
<RTC>
<Status>enabled</Status>
</RTC>
<PrefixSet>
<Prefix>source1</Prefix>
<Prefix>video</Prefix>
</PrefixSet>
<Action>PUT</Action>
<Destination>
<Bucket>destbucket</Bucket>
<Location>oss-cn-beijing</Location>
<TransferType>oss_acc</TransferType>
</Destination>
<HistoricalObjectReplication>enabled</HistoricalObjectReplication>
<SyncRole>aliyunramrole</SyncRole>
<SourceSelectionCriteria>
<SseKmsEncryptedObjects>
<Status>Enabled</Status>
</SseKmsEncryptedObjects>
</SourceSelectionCriteria>
<EncryptionConfiguration>
<ReplicaKmsKeyID>c4d49f85-ee30-426b-a5ed-95e9139d****</ReplicaKmsKeyID>
</EncryptionConfiguration>
</Rule>
</ReplicationConfiguration>
返回樣本
HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906****
Date: Thu, 24 Sep 2015 15:39:12 GMT
Content-Length: 0
Connection: close
Server: AliyunOSS
錯誤碼
錯誤碼 | 狀態代碼 | 描述 |
InvalidTargetBucket | 400 BadRequest | 返回此錯誤的可能原因如下:
|
InvalidTargetLocation | 400 BadRequest | 目標Bucket所在的Location不是請求XML中指定的Location。 |
BucketReplicationAlreadyExist | 400 BadRequest | 源Bucket到目標Bucket已存在複製關係。 如果需要配置新的資料複製規則,請先刪除已有的資料複製規則再配置。 |
BadReplicationLocation | 400 BadRequest | 選擇的目的資料中心不合法。 您可通過GetBucketReplicationLocation來獲得合法的可複製到的資料中心。 |
NoReplicationLocation | 400 BadRequest | 使用跨地區複製時,源Bucket所在的資料中心沒有與之配對的可實施跨地區複製的資料中心。 跨地區複製資料中心的配對關係可通過訪問網域名稱和資料中心查看。 |
TooManyReplicationRules | 400 BadRequest | 請求中配置的資料複製規則超過一條。 單次請求中只能配置一條資料複製規則。 |
TooManyIncomingReplication | 400 BadRequest | 為Bucket配置的資料複製規則個數已達到100條。請刪除不再使用的資料複製規則後重試。 單個Bucket支援配置100條資料複製規則。如果業務需求超出數量限制,請提交工單聯絡我們。 |
TooManyOutgoingReplication | 400 BadRequest | 為Bucket配置的資料複製規則個數已達到100條。請刪除不再使用的資料複製規則後重試。 單個Bucket支援配置100條資料複製規則。如果業務需求超出數量限制,請提交工單聯絡我們。 |
MissingArgument | 400 BadRequest | 未指定資料轉送鏈路。 |
InvalidArgument | 400 BadRequest | 不支援指定的資料轉送鏈路。 |
ReplicationLocationNotSupportRtc | 400 BadRequest | 不支援在該地區開啟RTC功能。關於支援開啟RTC功能的地區資訊,請參見RTC地區。 |