deleting/replacing boto3 中的桶

deleting/replacing buckets in boto3

完全公开,这是一个训练营,但我很确定我的代码是正确的,我已经多次联系管理员寻求指导,但没有得到回应。我一直收到一个错误,上面写着 (Bucket=bucket['Name']).. 一些关于预设的错误。我想也许我应该用 Prefix 替换 Bucket,但事实并非如此。

这里的想法是删除 gim 个存储桶并在其位置添加 gid 个存储桶。

# Get the list_buckets response
response = s3.list_buckets()

# Delete all the buckets with 'gim', create replacements.
for bucket in response['Buckets']:
  if 'gim' in bucket['Name']:
      s3.delete_bucket(Bucket=bucket['Name'])

s3.create_bucket(Bucket='gid-staging')
s3.create_bucket(Bucket='gid-processed')

# Print bucket listing after deletion
response = s3.list_buckets()
for bucket in response['Bucket']:
    print(bucket['Name'])
for bucket in response['Buckets']:
  if 'gim' in bucket['Name']:
      res = bucket.delete()

虽然存储桶必须是空的才能删除它。

按照 alex067 所说的,您可以删除所有对象,然后像这样删除存储桶:

for bucket in response['Buckets']:
  if 'gim' in bucket['Name']:
    bucket_resource = s3.Bucket(bucket['Name'])
    bucket_resource.objects.all().delete()
    res = bucket_resource.delete()

我建议将其设置为能够 运行 在 "dry" 模式下,以免在出现问题时删除任何不必要的资源。这是它的工作原理:

for bucket in response['Buckets']:
  if 'gim' in bucket['Name']:
    bucket_resource = s3.Bucket(bucket['Name'])
    print(bucket_resource.objects.all())