咨询如何彻底删除Amazon S3存储桶中包含所有版本的对象
Amazon S3 版本化存储桶对象彻底删除解决方案
控制台操作步骤
- 进入对应S3存储桶的「对象」选项卡,勾选页面上方的显示版本开关,此时会列出该存储桶内所有对象的历史版本、删除标记条目
- 删除按钮呈灰色的核心原因是未选中所有关联条目:需要将目标对象对应的全部历史版本条目、全部删除标记条目同时勾选,删除按钮会自动变为可点击状态
- 点击删除后,在确认页面输入
permanently delete完成确认,操作完成后刷新页面,即使开启显示版本也无法检索到该对象的任何残留记录
CLI 操作解决方案
CLI操作失败通常是未指定对象版本ID,或缺少对应权限,按以下步骤操作即可:
- 首先获取目标对象的所有版本ID、删除标记ID,执行命令:
aws s3api list-object-versions --bucket 替换为你的桶名 --prefix 替换为目标对象的完整路径 - 返回结果中分别提取
Versions节点下的所有VersionId,以及DeleteMarkers节点下的所有VersionId - 针对每个ID单独执行删除操作:
aws s3api delete-object --bucket 替换为你的桶名 --key 替换为目标对象的完整路径 --version-id 替换为对应版本ID - 也可以使用批量命令一键删除所有版本和删除标记:
# 批量删除所有历史版本 aws s3api list-object-versions --bucket 替换为你的桶名 --prefix 替换为目标对象的完整路径 --query 'Versions[].VersionId' --output text | xargs -I {} aws s3api delete-object --bucket 替换为你的桶名 --key 替换为目标对象的完整路径 --version-id {} # 批量删除所有删除标记 aws s3api list-object-versions --bucket 替换为你的桶名 --prefix 替换为目标对象的完整路径 --query 'DeleteMarkers[].VersionId' --output text | xargs -I {} aws s3api delete-object --bucket 替换为你的桶名 --key 替换为目标对象的完整路径 --version-id {}
常见操作失败排查
- 检查存储桶是否开启了对象锁定功能:如果开启了合规模式的对象锁定,锁定周期内的对象版本无法被任何人删除,需等锁定周期到期后再操作
- 检查操作账号权限:确认账号具备
s3:DeleteObjectVersion权限,普通的s3:DeleteObject权限仅能新增删除标记,无法删除历史版本 - 检查存储桶是否配置了MFA删除:如果开启了MFA删除,删除版本时需要在请求中附带MFA设备的序列号和动态验证码才能完成操作
内容的提问来源于stack exchange,提问作者Alexcamostyle
相关产品推荐
相关产品推荐

