本文介绍数据复制(包括跨区域以及同区域复制)结合版本控制、生命周期、服务器端加密、合规保留策略等特殊场景的复制行为。
数据复制结合版本控制
数据复制结合版本控制的使用场景中,有如下限制:
仅允许同时处于非版本控制或启用版本控制状态的两个存储空间(Bucket)开启数据复制。处于数据同步状态下的两个Bucket不允许改变其版本控制状态。
数据同步过程中不能暂停源或目标Bucket的版本控制。如需暂停,请先删除数据复制规则。
从已开启版本控制的源Bucket中删除对象(Object)时,会出现以下几种情况:
请求方式 | 数据同步策略 | 结果 |
发出Delete请求但未指定Object版本ID | 增/改同步 | 源和目标Bucket均不删除Object,OSS会在源Bucket中创建删除标记(Delete Marker),且源Bucket创建的删除标记会同步到目标Bucket。 |
增/删/改同步 | ||
发出Delete请求且指定了Object版本ID | 增/改同步 | 只删除源Bucket内的Object,不删除目标Bucket内的Object。 |
增/删/改同步 | 同步删除源和目标Bucket的Object。 |
数据复制结合生命周期
数据复制结合版本控制会在目标Bucket中产生多个历史版本,增加存储消耗。如果您希望减少存储成本,建议通过生命周期规则实现存储成本控制和自定义数据保留策略。
使用数据复制结合生命周期时,请注意:
数据复制只会将源Bucket生命周期规则作用的结果同步至目标Bucket,不会同步规则配置。若希望目标Bucket遵循源Bucket的生命周期规则,请在目标Bucket添加相同的规则。
目标Bucket中对象副本的创建时间为对象在源Bucket中的创建时间,而非出现在目标Bucket的时间。
如果源Bucket中的对象在数据复制时被生命周期规则删除,数据复制可能仍会继续,目标Bucket中的对象副本仍然保留。
数据复制结合服务器端加密
相同账号下的数据复制支持复制未加密的对象和使用KMS托管密钥加密、OSS完全托管加密(SSE-OSS)进行服务器端加密的对象。更多信息,请参见服务器端加密。
数据复制结合服务器端加密的使用场景中,会出现以下几种情况:
源Object的加密情况 | 目标Bucket的加密方式 | 是否使用KMS加密目标对象 | 目标Object的加密方式 |
未加密 | 未加密 | 不影响 | 保留未加密状态 |
SSE-OSS | 不影响 | SSE-OSS | |
SSE-KMS,不指定CMK ID | 不影响 | SSE-KMS,不指定CMK ID | |
SSE-KMS,指定CMK ID | 是 配置SyncRole、CMKID | SSE-KMS,指定CMK ID | |
否 | 不涉及(源Object无法复制到目标Bucket) | ||
OSS完全托管加密(SSE-OSS) | 无限制 | 不影响 | SSE-OSS |
KMS托管密钥加密(SSE-KMS,不指定CMK ID) | 无限制 | 是 配置SyncRole、CMKID | SSE-KMS,指定CMK ID |
否 | SSE-KMS,不指定CMK ID | ||
KMS托管密钥加密(SSE-KMS,指定CMK ID) | 无限制 | 是 配置SyncRole、CMKID | SSE-KMS,指定CMK ID |
否 | 不涉及(源Object无法复制到目标Bucket) |
数据复制结合合规保留策略
当Bucket的合规保留策略(WORM)被锁定后,您可以在Bucket中上传和读取Object,但是在Object的保留时间到期之前,无法修改(覆写)或删除Object。
关于合规保留策略的更多信息,请参见合规保留策略。
数据复制结合合规保留策略的使用场景中,会出现以下几种情况:
源Object是否处于WORM保护期 | 源Bucket中允许的操作 | 目标Object是否处于WORM保护期 | 是否同步到目标Bucket |
否 | 新增Object | 是 | 否 |
覆写Object | 是 | 否 | |
删除Object | 是 | 否 | |
否 | 新增Object | 否 | 是 |
覆写Object | 否 | 是 | |
删除Object | 否 | 是 | |
是 | 新增Object | 不影响 | 是 |