본문 바로가기

java

S3 전체 파일 리스트 가져오기

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());
끝.