删除/替换boto3中的存储桶

2024-09-27 17:33:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这里的想法是删除gim个bucket,并在其位置添加gid个bucket

# 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'])

Tags: thenameinfors3bucketresponse错误
2条回答
for bucket in response['Buckets']:
  if 'gim' in bucket['Name']:
      res = bucket.delete()

不过,在删除该存储桶之前,它必须是空的

按照alex067所说的,您可以删除所有对象,然后删除bucket,如下所示:

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()

我建议将此设置为能够在“干燥”模式下运行,以便在出现问题时不会删除任何不必要的资源。以下是如何做到这一点:

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

相关问题 更多 >

    热门问题