如果 Amazon S3 存储桶上的某个对象复制失败,我能否收到通知?

上次更新时间:2019 年 12 月 20 日

设置了从一个 Amazon Simple Storage Service (Amazon S3) 存储桶到另一个存储桶的复制。如果复制失败,我该怎样获取复制失败的对象列表?

简短描述

您可以启用 S3 复制时间控制 (S3 RTC),以便能够为复制失败的合格对象或复制花费时间超过 15 分钟的合格对象设置通知。此外,您可以通过以下方式之一获取复制失败的对象列表:

  • 查看 Amazon S3 清单报告
  • 运行 HeadObject API 调用

解决方法

Amazon S3 清单报告

Amazon S3 清单报告会按天或按周列出您的对象及其元数据。对象的复制状态可以为 PENDING、COMPLETED、FAILED 或 REPLICA。

要查找复制失败的对象,请筛选最近的报告,获取复制状态为 FAILED 的对象。然后,您可以启动手动复制,将对象复制到目标存储桶中。或者,您可以将对象重新上传到源存储桶中,以触发复制。

您还可以使用 Amazon Athena 查询存储报告,以获取复制状态。

HeadObject API 调用

如果您的源存储桶中有一个对象列表被设置为进行复制,您可以对这些对象运行 HeadObject API 调用。HeadObject 将返回对象的 PENDING、COMPLETED 或 FAILED 复制状态。在对 HeadObject API 调用的响应中,复制状态可参见 x-amz-replication-status 元素。

注意:要运行 HeadObject,您必须对您正在请求的对象具有读取访问权。HEAD 请求具有与 GET 请求相同的选项,但没有执行 GET。

HeadObject 返回复制状态为 FAILED 的对象后,您可以启动手动复制,将对象复制到目标存储桶中。或者,您可以将对象重新上传到源存储桶中,以触发复制。

重要提示:如果您将对象手动复制到目标存储桶中,则 Amazon S3 清单报告和 HeadObject API 调用将继续为源存储桶中的对象返回 FAILED 复制状态。要更改对象的复制状态,您必须将对象重新上传到源存储桶中,从而触发复制。如果新的复制成功,则对象的复制状态将更改为 COMPLETED。如果您必须将对象手动复制到目标存储桶,请务必记下手动复制的日期。然后,请务必按照上次修改日期筛选复制状态为 FAILED 的对象,以便可以识别已经复制或尚未复制到目标存储桶的对象。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?