同区域复制(Same-Region Replication)是指将源存储空间(Bucket)中的文件(Object)的创建、更新和删除等操作自动、异步(近实时)地复制到相同地域下的目标Bucket。
使用场景
当地法规遵从性规定不允许数据离开您的国家或地区时,您可以通过配置同区域复制规则将源Bucket的数据以副本的形式存储在相同地域内的多个目标Bucket。目标Bucket中的Object是源Bucket中Object的精确副本,它们具有相同的Object名、版本信息、元数据以及内容,例如创建时间、拥有者、用户定义的元数据、Object ACL、Object内容等。
功能特性
同区域复制支持特性如下:
- 相同地域Bucket之间的数据复制
源Bucket中的数据可以复制到相同地域的多个目标Bucket。单个Bucket关联的复制规则数量不能超过100条。这些规则中,该Bucket既可以作为源Bucket,也可以作为目标Bucket。
如果您的业务场景涉及更大数量的复制规则,请联系技术支持。
- 准实时复制数据
对于数据的新增、删除、修改等操作能够准实时复制到目标Bucket,并保证两端数据的最终一致。
- 历史数据迁移
迁移历史数据,让源Bucket中历史数据也能进行复制,形成相同的两份数据。
- 获取复制进度
能够针对复制数据展示最近复制的时间节点,针对历史数据的迁移展示迁移的百分比。
- 版本控制
对同时处于开启版本控制状态的源Bucket和目标Bucket,保证其数据版本的最终一致性。如果数据复制方式为写(增、改)同步,则源Bucket指定版本删除的操作不会复制到目标Bucket,源Bucket创建的删除标记会复制到目标Bucket。
- 复制加密数据
支持复制未加密的Object和使用SSE-KMS、SSE-OSS方式进行服务器端加密的Object。
- 配置事件通知以及实时日志查询
您可以通过以下两种方式准确获取同区域复制过程中源Bucket以及目标Bucket内Object的新增、更新、删除、覆盖等变化情况。
注意事项
- 相关费用
开启同区域复制后,同区域的两个Bucket之间复制文件时会产生数据流量,但暂不收取数据流量费用。此外,每复制一个Object,OSS都会累计请求次数,但暂不收取请求费用。
- 复制时间
同区域复制采用异步(近实时)复制,数据复制到目标Bucket需要一定的时间,通常几分钟到几小时不等,取决于数据的大小。
使用限制
- 仅允许对同时处于非版本化或开启版本控制状态的两个Bucket开启同区域复制。
- 处于复制状态下的两个Bucket不允许改变其版本控制状态。
- 对于处于复制状态的两个Bucket,由于您可以同时操作这两个Bucket,源Bucket复制过去的Object可能存在覆盖目标Bucket中同名Object的风险。
- 不支持将源Bucket中冷归档存储类型Object复制到目标Bucket。
- 不支持将源Bucket中Appendable类型的Object复制到冷归档存储类型的目标Bucket。
使用OSS控制台
- 登录OSS管理控制台。
- 单击Bucket列表,然后单击任意待开启同区域复制的Bucket。
- 在左侧导航栏,选择 。
- 在同区域复制页面,单击同区域复制。
- 在同区域复制面板,按如下说明配置各项参数。
参数 说明 目标Bucket 选择将源Bucket数据复制到相同地域下哪个目标Bucket。 数据复制对象 选择需要复制的源数据。 - 全部文件进行同步:将该Bucket内所有的Object复制到目标存储空间。
- 指定文件名前缀进行同步:将该Bucket内指定前缀的Object复制到目标Bucket。最多可以添加10个前缀。
对象标签 复制拥有指定标签的Object到目标Bucket。设置方法为选中设置规则后添加标签(键-值对),最多可添加10个标签。 要设置该参数,必须满足以下条件:
- 已设置Object标签。具体操作,请参见设置对象标签。
- 源Bucket与目标Bucket需同时处于华东1(杭州)或者澳大利亚(悉尼)地域。
- 源Bucket和目标Bucket均已开启版本控制。
- 数据复制策略为增/改 同步。
数据复制策略 选择数据复制的方式。 - 增/改 同步:仅将该Bucket内Object新增和更新操作复制到目标Bucket。
- 增/删/改 同步:将该Bucket内Object的新增、更新、删除操作复制到目标Bucket。
复制历史数据 选择是否将复制规则生效前源Bucket中已有的历史数据复制到目标Bucket。 - 复制:将历史数据复制至目标Bucket。
重要 同步历史数据时,从源Bucket复制的Object可能会覆盖目标Bucket中同名的Object。为避免这部分文件丢失,建议您对源Bucket和目标Bucket开启版本控制。
- 不复制:仅复制规则生效后上传或更新的Object。
KMS加密目标对象复制 在源Object或者目标Bucket使用了KMS托管密钥加密方式(即SSE-KMS,指定CMK ID)的情况下,要将Object复制到目标Bucket,则必须选中复制,并配置以下参数: - 使用的KMS密钥:为目标Object指定加密的KMS密钥。
您需要提前在KMS平台创建一个与目标Bucket相同地域的KMS密钥。具体操作,请参见创建密钥。
- 授权角色:授权一个RAM角色对目标Object执行KMS加密操作。
- 新建角色:新建RAM角色对目标Object执行KMS加密,角色名称格式为
kms-replication-源Bucket名称-目标Bucket名称
。 - AliyunOSSRole:使用AliyunOSSRole角色对目标Object执行KMS加密。若您之前未创建AliyunOSSRole角色,当您选择此项时,OSS将自动创建AliyunOSSRole角色。
- 新建角色:新建RAM角色对目标Object执行KMS加密,角色名称格式为
说明 您可以通过 HeadObject和 GetBucketEncryption分别查询源Object和目标Bucket的加密状态。 - 单击确定。
- 当同区域复制规则创建完成后,不允许对此规则进行编辑或删除。
- 复制任务会在同区域复制规则配置完成后即刻启动,您可以在同区域复制页面查看复制进度。
- 数据复制到目标Bucket需要的时间取决于数据的大小,通常几分钟到几小时不等。
使用REST API
如果您的程序自定义要求较高,您可以直接发起REST API请求。直接发起REST API请求需要手动编写代码计算签名。更多信息,请参见PutBucketReplication。
常见问题
开启同区域复制后,是否支持关闭?
支持。您可以通过单击规则右侧的关闭复制来停止同区域复制。
关闭复制后,已复制的数据将被保留在目标Bucket中,源Bucket中的增量数据将不再复制到目标Bucket。
如果目标Bucket采用KMS加密,是否收取KMS加密的加密算法API费用?
如果目标Bucket采用KMS加密,会收取KMS加密的加密算法API费用。费用详情,请参见KMS计费说明。