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>
        <SyncRole>aliyunramrole</SyncRole>
   </Rule>
</ReplicationConfiguration>请求元素
| 名称 | 类型 | 是否必选 | 示例值 | 描述 | 
| ReplicationConfiguration | 容器 | 是 | 不涉及 | 配置Bucket数据复制规则的容器。 父节点:无 子节点:Rule | 
| Rule | 容器 | 是 | 不涉及 | 保存数据复制规则的容器。 父节点:ReplicationConfiguration 子节点:Destination、HistoricalObjectReplication和ID等 | 
| ID | 字符串 | 否 | first | 数据复制规则的唯一标识 父节点:Rule 子节点:无 | 
| 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使用哪个RAM角色来进行数据复制。数据复制权限有同账号复制与跨账号复制两种使用场景。对于同账号与跨账号复制,您必须授予RAM角色相应的复制权限,否则无法完成复制任务。详情请参见数据复制权限介绍。 父节点:Rule 子节点:无 | 
| SourceSelectionCriteria | 容器 | 否 | 不涉及 | 用于标识要复制的源对象的其他筛选条件的容器。当前OSS仅支持针对SSE-KMS加密的源对象指定筛选条件。 父节点:Rule 子节点:SseKmsEncryptedObjects | 
| SseKmsEncryptedObjects | 容器 | 否 | 不涉及 | 用于筛选使用SSE-KMS加密对象的容器。如果在数据复制规则中指定了SourceSelectionCriteria,则必须指定该元素。 父节点:SourceSelectionCriteria 子节点:Status | 
| Status | 字符串 | 否 | Enabled | 指定OSS是否复制通过SSE-KMS加密创建的对象。取值范围如下: 
 父节点:SseKmsEncryptedObjects 子节点:无 | 
| EncryptionConfiguration | 容器 | 否 | 不涉及 | 目标对象加密配置。如果指定Status为Enabled,则必须指定该元素。 父节点:Rule 子节点:ReplicaKmsKeyID | 
| ReplicaKmsKeyID | 字符串 | 否 | c4d49f85-ee30-426b-a5ed-95e9139d**** | 指定SSE-KMS密钥ID。如果指定Status为Enabled,则必须指定该元素。 父节点:EncryptionConfiguration 子节点:无 | 
| RTC | 容器 | 否 | 不涉及 | 数据复制时间控制功能的状态。 父节点:Rule 子节点:Status | 
| Status | 字符串 | 否 | Enabled | 开启或关闭RTC功能。RTC功能仅支持跨区域复制时配置。 取值: 
 父节点:RTC 子节点:无 说明  关于RTC功能支持地域的更多信息,请参见RTC支持地域。 | 
此接口还需要包含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, 17 Apr 2025 15:39:12 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
<?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 2025 15:39:12 GMT
Content-Length: 0
Connection: close
Server: AliyunOSSSDK
此接口所对应的各语言SDK如下:
命令行工具ossutil
PutBucketReplication接口所对应的ossutil命令,请参见put-bucket-replication。
错误码
| 错误码 | 状态码 | 描述 | 
| 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地域。 |