PUT Bucket replication

最近更新时间:2024-11-15 21:48:53

我的收藏

功能描述

PUT Bucket replication 用于向已启用版本控制的存储桶中配置存储桶复制规则。如果存储桶已经配置了存储桶复制规则,那么该请求会替换现有配置。
注意
使用该接口时,需确保存储桶已经开启版本控制,开启版本控制的 API 文档请参见 PUT Bucket versioning 接口文档。


授权说明

授权策略中 action 设置为 cos:PutBucketReplication 。查看所有 action

请求

请求示例

PUT /?replication HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Content-MD5: MD5
Authorization: Auth String
request body
说明
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com,其中 <BucketName-APPID> 为带 APPID 后缀的存储桶名字,例如 examplebucket-1250000000,详情请参见 存储桶概览 > 基本信息存储桶概述 > 存储桶命名规范 文档;<Region> 为 COS 的可用地域,详情请参见 地域和访问域名 文档。
Authorization: Auth String(详情请参见 请求签名 文档)。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。

请求体

用户在请求体中设置存储桶复制的具体配置信息。配置信息包括存储桶复制规则的启用状态、优先级、复制内容、筛选范围、目标存储桶的存储桶名称和存储地域等信息。
<ReplicationConfiguration>
<Role>qcs::cam::uin/<OwnerUin>:uin/<SubUin></Role>
<Rule>
<Status></Status>
<Priority></Priority>
<ID></ID>
<Prefix></Prefix>
<Destination>
<Bucket>qcs::cos:<Region>::<BucketName-APPID></Bucket>
<StorageClass></StorageClass>
</Destination>
<DeleteMarkerReplication>
<Status></Status>
</DeleteMarkerReplication>
</Rule>
</ReplicationConfiguration>
具体内容描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
ReplicationConfiguration
说明所有复制配置信息
Container
Role
ReplicationConfiguration
发起者身份标示:qcs::cam::uin/<OwnerUin>:uin/<SubUin>
String
Rule
ReplicationConfiguration
具体配置信息,最多支持1000个
Container
ID
ReplicationConfiguration.Rule
用来标注具体 Rule 的名称
String
Status
ReplicationConfiguration.Rule
标识 Rule 是否生效,枚举值:Enabled、Disabled
String
Priority
ReplicationConfiguration.Rule
执行优先级,用于处理目标存储桶相同、复制规则命中同一个对象的情况。
注意:
支持设置 1-1000 范围内的正整数,不同规则的 Priority 值不可重复。
存储桶复制规则必须全部携带 Priority 或 全部不携带 Priority。
所有规则都携带 Priority 时,当目标存储桶相同时,不同规则的筛选 prefix 可以存在重叠。不同规则命中同一个对象时,会优先触发 Priority 值最小的规则。
所有规则都不携带 Priority 时,不同规则的筛选 prefix 不允许重叠。
Integer
否。同一个存储桶的规则必须全部包含Priority 或者全部不包含 Priority。
Filter
ReplicationConfiguration.Rule
筛选待复制对象。存储桶功能将复制符合 Filter 中设置的前缀、标签的对象
Container
And
ReplicationConfiguration.Rule
筛选待复制对象时,如果同时需要前缀与对象标签条件,或需要使用多个对象标签条件时,需要用 And 包装
Container
Prefix
ReplicationConfiguration.Rule 或
ReplicationConfiguration.Rule.Filter 或ReplicationConfiguration.Rule.Filter.And
需要复制的对象前缀
String
Destination
ReplicationConfiguration.Rule
目标存储桶信息
Container
Bucket
ReplicationConfiguration.Rule.Destination
资源标识符:
qcs::cos:<Region>::<BucketName-APPID>
String
StorageClass
ReplicationConfiguration.Rule.Destination
目标存储类型,代表存储到目标存储桶使用的存储类型。例如 STANDARDSTANDARD_IA 等。
说明:
满足以下任意一种情况,则 StorageClass 为必选参数:
源存储桶或目标存储桶,一个是多 AZ 桶、一个是单 AZ 桶。
源存储桶和目标存储桶,一个开启了智能分层,一个未开启智能分层。
如果不填写 StorageClass 参数,投递到目标存储桶的存储类型默认和源存储桶保持一致。
String
DeleteMarkerReplication
ReplicationConfiguration.Rule
是否同步删除标记
Container
Status
ReplicationConfiguration.Rule. DeleteMarkerReplication
是否同步删除标记,支持 DisabledEnabled。默认值为 Enabled,即同步删除标记
String

响应

响应头

此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

响应体

该响应体为空。

错误码

此接口遵循统一的错误响应和错误码,详情请参见 错误码 文档。

实际案例

案例一:根据前缀筛选的存储桶复制规则

请求

以下请求是对存储桶 originbucket-1250000000 添加一条存储桶复制配置。该存储桶复制配置中,指定复制对象前缀为 testPrefix 的对象,目标存储桶为广州的 destinationbucket-1250000000
PUT /?replication HTTP/1.1
Date: Mon, 28 Aug 2017 02:53:38 GMT
Authorization: q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1503888878;1503889238&q-key-time=1503888878;1503889238&q-header-list=host&q-url-param-list=replication&q-signature=****************************************
Content-MD5: AAq9nzrpsz5LJ4UEe1f6Q==
Host: originbucket-1250000000.cos.ap-guangzhou.myqcloud.com
Content-Length: 312

<ReplicationConfiguration>
<Role>qcs::cam::uin/100000000001:uin/100000000001</Role>
<Rule>
<Status>Enabled</Status>
<ID>RuleId_01</ID>
<Prefix>testPrefix</Prefix>
<Destination>
<Bucket>qcs::cos:ap-guangzhou::destinationbucket-1250000000</Bucket>
</Destination>
</Rule>
</ReplicationConfiguration>

