从启用了版本控制的存储桶中删除对象版本 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

从启用了版本控制的存储桶中删除对象版本

您在需要时随时可以从 Amazon S3 存储桶中删除对象版本。您还可为具有明确定义的生命周期的对象定义生命周期配置规则,请求 Amazon S3 使当前对象版本过期,或者永久删除非当前对象版本。当存储桶启用了版本控制或者版本控制功能已暂停时,生命周期配置操作的工作方式如下:

  • Expiration 操作适用于当前对象版本。Amazon S3 通过添加删除标记将当前版本作为非当前版本保留(而不是删除当前对象版本),然后删除标记将成为当前版本。

  • NoncurrentVersionExpiration 操作适用于非当前对象版本,Amazon S3 会永久删除这些对象版本。无法恢复永久删除的对象。

有关更多信息,请参阅管理存储生命周期

删除请求使用案例

DELETE 请求具有以下使用案例:

  • 启用版本控制后,简单 DELETE 无法永久删除对象。Amazon S3 将在存储桶中插入删除标记,该删除标记将成为对象的当前版本并具有新的 ID。

    当您尝试对当前版本为删除标记的对象执行 GET 操作时,Amazon S3 将该对象作为已删除对象对待(即使它尚未被擦除),并返回 404 错误。有关更多信息,请参阅使用删除标记

    下图显示简单 DELETE 实际上不会删除指定的对象。但是,Amazon S3 将插入一个删除标记。

  • 要永久删除受版本控制的对象,您必须使用 DELETE Object versionId

    下图显示删除指定的对象版本将永久删除该对象。

要删除对象版本

您可以使用控制台、Amazon SDK 或 REST API 删除 Amazon S3 中的对象版本。

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. Bucket(存储桶)列表中,请选择包含对象的存储桶的名称。

  3. Objects(对象)列表中,请选择对象的名称。

  4. 请选择 Versions(版本)。

    Amazon S3 显示了对象的所有版本。

  5. 选中要检索的版本的版本 ID 旁的复选框。

  6. 请选择 Delete(删除)。

  7. Permanently delete objects?(永久删除对象?)中,输入 permanently delete

    警告

    永久删除对象版本时,该操作将无法撤消。

  8. 请选择 Delete objects(删除对象)。

    Amazon S3 将删除对象版本。

有关使用适用于 Java、.NET 和 PHP 的 Amazon SDK 删除对象的示例,请参阅 删除 Amazon S3 对象。在不受版本控制和启用了版本控制的存储桶中删除对象的示例是相同的。但是,对于启用了版本控制的存储桶,Amazon S3 会分配版本号。否则,版本号为空。

有关使用其他 Amazon SDK 的信息,请参阅 Amazon 开发人员中心

Python

以下 Python 代码示例通过删除版本控制对象的所有版本永久删除了该对象。

def permanently_delete_object(bucket, object_key): """ Permanently deletes a versioned object by deleting all of its versions. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket: The bucket that contains the object. :param object_key: The object to delete. """ try: bucket.object_versions.filter(Prefix=object_key).delete() logger.info("Permanently deleted all versions of object %s.", object_key) except ClientError: logger.exception("Couldn't delete all versions of %s.", object_key) raise

删除对象的特定版本的步骤

  • DELETE 中,指定版本 ID。

例 — 删除特定版本

以下示例删除了 UIORUnfnd89493jJFJ 的版本 photo.gif

DELETE /photo.gif?versionId=UIORUnfnd89493jJFJ HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain Content-Length: 0

有关删除对象版本的更多信息,请参阅以下主题: