在已启用版本控制的 Amazon S3 存储桶中,对象删除机制与普通存储桶有所不同。当用户向此类存储桶发送简单的 DELETE 请求(即未指定 versionId)时,Amazon S3 并不会立即物理删除数据,而是会在存储桶中插入一个“删除标记”(delete marker)。该标记随即成为对象的当前版本,并分配新的版本号。

此时若尝试通过 GET 请求获取该对象,Amazon S3 会将其视为已删除状态并返回 404 错误,尽管底层数据实际上仍保留在存储桶中。这种机制允许用户临时隐藏对象而不立即释放存储空间或产生费用,因为正常计费规则适用于所有存储和传输的对象版本,包括非当前版本。

若要彻底移除特定对象版本,必须明确指定 versionId 参数,执行 DELETE Object versionId 操作。此操作会永久删除指定的对象版本,且该动作不可撤销。用户可通过 AWS 管理控制台、AWS SDKs、REST API 或 AWS CLI 实现此功能。例如在控制台中,需进入对象详情页面选择“Versions”,勾选目标版本的复选框后点击删除并确认。

此外,Amazon S3 的生命周期配置规则也可用于自动管理对象版本:Expiration 动作作用于当前版本,通过添加删除标记使其变为非当前版本;NoncurrentVersionExpiration 则直接永久移除非当前版本。使用 S3 Storage Lens 可监控当前与非当前版本的数量,辅助优化存储成本。

信息来源