Amazon s3 gibt nur 1000 Einträge für einen Bucket und alle für einen anderen Bucket zurück (mit Java sdk)?

9

Ich verwende den unten erwähnten Code, um eine Liste aller Dateinamen von s3 bucket zu erhalten. Ich habe zwei Eimer in s3. Für einen der unteren Bucket-Code gibt alle Dateinamen zurück (mehr als 1000), aber der gleiche Code gibt nur 1000 Dateinamen für einen anderen Bucket. Ich verstehe einfach nicht, was passiert. Warum läuft der gleiche Code nur für einen Bucket und nicht für andere?

Auch mein Bucket hat die Hierarchiestruktur folder / filename.jpg.

%Vor%     
Abhishek 12.10.2012, 06:30
quelle

4 Antworten

5

Verbesserung von @ Abhisheks eigener Antwort. Dieser Code ist etwas kürzer. Auch feste Variablennamen.

%Vor%     
oferei 13.01.2015, 21:28
quelle
6

Für Scala-Entwickler ist es hier eine rekursive Funktion, einen vollständigen Scan und eine Karte des Inhalts eines AmazonS3-Buckets mit dem offiziellen AWS SDK für Java

%Vor%

Um die obige curried map() -Funktion aufzurufen, übergeben Sie einfach das bereits erstellte (und ordnungsgemäß initialisierte) AmazonS3Client-Objekt (siehe das offizielle AWS SDK für Java-API-Referenz ), der Bucket-Name und der Präfixname in der ersten Parameterliste. Übergeben Sie auch die Funktion f() , die angewendet werden soll, um jede Objektzusammenfassung in der zweiten Parameterliste abzubilden.

Zum Beispiel

%Vor%

gibt die vollständige Liste der (key, owner) -Tupel in diesem Bucket / Präfix

zurück

oder

%Vor%

wie Sie normalerweise von Monaden in der funktionalen Programmierung

kommen würden     
Paolo Angioletti 05.06.2014 12:20
quelle
5

Ich habe nur den obigen Code geändert, um addAll anstelle der für -Schleife zu verwenden, um ein Objekt einzeln hinzuzufügen, und es hat für mich funktioniert. Codeänderungen sind wie folgt:

%Vor%

Danach können Sie einfach einen Iterater über die Liste keyList verwenden.

    
Abhishek 25.10.2012 08:07
quelle
1

Wenn Sie alle Objekte (mehr als 1000 Schlüssel) erhalten möchten, müssen Sie ein weiteres Paket mit dem letzten Schlüssel an S3 senden. Hier ist der Code.

%Vor%     
Si Loc 12.03.2013 03:21
quelle

Tags und Links