56 votes

Supprimer des compartiments Amazon S3?

J'ai interagi avec Amazon S3 via S3Fox et je ne peux pas supprimer mes seaux. Je sélectionne un seau, appuie sur supprimer, confirme la suppression dans une fenêtre contextuelle et... rien ne se passe. Y a-t-il un autre outil que je devrais utiliser ?

143voto

chris14679 Points 1066

Il est enfin possible de supprimer tous les fichiers en une seule fois en utilisant la nouvelle fonction de règles de cycle de vie (expiration). Vous pouvez même le faire depuis la console AWS.

Il suffit de cliquer avec le bouton droit sur le nom du compartiment dans la console AWS, sélectionnez "Propriétés" puis dans la ligne des onglets en bas de la page sélectionnez "cycle de vie" et "ajouter une règle". Créez une règle de cycle de vie avec le champ "Préfixe" laissé vide (vide signifie tous les fichiers dans le compartiment, ou vous pourriez le définir sur "a" pour supprimer tous les fichiers dont les noms commencent par "a"). Définissez le champ "Jours" sur "1". C'est tout. Fait. En supposant que les fichiers aient plus d'un jour, ils devraient tous être supprimés, ensuite vous pouvez supprimer le compartiment.

Je viens juste d'essayer ceci pour la première fois alors j'attends toujours de voir à quelle vitesse les fichiers sont supprimés (ce n'était pas instantané mais cela devrait théoriquement se produire dans les 24 heures) et si je vais être facturé pour une commande de suppression ou pour 50 millions de commandes de suppression... croisons les doigts !

30voto

MattLor Points 303

N'oubliez pas que les seaux S3 doivent être vides avant de pouvoir être supprimés. La bonne nouvelle est que la plupart des outils tiers automatisent ce processus. Si vous rencontrez des problèmes avec S3Fox, je recommande d'essayer S3FM pour une interface graphique ou S3Sync pour la ligne de commande. Amazon a un excellent article décrivant comment utiliser S3Sync. Après avoir configuré vos variables, la commande clé est

./s3cmd.rb deleteall 

Supprimer des seaux avec beaucoup de fichiers individuels a tendance à faire planter beaucoup d'outils S3 car ils essaient d'afficher une liste de tous les fichiers dans le répertoire. Vous devez trouver un moyen de supprimer par lots. Le meilleur outil graphique que j'ai trouvé à cette fin est Bucket Explorer. Il supprime les fichiers dans un seau S3 par tranches de 1000 fichiers et ne plante pas lors de l'ouverture de grands seaux comme s3Fox et S3FM.

J'ai également trouvé quelques scripts que vous pouvez utiliser à cette fin. Je n'ai pas encore essayé ces scripts mais ils semblent assez simples.

RUBY

require 'aws/s3'

AWS::S3::Base.establish_connection!(
:access_key_id => 'votre clé d'accès',
:secret_access_key => 'votre clé secrète'
)

seau = AWS::S3::Bucket.find('le nom du seau')

while(!seau.empty?)
begin
puts "Suppression des objets dans le seau"

seau.objects.each do |object|
object.delete
puts "Il reste #{seau.objects.size} objets dans le seau"
end

puts "Objets supprimés"

rescue SocketError
puts "Erreur de socket"
end

end

PERL

#!/usr/bin/perl
use Net::Amazon::S3;
my $aws_access_key_id = 'votre clé d'accès';
my $aws_secret_access_key = 'votre clé d'accès secrète';
my $increment = 50; # 50 à la fois
my $nom_seau = 'nom_du_seau';

my $s3 = Net::Amazon::S3->new({aws_access_key_id => $aws_access_key_id, aws_secret_access_key => $aws_secret_access_key, retry => 1, });
my $seau = $s3->bucket($nom_seau);

print "Suppression progressive du contenu de $nom_seau\n";

my $supprime = 1;
my $total_supprime = 0;
while ($supprime > 0) {
print "Chargement jusqu'à $increment clés...\n";
$response = $seau->list({'max-keys' => $increment, }) or die $s3->err . ": " . $s3->errstr . "\n";
$supprime = scalar(@{ $response->{keys} }) ;
$total_supprime += $supprime;
print "Suppression de $supprime clés($total_supprime au total)...\n";
foreach my $key ( @{ $response->{keys} } ) {
my $nom_cle = $key->{key};
$seau->delete_key($key->{key}) or die $s3->err . ": " . $s3->errstr . "\n";
}
}
print "Suppression du seau...\n";
$seau->delete_bucket or die $s3->err . ": " . $s3->errstr;
print "Terminé.\n";

SOURCE: Tarkblog

J'espère que cela vous aidera!

16voto

robbyt Points 414

Les versions récentes de s3cmd ont --recursive

par exemple,

~/$ s3cmd rb --recursive s3://bucketwithfiles

http://s3tools.org/kb/item5.htm

7voto

Avec s3cmd: Créez un nouveau répertoire vide s3cmd sync --delete-removed empty_directory s3://yourbucket

5voto

John Spurlock Points 1228

SpaceBlock facilite également la suppression des buckets s3 - cliquez avec le bouton droit sur le bucket, supprimez, attendez que le travail se termine dans la vue des transferts, c'est tout.

C'est le frontend Windows s3 gratuit et open source que je maintiens, donc avertissement de plug sans vergogne, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X