web-dev-qa-db-fra.com

Quel est le moyen le plus rapide de vider le seau s3 à l'aide de boto3?

Je pensais à supprimer puis à recréer le bucket (mauvaise option que j'ai réalisée plus tard).

Alors comment supprimer tous les objets du bucket?

J'ai essayé ceci: http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.delete_objects

Mais il supprime plusieurs objets pas tous.

pouvez-vous suggérer quelle est la meilleure façon de vider le seau?

9
Tushar Niras

Utilisez simplement aws cli .

aws s3 rm s3://mybucket --recursive

Eh bien, pour une réponse plus longue si vous insistez pour utiliser boto3. Cela enverra un marqueur de suppression à s3. Aucune gestion de dossier requise. bucket.Object.all créera un itérateur qui ne se limite pas à 1K.

import boto3    
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
# suggested by Jordon Philips 
bucket.objects.all().delete()
25
mootmoot

Si le contrôle de version est activé, il existe un appel similaire à l'autre réponse pour supprimer toutes les versions d'objet:

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket-name')
bucket.object_versions.delete()
2
kgutwin