如何使用AWS CLI清空并删除已开启版本控制的S3存储桶
可以通过AWS CLI完成删除开启版本控制的S3存储桶操作,你之前使用的命令仅支持未开启版本控制的存储桶,版本控制存储桶内除了当前版本对象外,还留存历史版本对象、删除标记,常规删除命令无法清理这两类数据,因此会报错。
具体操作步骤如下:
- 第一步:确认当前使用的AWS CLI身份已具备
s3:ListBucketVersions、s3:DeleteObjectVersion、s3:DeleteBucket权限 - 第二步:清空存储桶内所有历史版本对象,替换命令中的
<你的存储桶名称>为实际桶名:aws s3api delete-objects --bucket <你的存储桶名称> --delete "$(aws s3api list-object-versions --bucket <你的存储桶名称> --output json --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')" - 第三步:清空存储桶内所有删除标记:
aws s3api delete-objects --bucket <你的存储桶名称> --delete "$(aws s3api list-object-versions --bucket <你的存储桶名称> --output json --query='{Objects: DeleteMarkers[].{Key:Key,VersionId:VersionId}}')" - 注意:如果存储桶内对象总数超过1000个,重复执行第二、第三步,直到命令返回没有对应版本/删除标记的提示即可
- 第四步:执行存储桶删除命令:
aws s3 rb s3://<你的存储桶名称>
补充说明:如果你的存储桶额外开启了MFA删除功能,需要在上述所有s3api命令后追加--mfa "硬件MFA序列号 动态验证码"参数完成认证后再执行操作。
内容的提问来源于stack exchange,提问作者Red Bottle
相关产品推荐
相关产品推荐

