Ich speichere zwei Millionen Dateien in einem Amazon S3-Bucket. Es gibt eine gegebene Wurzel (l1) unten, eine Liste von Verzeichnissen unter l1 und dann enthält jedes Verzeichnis Dateien. So wird mein Eimer in etwa wie folgt aussehenVerzeichnisse auf einer bestimmten Ebene in Amazon S3 auflisten
l1/a1/file1-1.jpg
l1/a1/file1-2.jpg
l1/a1/... another 500 files
l1/a2/file2-1.jpg
l1/a2/file2-2.jpg
l1/a2/... another 500 files
....
l1/a5000/file5000-1.jpg
Ich mag würde, so schnell wie möglich die zweite Ebene Einträge aufzulisten, so möchte ich a1, a2, A5000 zu bekommen. Ich möchte nicht alle Schlüssel auflisten, das dauert viel länger.
Ich bin offen, um direkt die AWS api verwenden, aber ich habe bisher mit dem right_aws Juwel in Rubin spielt http://rdoc.info/projects/rightscale/right_aws
Es gibt mindestens zwei APIs in diesem Juwel, versuche ich bucket.keys mit() in das Modul S3 und incrementally_list_bucket() im Modul S3Interface. Ich kann das Präfix und das Trennzeichen zum Auflisten aller von l1/a1/* zum Beispiel setzen, aber ich kann nicht herausfinden, wie man nur die erste Ebene in l1 auflistet. Es gibt einen Eintrag: common_prefixes im Hash von incrementally_list_bucket(), aber in meiner Testprobe ist er nicht ausgefüllt.
Ist diese Operation mit der S3 API möglich?
Danke!
Schauen Sie sich die S3-Dokumentation für die ListBucket Betrieb: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html? SOAPListBucket.html. Um a1-a5000 zu erhalten, geben Sie prefix = "/ l1 /" delimeter = "/" an. Um/l1/a123/* zu erhalten, geben Sie prefix = "/ l1/a123 /" an, delimeter = "/". Haben Sie daran gedacht? –
Oren, Sie haben Recht, es funktioniert jetzt. Danke vielmals. Vielleicht war die Test-Bucket-Struktur, die ich erstellt habe, falsch. –