1. 为什么使复制
复制可帮助您实现以下功能:
(1)复制对象,同时保留元数据 - 您可以使用复制来制作对象的副本,并保留所有元数据(例如原始对象创建时间和版本 ID)。如果您需要确保副本与源对象完全相同,则此功能非常重要。
(2)将对象复制到不同的存储类 - 您可以使用复制直接将对象置于目标存储桶中的 Glacier、DEEP ARCHIVE 或其他存储类。您还可以将数据复制到相同的存储类,或者在目标存储桶上使用生命周期策略,在对象老化时将其移动到较冷的存储类。
(3)在不同的所有权下维护对象副本 - 无论谁拥有源对象,您都可以指示 Amazon S3 将副本的所有权更改为拥有目标存储桶的 AWS 账户。这称作拥有者覆盖 选项。您可以使用此选项来要限制对对象副本的访问权限。
(4)在 15 分钟内复制对象 - 您可以使用 S3 Replication Time Control (S3 RTC) 在可预测的时间范围内复制同一 AWS 区域或不同区域的数据。S3 RTC 在 15 分钟内复制 Amazon S3 内存储的 99.99% 的新对象(由服务等级协议提供支持)
2. AmazonS3复制内容
(1) 复制什么
默认情况下,Amazon S3 会复制以下内容:
a.添加复制配置之后创建的对象
b.未加密的对象
c.使用 Amazon S3 托管密钥 (SSE-S3) 或 AWS Key Management Service 中存储的客户主密钥 (CMK) 静态加密 (SSE-KMS) 的对象
d.对象元数据。
e.仅限存储桶拥有者有权读取其对象和访问控制列表 (ACL) 的源存储桶中的对象
f.对象 ACL 更新(但源存储桶和目标存储桶不是由相同账户拥有时指示 Amazon S3 更改副本所有权的情况除外)
g.对象标签(如果有)
h.Amazon S3 对象锁定保留信息(如果有)
(2) 不复制什么
默认情况下,Amazon S3 不复制以下内容:
a.在向存储桶添加复制配置之前存在的对象。换句话说,Amazon S3 不以回溯方式复制对象。
b.以下加密的对象:
使用客户提供的加密密钥通过服务器端加密 (SSE-C) 创建的对象。
使用具有 AWS KMS 中存储的 CMK 的服务器端加密创建的对象。
c.存储在 GLACIER 或 DEEP_ARCHIVE 存储类中的对象。
d.源存储桶中存储桶拥有者没有相应权限的对象(当存储桶拥有者不是对象的拥有者时)
e.对存储桶级别子资源进行的更新
f.由生命周期配置执行的操作
g.源存储桶中作为另一个复制规则所建副本的对象
3. 复制的要求
复制有下列要求:
(1)源存储桶拥有者必须已为其账户启用源和目标 AWS 区域。目标存储桶拥有者必须已为其账户启用目标区域。
(2)源存储桶和目标存储桶必须已启用版本控制。
(3)Amazon S3 必须有权代表您将对象从源存储桶复制到目标存储桶。
(4)如果源存储桶的拥有者不拥有该存储桶中的对象,则对象拥有者必须使用对象访问控制列表 (ACL) 对该存储桶拥有者授予 READ 和 READ_ACP 权限。
(5)如果源存储桶已启用 Amazon S3 对象锁定,目标存储桶也必须启用对象锁定。
(6)如果您要在跨账户方案(其中,源存储桶和目标存储桶由不同的 AWS 账户拥有)中设置复制配置,则存在以下附加要求:
目标存储桶的拥有者必须使用存储桶策略向源存储桶的拥有者授予复制对象的权限。
4. AmazonS3复制具体配置步骤
本次复制的场景是S3同区域跨账号复制。
具体配置步骤:
(1) 启用S3版本控制
为源存储桶和目标存储桶启用版本控制。
具体位置:S3>源/目标S3>属性>版本控制
源存储桶: