【问题标题】:Delete Full S3 Bucket CLI删除完整 S3 存储桶 CLI
【发布时间】:2020-07-14 21:48:36
【问题描述】:

我需要删除其中包含一些对象的 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.

错误表明存储桶已满。但是当我在命令行上列出它或在控制台中查看存储桶时,存储桶已经是空的了。

当我尝试从控制台删除存储桶时,我遇到了同样的错误。存储桶为空,但错误提示已满,无法删除存储桶。

我怎样才能完成这项工作?

【问题讨论】:

  • 您必须先删除存储桶中的每个对象。
  • 如果bucket有版本,你也需要删除它们
  • 好的,谢谢。我会的!

标签: amazon-web-services amazon-s3 aws-cli


【解决方案1】:

错误表明存储桶已满。但是当我把它列在 命令行或在控制台中查看存储桶所在的存储桶 已经空了。

这是一个版本化的存储桶。在 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

【讨论】:

  • +1。我认为这里值得注意的是,即使将--forceaws s3 rb 一起使用也不适用于版本化存储桶。
  • 感谢 shell 脚本。为我节省了一些乏味的时间。祝福你
猜你喜欢
  • 2017-08-24
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
  • 2010-09-06
相关资源
最近更新 更多