问题
I have searched on google about efficient way to get metadata about S3 bucket like its size and number of files in it. I found this link discussing such problem. But it's for PHP and aws cli using cloud-watch. I want to know is there some java api to fetch the s3 bucket metadata?
Thanks
回答1:
You can find the extensive documentation of the AWS S3 Java library here:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/overview-summary.html
Answering your question, you can use getSize() for getting the size of an object in S3 and you can iterate over all of your files to get the size of your bucket.
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/S3ObjectSummary.html#getSize()
S3 does not support gathering disk usage directly (meaning not iterating through all of the items) but you can use CloudWatch to get the data you would like to use with a single request.
Example query:
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
Returns:
{
"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"
}
AWS Java SDK for CloudWatch:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloudwatch/AmazonCloudWatchClient.html
来源:https://stackoverflow.com/questions/35378200/aws-get-s3-bucket-size-using-java-api