How to list all AWS S3 objects in a bucket using Java

后端 未结 11 1283
攒了一身酷
攒了一身酷 2020-11-30 20:34

What is the simplest way to get a list of all items within an S3 bucket using Java?

List s3objects = s3.listObjects(bucketName,prefix)         


        
11条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-11-30 21:25

    Listing Keys Using the AWS SDK for Java

    http://docs.aws.amazon.com/AmazonS3/latest/dev/ListingObjectKeysUsingJava.html

    import java.io.IOException;
    import com.amazonaws.AmazonClientException;
    import com.amazonaws.AmazonServiceException;
    import com.amazonaws.auth.profile.ProfileCredentialsProvider;
    import com.amazonaws.services.s3.AmazonS3;
    import com.amazonaws.services.s3.AmazonS3Client;
    import com.amazonaws.services.s3.model.ListObjectsRequest;
    import com.amazonaws.services.s3.model.ListObjectsV2Request;
    import com.amazonaws.services.s3.model.ListObjectsV2Result;
    import com.amazonaws.services.s3.model.ObjectListing;
    import com.amazonaws.services.s3.model.S3ObjectSummary;
    
    public class ListKeys {
        private static String bucketName = "***bucket name***";
    
        public static void main(String[] args) throws IOException {
            AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
            try {
                System.out.println("Listing objects");
                final ListObjectsV2Request req = new ListObjectsV2Request().withBucketName(bucketName);
                ListObjectsV2Result result;
                do {               
                   result = s3client.listObjectsV2(req);
    
                   for (S3ObjectSummary objectSummary : 
                       result.getObjectSummaries()) {
                       System.out.println(" - " + objectSummary.getKey() + "  " +
                               "(size = " + objectSummary.getSize() + 
                               ")");
                   }
                   System.out.println("Next Continuation Token : " + result.getNextContinuationToken());
                   req.setContinuationToken(result.getNextContinuationToken());
                } while(result.isTruncated() == true ); 
    
             } catch (AmazonServiceException ase) {
                System.out.println("Caught an AmazonServiceException, " +
                        "which means your request made it " +
                        "to Amazon S3, but was rejected with an error response " +
                        "for some reason.");
                System.out.println("Error Message:    " + ase.getMessage());
                System.out.println("HTTP Status Code: " + ase.getStatusCode());
                System.out.println("AWS Error Code:   " + ase.getErrorCode());
                System.out.println("Error Type:       " + ase.getErrorType());
                System.out.println("Request ID:       " + ase.getRequestId());
            } catch (AmazonClientException ace) {
                System.out.println("Caught an AmazonClientException, " +
                        "which means the client encountered " +
                        "an internal error while trying to communicate" +
                        " with S3, " +
                        "such as not being able to access the network.");
                System.out.println("Error Message: " + ace.getMessage());
            }
        }
    }
    

提交回复
热议问题