我在存储桶之间设置了复制功能,但新对象无法复制。我应该如何排查此问题?

上次更新时间:2020 年 6 月 18 日

我在 Amazon Simple Storage Service (Amazon S3) 存储桶之间设置了跨区域复制 (CRR) 或同区域复制 (SRR)。但是,对象无法复制到目标存储桶。如何修复此问题?

解决方法

要排查对象无法复制到目标存储桶的问题,请检查以下各项:

提示:完成问题排查步骤后,请务必在每次更改配置后测试复制功能,方法是向源存储桶上传对象。为便于确定复制功能设置方面的问题,请勿同时进行多项配置更改。

当对象已添加到源存储桶时

在源存储桶配置好复制功能后,只有新对象才会复制到目标存储桶中。系统不会自动复制您配置复制功能之前位于源存储桶中的对象。

要触发将现有对象复制到目标存储桶的操作,您可以运行 cp 命令,将现有对象重新复制到源存储桶。例如,以下命令会将 source-AWSDOC-EXAMPLE-BUCKET 中的对象重新复制到 source-AWSDOC-EXAMPLE-BUCKET

aws s3 cp s3://source-AWSDOC-EXAMPLE-BUCKET s3://source-AWSDOC-EXAMPLE-BUCKET --recursive --storage-class STANDARD 

对象的复制状态

查看未能复制的对象的复制状态。如果没有对象的复制状态元数据,则必须修正前缀或标签筛选条件。如果您为要复制的对象子集设置了前缀筛选条件,请确认源存储桶中的前缀是否正确。如果您设置了标签筛选器,则必须在创建对象时应用标签。如果对象已存在于存储桶中并且您添加了标签,则添加标签不会触发复制操作。

如果复制状态为 PENDING,即表示 Amazon S3 仍在处理复制操作。大多数对象会在 15 分钟内复制,但有时复制可能需要几个小时或更长时间。较大的对象可能需要更长时间才能复制。

如果复制状态为 REPLICA,则表明对象为其他源存储桶中的对象的副本。系统不会再次复制处于 REPLICA 状态的对象。

如果复制状态为 FAILED,请继续检查以下各项。

复制操作的必要权限

如果源存储桶和目标存储桶属于同一 AWS 账户,请确认复制角色的信任策略和访问策略是否授予了所需的最低权限

如果源存储桶和目标存储桶属于不同的账户,请确认以下事项:

对于跨账户复制,如果您配置了拥有者覆盖选项,请确认以下事项:

如果您启用了复制通过 AWS Key Management Service (AWS KMS) 客户主密钥 (CMK) 加密的对象,请确认以下事项:

源存储桶中对象的所有权

如果复制操作源存储桶中的对象归其他 AWS 账户所有,则无法正确应用所需的复制权限,因此无法复制这些对象。拥有对象的账户必须明确向复制操作源账户授予完全的控制权。有关授予对象的完全控制权的说明,请参阅为何我无法访问由其他 AWS 账户上传到我的 Amazon S3 存储桶的对象?

源对象的访问控制列表 (ACL) 和目标存储桶的阻止公有访问设置

如果源对象的 ACL 允许公开读取权限,但目标存储桶阻止 ACL 授予的公开访问权限,则复制将失败。请根据您的使用案例,修改源对象的 ACL 或目标存储桶的设置,使其相互兼容。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?