全部產品
Search
文件中心

Object Storage Service:PutBucketReplication

更新時間:Nov 05, 2024

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功能僅支援跨地區複製時配置。

取值:

  • enabled:開啟RTC功能。

  • disabled(預設值):關閉RTC功能。

父節點:RTC

子節點:無

說明

關於RTC功能支援地區的更多資訊,請參見RTC支援地區

PrefixSet

容器

不涉及

儲存首碼(Prefix)的容器。每條資料複製規則中,最多可指定10條Prefix。

父節點:Rule

子節點:Prefix

Prefix

字串

source1

設定待覆制Object的Prefix。只有匹配該Prefix的Object才被複製到目標Bucket。

  • Prefix最大長度為1023個字元。

  • 如果配置了Prefix,則新寫入的資料和歷史資料的同步都會遵循Prefix指定的規則。

父節點:PrefixSet

子節點:無

Action

字串

ALL

指定可以被複製到目標Bucket的操作。如果配置了Action,則新寫入的資料和歷史資料的同步都會遵循Action指定的複製操作。

Action允許以下操作類型,您可以指定一項或多項。

取值:

  • ALL(預設值):表示PUT、DELETE、ABORT操作均會被同步到目標Bucket。

    重要

    該策略下新增、更新和刪除Object都會被複製到目標Bucket。通過這種方式,確保了資料的一致性,適用於需要共用和訪問同一資料集的多使用者或應用程式環境。但是配置該策略後,當手動刪除或者通過生命週期自動刪除源Bucket內的Object時,目標Bucket也會刪除對應的Object,且Object刪除後無法恢複。

  • PUT:表示被同步到目標Bucket的寫入操作,包括PutObject、PostObject、AppendObject、CopyObject、PutObjectACL、InitiateMultipartUpload、UploadPart、UploadPartCopy、CompleteMultipartUpload。

    重要

    該策略下僅新增和更新的Object會被複製,而刪除操作不會影響目標Bucket。通過這種方式,可以有效防止因源Bucket手動刪除、通過生命週期自動刪除的行為導致目標Bucket資料丟失的問題。

父節點:Rule

子節點:無

Destination

容器

不涉及

儲存目標Bucket資訊的容器。

父節點:Rule

子節點:Bucket和Location

Bucket

字串

destbucket

指定資料要複製到的目標Bucket。

父節點:Destination

子節點:無

Location

字串

oss-cn-hangzhou

目標Bucket所處的地區。

父節點:Destination

子節點:無

TransferType

字串

oss_acc

指定資料複製時使用的資料轉送鏈路。

取值:

  • internal(預設值):OSS預設傳輸鏈路。

  • oss_acc:傳輸加速鏈路。只有建立跨地區複製規則時才能使用傳輸加速鏈路。

父節點:Destination

子節點:無

HistoricalObjectReplication

字串

disabled

指定是否複製歷史資料。即開啟資料複製前,是否將源Bucket中的資料複製到目標Bucket。

取值:

  • enabled(預設值):表示複製歷史資料。

  • disabled:表示不複製歷史資料。即僅複製建立資料複製規則後新寫入的資料。

父節點:Rule

子節點:無

SyncRole

字串

aliyunramrole

授權OSS使用哪個角色來進行資料複製。如果指定使用SSE-KMS加密目標對象,則必須指定該元素。

說明

請確保授予角色AliyunOSSFullAccess的許可權,否則可能導致資料無法複製。

SourceSelectionCriteria

容器

不涉及

用於標識要複製的來源物件的其他篩選條件的容器。當前OSS僅支援針對SSE-KMS加密的來源物件指定篩選條件。

SseKmsEncryptedObjects

容器

不涉及

用於篩選使用SSE-KMS加密對象的容器。如果在資料複製規則中指定了SourceSelectionCriteria,則必須指定該元素。

Status

字串

Enabled

指定OSS是否複製通過SSE-KMS加密建立的對象。取值範圍如下:

  • Enabled:表示複製通過SSE-KMS加密建立的對象。

  • Disabled(預設值):表示不複製通過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

返回此錯誤的可能原因如下:

  • 目標Bucket名稱與源Bucket名稱相同。

  • 目標Bucket不存在。

  • 目標Bucket與源Bucket不屬於同一個使用者。

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地區