从启用了版本控制的存储桶中删除对象版本
您在需要时随时可以从 Amazon S3 存储桶中删除对象版本。您还可为具有明确定义的生命周期的对象定义生命周期配置规则,请求 Amazon S3 使当前对象版本过期,或者永久删除非当前对象版本。当存储桶已启用版本控制或者版本控制已暂停时,生命周期配置操作的工作方式如下:
-
Expiration
操作适用于当前对象版本。Amazon S3 通过添加删除标记将当前版本作为非当前版本保留(而不是删除当前对象版本),然后删除标记将成为当前版本。 -
NoncurrentVersionExpiration
操作适用于非当前对象版本,Amazon S3 会永久删除这些对象版本。无法恢复永久删除的对象。
有关 S3 生命周期的更多信息,请参阅管理对象的生命周期和S3 生命周期配置的示例。
要查看您的存储桶有多少个当前和非当前对象版本,您可以使用 Amazon S3 Storage Lens 存储统计管理工具指标。S3 Storage Lens 存储统计管理工具是一项云存储分析功能,您可以使用它在整个组织范围内了解对象存储的使用情况和活动。有关更多信息,请参阅使用 S3 Storage Lens 存储统计管理工具优化存储成本。有关指标的完整列表,请参阅 S3 Storage Lens 存储统计管理工具指标词汇表。
注意
正常的 Amazon S3 费率适用于存储和传输的每个对象版本,包括非当前对象版本。有关更多信息,请参阅 Amazon S3 定价
删除请求使用案例
DELETE
请求具有以下使用案例:
-
启用版本控制后,简单
DELETE
无法永久删除对象。(简单DELETE
请求是指未指定版本 ID 的请求。) Amazon S3 将在存储桶中插入删除标记,该删除标记将成为对象的当前版本并具有新的 ID。当您尝试对当前版本为删除标记的对象执行
GET
操作时,Amazon S3 将该对象作为已删除对象对待(即使它尚未被擦除),并返回 404 错误。有关更多信息,请参阅 使用删除标记。下图显示简单
DELETE
实际上不会删除指定的对象。但是,Amazon S3 将插入一个删除标记。 -
要永久删除受版本控制的对象,您必须使用
DELETE Object versionId
。下图显示删除指定的对象版本将永久删除该对象。
要删除对象版本
您可以使用控制台、Amazon SDK 或 REST API 或 Amazon Command Line Interface 删除 Amazon S3 中的对象版本。
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在存储桶列表中,请选择包含对象的存储桶的名称。
-
在 Objects(对象)列表中,请选择对象的名称。
-
请选择 Versions(版本)。
Amazon S3 显示了对象的所有版本。
-
选中要检索的版本的版本 ID 旁的复选框。
-
请选择 Delete(删除)。
-
在 Permanently delete objects?(永久删除对象?)中,输入
permanently delete
。警告
永久删除对象版本时,该操作将无法撤消。
-
请选择 Delete objects(删除对象)。
Amazon S3 将删除对象版本。
有关使用适用于 Java、.NET 和 PHP 的 Amazon SDK 删除对象的示例,请参阅 删除 Amazon S3 对象。在不受版本控制和启用了版本控制的存储桶中删除对象的示例是相同的。但是,对于启用了版本控制的存储桶,Amazon S3 会分配版本号。否则,版本号为空。
有关使用其他 Amazon SDK 的信息,请参阅 Amazon 开发人员中心
删除对象的特定版本
-
在
DELETE
中,指定版本 ID。
例 — 删除特定版本
以下示例删除了 photo.gif
的版本 UIORUnfnd89493jJFJ
。
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
以下命令从名为
的存储桶中删除名为 test.txt 的对象。要删除特定版本的对象,您必须是存储桶拥有者,并且您必须使用版本 Id 子资源。amzn-s3-demo-bucket1
aws s3api delete-object --bucket
amzn-s3-demo-bucket1
--key test.txt --version-idversionID
有关 delete-object
的更多信息,请参阅《Amazon CLI 命令参考》中的 delete-object。
有关删除对象版本的更多信息,请参阅以下主题: