S3 특정 bucket에 저장된 Object 파일리스트 목록을 가져올때 아래와 같이 코딩을 할 수 있다.
AWSCredentials crd = new BasicAWSCredentials(accessKey, secretKey); AmazonS3 s3 = new AmazonS3Client(crd); ObjectListing objects = s3.listObjects(bucketName, folderName); do { //1000개 단위로 읽음 for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) { } objects = s3.listNextBatchOfObjects(objects); <--이녀석은 1000개 단위로만 가져옴.. } while (objects.isTruncated());
지정된 bucket에 S3 Object가 10,300개가 있다고 가정하면 위와 같이 코딩을 하게 되면
1000개 단위 10번 즉 10,000개의 Object만 가져올 수 있다.
전체 데이터를 다 가져오려면 아래와 같이 코딩을 해야 한다.
AWSCredentials crd = new BasicAWSCredentials(accessKey, secretKey); AmazonS3 s3 = new AmazonS3Client(crd); ListObjectsRequest listObject = new ListObjectsRequest(); listObject.setBucketName(bucketName); listObject.setPrefix(folderName); ObjectListing objects = s3.listObjects(listObject); do { objects = s3.listObjects(listObject); //1000개 단위로 읽음 for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) { } //objects = s3.listNextBatchOfObjects(objects); <--이녀석은 1000개 단위로만 가져옴.. listObject.setMarker(objects.getNextMarker()); } while (objects.isTruncated());끝.
'java' 카테고리의 다른 글
AWS JAVA SDK를 이용한 EMR(Elastic MapReduce) Job Flow 생성 및 실행 (0) | 2014.08.01 |
---|---|
[Effective Java] private 생성자를 사용해서 인스턴스 생성을 못하게 하자 (0) | 2014.01.23 |
[Effective Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자 (0) | 2014.01.23 |