How can I tell how many objects I've stored in an S3 bucket?

后端 未结 29 3695
逝去的感伤
逝去的感伤 2020-12-02 04:45

Unless I\'m missing something, it seems that none of the APIs I\'ve looked at will tell you how many objects are in an /. Is ther

29条回答
  •  借酒劲吻你
    2020-12-02 05:10

    Following is how you can do it using java client.

    
        com.amazonaws
        aws-java-sdk-s3
        1.11.519
    
    
    import com.amazonaws.ClientConfiguration;
    import com.amazonaws.Protocol;
    import com.amazonaws.auth.AWSStaticCredentialsProvider;
    import com.amazonaws.auth.BasicAWSCredentials;
    import com.amazonaws.services.s3.AmazonS3;
    import com.amazonaws.services.s3.AmazonS3ClientBuilder;
    import com.amazonaws.services.s3.model.ObjectListing;
    
    public class AmazonS3Service {
    
        private static final String S3_ACCESS_KEY_ID = "ACCESS_KEY";
        private static final String S3_SECRET_KEY = "SECRET_KEY";
        private static final String S3_ENDPOINT = "S3_URL";
    
        private AmazonS3 amazonS3;
    
        public AmazonS3Service() {
            ClientConfiguration clientConfiguration = new ClientConfiguration();
            clientConfiguration.setProtocol(Protocol.HTTPS);
            clientConfiguration.setSignerOverride("S3SignerType");
            BasicAWSCredentials credentials = new BasicAWSCredentials(S3_ACCESS_KEY_ID, S3_SECRET_KEY);
            AWSStaticCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
            AmazonS3ClientBuilder.EndpointConfiguration endpointConfiguration = new AmazonS3ClientBuilder.EndpointConfiguration(S3_ENDPOINT, null);
            amazonS3 = AmazonS3ClientBuilder.standard().withCredentials(credentialsProvider).withClientConfiguration(clientConfiguration)
                    .withPathStyleAccessEnabled(true).withEndpointConfiguration(endpointConfiguration).build();
        }
    
        public int countObjects(String bucketName) {
            int count = 0;
            ObjectListing objectListing = amazonS3.listObjects(bucketName);
            int currentBatchCount = objectListing.getObjectSummaries().size();
            while (currentBatchCount != 0) {
                count += currentBatchCount;
                objectListing = amazonS3.listNextBatchOfObjects(objectListing);
                currentBatchCount = objectListing.getObjectSummaries().size();
            }
            return count;
        }
    }
    

提交回复
热议问题