响应

上述请求后,COS 返回以下响应,表明当前该跨地域配置已经成功设置完毕。
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 0
Connection: keep-alive
Date: Fri, 14 Apr 2019 07:06:19 GMT
Server: tencent-cos
x-cos-bucket-region: ap-guangzhou
x-cos-request-id: NWQwMzQ3NmJfMjRiMjU4NjRfOTM4NV82ZDU1****
x-cos-trace-id: OGVmYzZiMmQzYjA2OWNhODk0NTRkMTBiOWVmMDAxODc0OWRkZjk0ZDM1NmI1M2E2MTRlY2MzZDhmNmI5MWI1OWE4OGMxZjNjY2JiNTBmMTVmMWY1MzAzYzkyZGQ2ZWM4MzUyZTg1NGRhNWY0NTJiOGUyNTViYzgyNzgxZTEwOTY=

案例二:根据标签筛选的存储桶复制规则

请求

以下 PUT Bucket replication 请求向存储桶originbucket-1250000000中添加一条存储桶复制配置。该存储桶复制配置中,指定复制前缀为test1、标签为<111, 232>的对象,目标存储桶为广州的destinationbucket-1250000000。设置标签筛选后,规则内的同步删除对象必须置为 Disabled。
PUT /?replication HTTP/1.1
Host: originbucket-1250000000.cos.ap-guangzhou.myqcloud.com
Authorization: q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1667303319;1668303369&q-key-time=1667303319;1668303369&q-url-param-list=replication&q-header-list=content-md5;host&q-signature=****************************************
Content-Md5: Hmy/6lHINHLKhp/PY****
Content-Length: 674
Content-Type: application/x-www-form-urlencoded

<ReplicationConfiguration>
<Role>qcs::cam::uin/100000000001:uin/100000000001</Role>
<Rule>
<Status>Enabled</Status>
<Filter>
<And>
<Prefix>test1</Prefix>
<Tag>
<Key>111</Key>
<Value>222</Value>
</Tag>
</And>
</Filter>
<Destination>
<Bucket>qcs::cos:ap-guangzhou::destinationbucket-1250000000</Bucket>
<StorageClass>Standard</StorageClass>
</Destination>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
</Rule>
</ReplicationConfiguration>

响应

上述请求后,COS 返回以下响应,表明当前该跨地域配置已经成功设置完毕。
HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Date: Tue, 01 Nov 2022 11:49:48 GMT
Server: tencent-cos
x-cos-bucket-region: ap-guangzhou
x-cos-request-id: NjM2MTA3ZGNfNmE1MGI3MDlfYWU5N1*******

案例三:设置多个复制到同一目标存储桶、筛选前缀有重叠的规则,通过 Priority 设置生效的优先级

请求

以下 PUT Bucket replication 请求向存储桶originbucket-1250000000中添加两条存储桶复制配置规则。
规则1:指定复制前缀为test1、标签为<a,a>的对象,目标存储桶为广州的destinationbucket-1250000000,目标存储类型为Standard,规则内的同步删除对象必须置为 Disabled,Priority 为1。
规则2:指定复制前缀为test1、标签为<b,b>的对象,目标存储桶为广州的destinationbucket-1250000000,目标存储类型为Standard_IA,规则内的同步删除对象必须置为 Disabled,Priority 为2。
用户向存储桶originbucket-1250000000上传对象test1/temp.txt,上传同时打标签<a,a><b,b>,此时根据 Priority,规则1优先生效,复制到存储桶destinationbucket-1250000000对象的类型为Standard
PUT /?replication HTTP/1.1
Host: originbucket-1250000000.cos.ap-guangzhou.myqcloud.com
Authorization: q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1667309117;1668309167&q-key-time=1667309117;1668309167&q-url-param-list=replication&q-header-list=content-md5;host&q-signature=****************************************
Content-Md5: OngWIL6wb2pnJZHk*****
Content-Length: 1351
Content-Type: application/x-www-form-urlencoded

<ReplicationConfiguration>
<Role>qcs::cam::uin/100000000001:uin/100000000001</Role>
<Rule>
<Status>Enabled</Status>
<Priority>1</Priority>
<Filter>
<And>
<Prefix>test1</Prefix>
<Tag>
<Key>a</Key>
<Value>a</Value>
</Tag>
</And>
</Filter>
<Destination>
<Bucket>qcs::cos:ap-guangzhou::destinationbucket-1250000000</Bucket>
<StorageClass>Standard</StorageClass>
</Destination>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
</Rule>
<Role>qcs::cam::uin/100000000001:uin/100000000001</Role>
<Rule>
<Status>Enabled</Status>
<Priority>2</Priority>
<Filter>
<And>
<Prefix>test1</Prefix>
<Tag>
<Key>b</Key>
<Value>b</Value>
</Tag>
</And>
</Filter>
<Destination>
<Bucket>qcs::cos:ap-guangzhou::destinationbucket-1250000000</Bucket>
<StorageClass>Standard_IA</StorageClass>
</Destination>
<DeleteMarkerReplication>
<Status>Disabled</Status>
</DeleteMarkerReplication>
</Rule>
</ReplicationConfiguration>

响应

HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Date: Tue, 01 Nov 2022 13:26:23 GMT
Server: tencent-cos
x-cos-bucket-region: ap-guangzhou
x-cos-request-id: NjM2MTFlN2ZfYjA1MGI3MDlfMjQ2ZmZfOWE******