Удалить полный S3 Bucket CLI - PullRequest
0 голосов
/ 02 апреля 2020

Мне нужно удалить корзину S3, в которой есть несколько объектов:

aws s3 rb --force  s3://ansible.prod-us-east 
remove_bucket failed: s3://ansible.prod-us-east An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.

Я также попытался это сделать:

aws s3api delete-bucket --bucket "ansible.prod-us-east" --region "us-east-1" 

An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.

В ошибках указано, что корзина заполнена. Но когда я перечисляю это в командной строке или смотрю на область памяти в консоли, область уже пуста.

Я получаю ту же ошибку, когда пытаюсь удалить область памяти из консоли. Корзина пуста, но ошибка говорит о том, что она заполнена, и я не могу удалить корзину.

Как мне это сделать?

1 Ответ

3 голосов
/ 02 апреля 2020

В ошибках сказано, что корзина заполнена. Но когда я перечисляю это в командной строке или смотрю на область памяти в консоли, область уже пуста.

Это версия версии. В консоли AWS по умолчанию Версии скрыты. У вас есть возможность показать версионные объекты и удалить маркеры. Чтобы просмотреть версии в CLI,

aws s3api list-object-versions --bucket ansible.prod-us-east

Для удаления корзины все версии и маркеры удаления должны быть удалены в первую очередь. Это проще сделать за boto3, чем aws-cli.

#!/usr/bin/env python
import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('ansible.prod-us-east')
bucket.object_versions.all().delete()
bucket.delete()

Попробуйте это , если вы хотите сделать это с помощью aws s3api.

...