我已经在谷歌上搜索了关于有效的方法来获取有关S3桶的元数据,如它的大小和文件数量。我发现this链接讨论这样的问题。但它是用于使用cloud-watch的PHP和aws cli。我想知道是否有一些java api来获取s3存储桶元数据?谢谢
7gcisfzg1#
您可以在此处找到AWS S3 Java库的详细文档:http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/overview-summary.html回答你的问题,你可以使用getSize()来获取S3中对象的大小,你可以迭代所有的文件来获取你的bucket的大小。http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/S3ObjectSummary.html#getSize()S3不支持直接收集磁盘使用情况(这意味着不遍历所有项),但您可以使用CloudWatch来获取您希望通过单个请求使用的数据。示例查询:
aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2016-01-01T10:00:00 --end-time 2016-02-12T01:00:00 --period 86400 --statistics Average --region us-east-1 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=www.streambrightdata.com Name=StorageType,Value=StandardStorage
退货:
{ "Datapoints": [ { "Timestamp": "2016-02-05T10:00:00Z", "Average": 54027423.0, "Unit": "Bytes" }, { "Timestamp": "2016-02-03T10:00:00Z", "Average": 52917504.0, "Unit": "Bytes" }, { "Timestamp": "2016-02-04T10:00:00Z", "Average": 53417421.0, "Unit": "Bytes" }, { "Timestamp": "2016-02-07T10:00:00Z", "Average": 54949563.0, "Unit": "Bytes" }, { "Timestamp": "2016-02-01T10:00:00Z", "Average": 24951965.0, "Unit": "Bytes" }, { "Timestamp": "2016-02-02T10:00:00Z", "Average": 28254636.0, "Unit": "Bytes" }, { "Timestamp": "2016-02-06T10:00:00Z", "Average": 54577328.0, "Unit": "Bytes" } ], "Label": "BucketSizeBytes" }
适用于CloudWatch的AWS Java SDK:http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloudwatch/AmazonCloudWatchClient.html
des4xlb02#
使用awssdk Java2.x
Set<String> fileTypes = new HashSet<>(); ListObjectsResponse listObjResp = amazonS3Client.listObjects(ListObjectsRequest.builder().bucket(bucketName).build()); int iCount=1; //********************************************************************// log.info("listObjResp.isTruncated() : "+listObjResp.isTruncated()); String nextMarker = null; do { String sKey = null; List<S3Object> s3ObjList = listObjResp.contents(); for (S3Object s3Obj: s3ObjList) { sKey = s3Obj.key(); String[] sKeyValues = sKey.split("\\."); if(sKeyValues.length==2) { fileTypes.add(sKeyValues[1]); }else { fileTypes.add(NO_FILE_EXT); } ++iCount; } nextMarker = listObjResp.nextMarker(); log.debug("listObjResp.nextMarker() : "+nextMarker); listObjResp = amazonS3Client.listObjects(ListObjectsRequest.builder().bucket(bucketName).marker(nextMarker).build()); } while (nextMarker !=null); log.info("iCount of '"+bucketName+"': "+(iCount-1));
vtwuwzda3#
您可以使用MinioAdminClient及其getDataUsageInfo()方法来获取所需的所有信息。它可以通过这个link连接,并以与MinioClient相同的方式配置,通过在构建器而不是构造器的帮助下传递参数。
MinioAdminClient
getDataUsageInfo()
MinioClient
@Bean public MinioClient minioClient( @Value("${aws.endPoint}") String endPoint, @Value("${aws.accessKey}") String accessKey, @Value("${aws.secretKey}") String secretKey) throws InvalidPortException, InvalidEndpointException { return new MinioClient(endPoint, accessKey, secretKey); } @Bean public MinioAdminClient minioAdminClient( @Value("${aws.endPoint}") String endPoint, @Value("${aws.accessKey}") String accessKey, @Value("${aws.secretKey}") String secretKey){ return MinioAdminClient .builder() .endpoint(endPoint) .credentials(accessKey, secretKey) .build(); }
链接到GitHub Repo中的文件:https://github.com/minio/minio-java/blob/master/adminapi/src/main/java/io/minio/admin/MinioAdminClient.java#L593
3条答案
按热度按时间7gcisfzg1#
您可以在此处找到AWS S3 Java库的详细文档:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/overview-summary.html
回答你的问题,你可以使用getSize()来获取S3中对象的大小,你可以迭代所有的文件来获取你的bucket的大小。
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/S3ObjectSummary.html#getSize()
S3不支持直接收集磁盘使用情况(这意味着不遍历所有项),但您可以使用CloudWatch来获取您希望通过单个请求使用的数据。
示例查询:
退货:
适用于CloudWatch的AWS Java SDK:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloudwatch/AmazonCloudWatchClient.html
des4xlb02#
使用awssdk Java2.x
vtwuwzda3#
您可以使用
MinioAdminClient
及其getDataUsageInfo()
方法来获取所需的所有信息。它可以通过这个link连接,并以与
MinioClient
相同的方式配置,通过在构建器而不是构造器的帮助下传递参数。链接到GitHub Repo中的文件:https://github.com/minio/minio-java/blob/master/adminapi/src/main/java/io/minio/admin/MinioAdminClient.java#L593