मैं एस 3 बाल्टी से सभी फ़ाइल नामों की सूची प्राप्त करने के लिए नीचे उल्लिखित कोड का उपयोग कर रहा हूं। मेरे पास एस 3 में दो बाल्टी है। कोड के नीचे एक बाल्टी के लिए सभी फ़ाइल नाम (1000 से अधिक) लौटाते हैं, लेकिन एक ही कोड दूसरी बाल्टी के लिए केवल 1000 फ़ाइल नाम देता है। मैं बस क्या हो रहा है नहीं मिलता है। एक ही कोड एक बाल्टी के लिए क्यों चल रहा है और दूसरे के लिए नहीं?अमेज़ॅन एस 3 एक बाल्टी के लिए केवल 1000 प्रविष्टियां देता है और सभी एक और बाल्टी के लिए (जावा एसडीके का उपयोग कर)?
इसके अलावा मेरी बाल्टी में पदानुक्रम संरचना फ़ोल्डर/filename.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());
लेकिन मूल कारण क्या है? एक ही कोड ने एक मामले के लिए क्यों काम किया था और दूसरे के लिए नहीं था? – morsik
यह एक अच्छा सवाल है, जिसका मेरे पास जवाब नहीं है। मैंने केवल @ अभिषेक का कोड लिया और इसे "निश्चित" किया। मेरा एकमात्र अनुमान यह है कि यह बाल्टी की संपत्ति है। – oferei
मुझे एस 3 जावा एपीआई के "पुराने" संस्करण के साथ एक ही समस्या है। अमेज़ॅन ने "v2" पेश किया, जिसे इस मुद्दे को हल करना चाहिए: http://docs.aws.amazon.com/AmazonS3/latest/dev/ListingObjectKeysUsingJava।एचटीएमएल नोट, यह 's3client.listObjectsV2' और' req.setContinuationToken (result.getNextContinuationToken()) का उपयोग करता है। आखिरी व्यक्ति को अलग-अलग अंतर्निहित आरईएसटी को एस 3 पर कॉल करना चाहिए (क्योंकि एकल डिफ़ॉल्ट रूप से 1000 कुंजी तक लौटाता है, http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) – morsik