本文介绍了删除完整的S3存储桶CLI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要删除其中包含一些对象的S3存储桶:
aws s3 rb --force s3://ansible.prod-us-east
remove_bucket failed: s3://ansible.prod-us-east An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.
我还尝试了这个:
aws s3api delete-bucket --bucket "ansible.prod-us-east" --region "us-east-1"
An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.
错误显示存储桶已满。但当我在命令行中列出它或在控制台中查看存储桶时,存储桶已经是空的。
当我尝试从控制台中删除存储桶时,我收到相同的错误。存储桶为空,但错误提示它已满,我无法删除该存储桶。
我如何才能完成此任务?
推荐答案
它是一个版本化的存储桶。在AWS控制台中,默认情况下,版本处于隐藏状态。您可以选择显示版本化对象和删除标记。要在CLI中查看版本,请
aws s3api list-object-versions --bucket ansible.prod-us-east
要删除存储桶,必须先删除所有版本和删除标记。在boto3
中完成此操作比在aws-cli
中更容易。
#!/usr/bin/env python
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('ansible.prod-us-east')
bucket.object_versions.all().delete()
bucket.delete()
如果要使用aws s3api
完成此操作,请尝试this。
这篇关于删除完整的S3存储桶CLI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!