为什么 Amazon S3 仍会列出我删除的对象?

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

我从 Amazon Simple Storage Service (Amazon S3) 存储桶中删除了一些对象。为什么 Amazon S3 仍会列出我删除的对象?

解决方法

Amazon S3 为所有 AWS 区域中的 DELETE 提供 最终一致性。此外,Amazon S3 跨多个服务器复制数据。这意味着删除对象时,删除操作可能需要一段时间才能在所有服务器上复制。您可能会看到,如果您尝试在删除对象后立即读取对象,则 Amazon S3 将返回该对象。或者,如果您尝试在删除其中一个对象后立即列出存储桶中的对象,则 Amazon S3 可能会列出已删除对象。

注意:如果您删除一个对象,并希望使用相同的名称上传新对象,则在上传新对象之前发出的 PUT 请求最终将获得一致的响应。

如果删除某个对象后仍然看到该对象,可以使用以下方式之一确认该对象是否正在删除中:

  • 在 AWS 命令行界面 (AWS CLI) 上启用调试选项。然后,使用 AWS CLI 运行 head-object 命令。如果 head-object 命令的响应包含 DeleteMarker 标头,则表示该对象已被删除。如果响应中不包含 DeleteMarker 标头,则说明该对象未被删除。
  • 使用 AWS 开发工具包发送 HeadObject API 调用。如果响应中的 x-amz-delete-marker 字段为 true,则表示该对象已被删除。如果 x-amz-delete-marker 为 false,则表示该对象未被删除。

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?