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())
完全公开,这是一个训练营,但我很确定我的代码是正确的,我已经多次联系管理员寻求指导,但没有得到回应。我一直收到一个错误,上面写着 (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())