удаление / замена ведер в бото3 - PullRequest
0 голосов
/ 09 января 2020

Полное раскрытие, это для учебного лагеря, но я почти уверен, что мой код правильный, и я несколько раз обращался к администраторам за советом, но не получил ответа. Я получаю сообщение об ошибке, где написано (Bucket=bucket['Name']) .. какая-то ошибка в предустановке. Я подумал, что, возможно, мне следует заменить 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'])

Ответы [ 2 ]

3 голосов
/ 10 января 2020

Исходя из того, что сказал 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" режим, чтобы не удалять ненужные ресурсы, если что-то было go неправильно. Вот как это может работать:

for bucket in response['Buckets']:
  if 'gim' in bucket['Name']:
    bucket_resource = s3.Bucket(bucket['Name'])
    print(bucket_resource.objects.all())
2 голосов
/ 09 января 2020
for bucket in response['Buckets']:
  if 'gim' in bucket['Name']:
      res = bucket.delete()

Перед тем, как вы сможете удалить его, корзина должна быть пустой.

...