boto3中的删除/替换存储桶

问题描述 投票:0回答:2

完全公开,这是为了进行新手训练,但是我很确定我的代码是正确的,我已经多次联系管理员以寻求指导,但没有得到回应。我在显示(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'])
python amazon-web-services amazon-s3 boto3 bucket
2个回答
3
投票

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

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

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

2
投票
for bucket in response['Buckets']:
  if 'gim' in bucket['Name']:
      res = bucket.delete()

虽然存储桶确实必须为空,但是您才能将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.