Avec les derniers outils de ligne de commande python aws-cli , supprimer récursivement tous les fichiers sous un dossier dans un compartiment est juste:
aws s3 rm --recursive s3://your_bucket_name/foo/
Ou supprimez tout ce qui se trouve sous le seau:
aws s3 rm --recursive s3://your_bucket_name
Si vous souhaitez réellement supprimer le compartiment, il existe un raccourci en une étape:
aws s3 rb --force s3://your_bucket_name
qui supprimera le contenu de ce compartiment de manière récursive, puis supprimera le compartiment.
Remarque: le s3://
préfixe de protocole est requis pour que ces commandes fonctionnent
rm
supprimera uniquement les fichiers maisrb --force
supprimera les fichiers et le seau.--recursive
supprime également le dossier.Cela nécessitait auparavant un appel d'API dédié par clé (fichier), mais a été considérablement simplifié en raison de l'introduction d' Amazon S3 - Multi-Object Delete en décembre 2011:
Voir ma réponse à la question associée supprimer de S3 à l'aide de l'api php en utilisant un caractère générique pour plus d'informations à ce sujet et des exemples respectifs en PHP (le kit AWS SDK pour PHP prend en charge cela depuis la version 1.4.8 ).
La plupart des bibliothèques clientes AWS ont entre-temps introduit une prise en charge dédiée pour cette fonctionnalité d'une manière ou d'une autre, par exemple:
Python
Vous pouvez y parvenir avec l'excellent boto interface Python avec AWS à peu près comme suit (non testé, du haut de ma tête):
import boto s3 = boto.connect_s3() bucket = s3.get_bucket("bucketname") bucketListResultSet = bucket.list(prefix="foo/bar") result = bucket.delete_keys([key.name for key in bucketListResultSet])
Rubis
Ceci est disponible depuis la version 1.24 du kit SDK AWS pour Ruby et les notes de publication fournissent également un exemple:
bucket = AWS::S3.new.buckets['mybucket'] # delete a list of objects by keys, objects are deleted in batches of 1k per # request. Accepts strings, AWS::S3::S3Object, AWS::S3::ObectVersion and # hashes with :key and :version_id bucket.objects.delete('key1', 'key2', 'key3', ...) # delete all of the objects in a bucket (optionally with a common prefix as shown) bucket.objects.with_prefix('2009/').delete_all # conditional delete, loads and deletes objects in batches of 1k, only # deleting those that return true from the block bucket.objects.delete_if{|object| object.key =~ /\.pdf$/ } # empty the bucket and then delete the bucket, objects are deleted in batches of 1k bucket.delete!
Ou:
la source
aws cli
réponse comme @ number5Vous pouvez également envisager d'utiliser Amazon S3 Lifecycle pour créer une expiration pour les fichiers avec le préfixe
foo/bar1
.Ouvrez la console du navigateur S3 et cliquez sur un compartiment. Cliquez ensuite sur Propriétés, puis sur LifeCycle.
Créez une règle d'expiration pour tous les fichiers avec le préfixe
foo/bar1
et définissez la date sur 1 jour depuis la création du fichier.Enregistrez et tous les fichiers correspondants seront supprimés dans les 24 heures.
N'oubliez pas de supprimer la règle une fois que vous avez terminé!
Pas d'appels d'API, pas de bibliothèques, d'applications ou de scripts tiers.
Je viens de supprimer plusieurs millions de fichiers de cette façon.
Une capture d'écran montrant la fenêtre Règle du cycle de vie (notez dans cette photo que le préfixe a été laissé vide, affectant toutes les clés du compartiment):
la source
Avec le
s3cmd
package installé sur une machine Linux, vous pouvez le faires3cmd rm s3://foo/bar --recursive
la source
s3cmd del s3://BUCKET/OBJECT
ou de la suppression complète du compartiments3cmd rb s3://BUCKET
. Il n'y a pass3cmd rm
, du moins selons3cmd --help
.s3cmd rm
est dans l'aide à partir de 2019 (comme alias pour del), c'est une excellente réponse. Lesaws
outils cli fonctionnent uniquement avec un/
préfixe de fin, mais pas avec un préfixe de dossier et de nom de fichier partiel, alors que s3cmd fonctionne dans les deux cas. Cette réponse a besoin de beaucoup plus de votes positifs, j'ai dû faire défiler beaucoup trop loin pour trouver la bonne solution.Si vous souhaitez supprimer tous les objets avec le préfixe «foo /» à l'aide de Java AWS SDK 2.0
la source
En cas d'utilisation d'AWS-SKD pour ruby V2.
attention s'il vous plaît, tous les "foo / *" sous le compartiment seront supprimés.
la source
Je viens de supprimer tous les fichiers de mon compartiment à l'aide de PowerShell:
la source
Je viens de voir qu'Amazon a ajouté une option «Comment vider un compartiment» dans le menu de la console AWS:
http://docs.aws.amazon.com/AmazonS3/latest/UG/DeletingaBucket.html
la source
La réponse votée à la hausse manque une étape.
Pour l'aide AWS S3:
la source
Le meilleur moyen est d'utiliser la règle de cycle de vie pour supprimer tout le contenu du compartiment. Par programme, vous pouvez utiliser le code suivant (PHP) pour mettre la règle de cycle de vie PUT.
Dans le cas ci-dessus, tous les objets seront supprimés Date de début - "Aujourd'hui GMT minuit".
Vous pouvez également spécifier les jours comme suit. Mais avec Days, il faudra attendre au moins 24 heures (1 jour est minimum) pour commencer à supprimer le contenu du bucket.
la source
J'avais besoin de faire ce qui suit ...
la source