Wie lösche ich/zählen von Objekten in einem s3-bucket?
Also ich weiß diese Frage wird oft gestellt, aber es scheint einfach nicht gut sein, Antworten für Sie.
Ich habe einen Eimer mit gobs (ich habe keine Ahnung, wie viele) die Anzahl der Dateien in Ihnen. Sie sind alle in 2k ein Stück.
1) Wie finde ich heraus, wie viele dieser Dateien habe ich OHNE Auflistung Sie?
Ich habe die s3cmd.rb, aws/s3 und jets3t-Zeug und das beste, die ich finden kann, ist ein Befehl zum zählen der ersten 1000 Datensätze (wirklich durchführen WIRD, die auf Ihnen).
Habe ich mit jets3t-applet als gut, weil es ist wirklich schön, mit zu arbeiten, aber auch, dass ich die Liste noch lange nicht alle meine Objekte bewirken, dass I run out of heap space. (vermutlich dazu führen, dass es ist, das WIRD auf alle von Ihnen und halten Sie in der Erinnerung)
2) Wie kann ich das einfach löschen ein Eimer?
Das beste, was ich gesehen habe, ist ein paralleized löschen Schleife hat und die Probleme verursachen mal versucht es zu löschen Sie die gleiche Datei. Dies ist, was alle 'deleteall' Befehle, die ich habe lief über tun.
Was tun Sie Jungs, die haben damit geprahlt, über hosting Millionen von Bildern/txts?? Was passiert, wenn Sie wollen, um es zu entfernen?
3) Schließlich gibt es Alternative Antworten auf diese Fragen? Alle diese Dateien sind txt - /xml-Dateien, so ich bin nicht einmal sicher, S3 ist, derartige Bedenken -- vielleicht sollte ich ein Dokument Datenbank sortiert??
Was es hinausläuft, ist, dass die amazon S3-API ist einfach gerade raus fehlen 2 sehr wichtige Operationen, ZÄHLEN und DEL_BUCKET. (tatsächlich gibt es eine löschen-Eimer-Befehl, aber es funktioniert nur, wenn der Eimer leer ist) Wenn jemand kommt mit einer Methode, die nicht saugen zu tun, diese beiden Vorgänge würde ich gerne aufgeben, viel Kopfgeld.
UPDATE
Nur ein paar Fragen zu beantworten. Der Grund, warum ich diese Frage war ich schon für das vergangene Jahr oder so wurde die Speicherung von Hunderten, von tausenden, mehr wie Millionen von 2k txt-und xml-Dokumente. Das Letzte mal, vor ein paar Monaten wollte ich Sie löschen den Eimer, es buchstäblich TAGE dauerte, dies zu tun, weil der Eimer leer sein muss, bevor Sie ihn löschen können. Das war so ein Schmerz in den Arsch ich bin, der fürchtet, jemals diese wieder ohne API-Unterstützung für Sie.
UPDATE
dieser rockt das Haus!
http://github.com/SFEley/s3nuke/
I rm würden ein gutes paar gigs im Wert von 1-2k-Dateien innerhalb von Minuten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin sicherlich nicht einer dieser "Jungs zu tun, die haben damit geprahlt, über hosting Millionen von Bildern/txts', da ich nur ein paar tausend, und dies ist vielleicht nicht die Antwort, die du suchst, aber ich betrachtete diese eine Weile zurück.
Aus, was ich mich erinnere, gibt es einen API-Befehl aufgerufen, der KOPF bekommt die Informationen über ein Objekt nicht als das abrufen des vollständigen Objekt, das ist, was BEKOMMEN hat, was helfen kann, bei der Zählung der Objekte.
Soweit löschen Eimer, zu der Zeit war ich auf der Suche, die API definitiv festgestellt, dass der Eimer musste leer sein, so müssen Sie löschen Sie alle Objekte zuerst.
Aber, ich habe nie einen dieser beiden Befehle, denn ich war mit S3 als backup-und am Ende habe ich ein paar Routinen, die hochgeladen werden die Dateien, die ich wollte auf S3 (also das Teil war auch automatisiert), aber nie die Mühe gemacht mit dem wiederherstellen/löschen/Datei-management-Seite der Gleichung. Für die Benutzung Eimer Explorer, die hat alles was ich brauche. In meinem Fall, war es nicht Wert, Zeit zu verbringen, wenn Sie für 50 USD bekomme ich ein Programm, dass nicht alles, was ich brauche. Es gibt wahrscheinlich noch andere, die das gleiche tun (z.B. CloudBerry)
In Ihrem Fall, mit Eimer-Explorer, können Sie mit der rechten Maustaste auf einen Eimer, und wählen Sie löschen oder klicken Sie rechts und wählen Sie Eigenschaften, und es wird die Anzahl der Objekte und die Größe Sie nehmen. Es ist sicherlich nicht download das gesamte Objekt. (Z.B. die letzten Eimer sah ich es war 12 GB und rund 500 Dateien, und es würde Stunden dauern zum download 12GB in der Erwägung, dass die Größe und Anzahl der zurückgegeben wird, in ein oder zwei Sekunden). Und wenn es ein limit, dann ist es sicher nicht 1000.
Hoffe, das hilft.
"Liste" nicht die Daten abzurufen. Ich benutze s3cmd (ein python-Skript), und ich würde getan haben, so etwas wie dieses:
Aber zuerst prüfen, wie viele bucketfiles_ Dateien, die Sie erhalten. Es wird eine s3cmd laufen pro Datei.
Wird es eine Weile dauern, aber nicht Tage.
s3cmd ls s3://Mybigbucket/somepattern | awk '{print $4}'
. Ja, das ist schmerzhaft1) in Bezug auf Ihre erste Frage können Sie die Liste der Elemente auf einem Eimer, ohne tatsächlich abrufen Ihnen. Sie können tun, dass beide mit der SEIFE und die REST API. Wie Sie sehen können, definieren Sie die maximale Anzahl der Elemente Liste und die position für den Anfang der Liste (der marker). Lesen Sie mehr darüber hier.
Ich kenne keine Implementierung der paging, aber besonders für die REST-Schnittstelle, es wäre sehr einfach zu implementieren, die es in jeder Sprache.
2) ich glaube, die einzige Möglichkeit zum löschen einen Eimer zuerst leer es aus allen Positionen. Siehe auch diese Frage.
3) ich würde sagen, dass S3 ist sehr gut geeignet für die Speicherung einer großen Anzahl von Dateien. Es hängt jedoch, was Sie tun möchten. Planen Sie auch speichern von binären Dateien? Sie benötigen zum ausführen von Abfragen oder einfach nur die Auflistung der Dateien ist genug?
Ich habe das gleiche problem mit dem löschen von Hunderten von tausenden von Dateien aus einem Eimer. Es kann sich lohnen, um Feuer auf einer EC2-Instanz laufen, die parallelen zu löschen, weil die Latenz zu S3 ist gering. Ich denke, es gibt einige Geld verdienen hosting eine Reihe von EC2-Server und laden die Leute zu löschen die Eimer schnell. (Zumindest bis Amazon bekommt um an der änderung der API)
Alter thread, aber immer noch relevant, wie ich war auf der Suche nach der Antwort, bis ich dachte, dieses heraus. Ich wollte die Anzahl der Dateien mit einem GUI-basiertes tool (also kein code). Ich habe zufällig schon ein tool namens 3Hub für drag & drop-transfers zum und vom S3. Ich wollte wissen, wie viele Dateien hatte ich in einen bestimmten Eimer (ich glaube nicht, dass die Abrechnung bricht es nach unten durch den Eimer).
Ich hatte 20521-Dateien in den Eimer und hab die Datei Anzahl in weniger als einer minute.
Ich würde gerne wissen, ob jemand einen besseren Weg gefunden da dies einige Zeit in Anspruch nehmen, die auf Hunderten von tausenden von Dateien.
Zum zählen von Objekten in einem S3-bucket:
Unter AWS-Fakturierung, dann berichten, dann AWS-Nutzung berichten.
Wählen Sie " Amazon Simple Storage Service, dann Betrieb StandardStorage.
Laden Sie eine CSV-Datei, die enthält eine UsageType von StorageObjectCount, dass die Listen die Anzahl der Elemente in jeder Gruppe an.