使用删除标记
Amazon S3 中的删除标记是用于受版本控制的对象(已在简单 DELETE 请求中命名)的占位符(或标记)。因为对象位于已启用版本控制的存储桶中,所以不能删除该对象。但是,删除标记可以使 Amazon S3 的行为类似于它已被删除。
与任何其他对象一样,删除标记同样有键名 (键) 和版本 ID。但是,删除标记在以下方面与其他对象不同:
-
没有关联的数据。
-
没有关联的访问控制列表 (ACL) 值。
-
由于删除标记不包含数据,因此
GET请求检索不到任何内容;该操作会引发 404 错误。 -
可在删除标记上使用的唯一操作是 Amazon S3 API
DELETE调用。为此,您必须使用具有适当权限的 Amazon Identity and Access Management (IAM) 用户或角色来发出DELETE请求。
删除标记会对 Amazon S3 中的存储产生极少的费用。删除标记的存储大小等于删除标记键名的大小。键名是 Unicode 字符序列。对于名称中的每个字符,UTF-8 编码将 1 到 4 字节的存储添加到桶中。删除标记存储在 S3 Standard 存储类中。如果您想知道自己有多少个删除标记以及它们存储在哪个存储类中,可以使用 Amazon S3 Storage Lens。有关更多信息,请参阅 使用 Amazon S3 Storage Lens 评估您的存储活动和使用情况 和 Amazon S3 Storage Lens 指标词汇表。
有关键名称的更多信息,请参阅 创建对象键名称。有关将删除标记删除的信息,请参阅 管理删除标记。
仅 Amazon S3 可以创建删除标记,且当您在已启用版本控制或已暂停版本控制的存储桶的对象上发送 DELETE
Object 请求时执行此操作。在 DELETE 请求中指定的对象实际上不会删除。而是使删除标记成为对象的当前版本。该对象的键名(键)将成为删除标记的键。如果您尝试获取对象,而其当前版本为删除标记,则 Amazon S3 的响应如下:
-
404 (Object not found) 错误
-
响应标头,
x-amz-delete-marker: true
响应标头告知您所访问的对象是删除标记。此响应标头永不会返回 false。如果值为 false,则 Amazon S3 不会在响应中包含此响应标头。
下图显示了对象(其当前版本为删除标记)上的简单 GET 如何返回 404 No Object Found (未找到对象) 错误。
列出删除标记(和对象的其他版本)的唯一方法在 versions 请求中使用 GET Bucket versions 子资源。简单 GET 不会检索删除标记对象。下图显示 GET Bucket 请求不会返回其当前版本为删除标记的对象。