아래 코드를 사용하여 s3 버킷의 모든 파일 이름 목록을 가져옵니다. 나는 s3에 2 개의 양동이가있다. 버킷 아래의 버킷 중 하나는 모든 파일 이름 (1000 개 이상)을 반환하지만 동일한 코드는 다른 버킷의 파일 이름을 1000 개만 반환합니다. 나는 단지 일어나고있는 일을 얻지 못한다. 동일한 코드가 하나의 버킷에서 실행되고 다른 것으로부터 실행되지 않는 이유는 무엇입니까?Amazon s3은 하나의 버킷에 대해서만 (Java sdk를 사용하여) 다른 버킷에 대해 1000 개의 항목을 반환합니까?
또한 내 버킷에는 hierarchy structure folder/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
좋은 질문입니다. 답변이 없습니다. 나는 @ Abhishek의 코드만을 가져 와서 "고정"했다. 내 유일한 추측은 그것이 양동이의 자산이라는 것입니다. – oferei
s3 Java API의 "이전"버전에서 동일한 문제가 발생했습니다. 아마존은 "v2"를 발표했는데,이 문제를 해결해야합니다 : http://docs.aws.amazon.com/AmazonS3/latest/dev/ListingObjectKeysUsingJava.html 참고로's3client.listObjectsV2'와'req.setContinuationToken (result.getNextContinuationToken())'을 사용합니다. 마지막 하나는 s3에 대한 기본 REST GET 호출을 분리해야합니다 (단일 get은 기본적으로 최대 1000 개의 키를 반환하므로 http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html). – morsik