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 der gleiche Code für einen Eimer und nicht für andere?Amazon S3 gibt nur 1000 Einträge für einen Bucket zurück und alle für einen anderen Bucket (mit Java SDK)?
Auch meine Bucket haben Hierarchie Struktur Ordner/Dateiname.jpg.
ObjectListing objects = s3.listObjects("bucket.new.test");
do {
for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {
String key = objectSummary.getKey();
System.out.println(key);
}
objects = s3.listNextBatchOfObjects(objects);
} while (objects.isTruncated());
Aber was ist die Ursache? Warum hatte derselbe Code für einen Fall funktioniert und nicht für einen anderen? – morsik
Das ist eine gute Frage, auf die ich keine Antwort habe. Ich habe nur @ Abhisheks Code genommen und ihn "repariert". Meine einzige Vermutung ist, dass es eine Eigenschaft des Eimers ist. – oferei
Ich habe das gleiche Problem mit "alten" Version von s3 Java API. Amazon führte "v2" ein, das das Problem beheben sollte: http://docs.aws.amazon.com/AmazonS3/latest/dev/ListingObjectKeysUsingJava.html Hinweis, es verwendet 's3client.listObjectsV2' und' req.setContinuationToken (result.getNextContinuationToken()) '. Die letzte sollte separate REST GET-Aufrufe an s3 vornehmen (da einzelne get-Schlüssel standardmäßig bis zu 1000 Schlüssel zurückgeben, http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) – morsik