本文介绍了删除完整的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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-26 21:51