2016-02-13 97 views
1

我已经搜索在谷歌约高效的方式来获取有关S3桶喜欢它的大小和它的文件数量的元数据获得S3桶大小。我发现this链接讨论这样的问题。但是这是针对PHP和aws cli使用云计算的。我想知道是否有一些java api来获取s3桶元数据?AWS使用的Java API

感谢

回答

0

您可以找到AWS S3 Java库在这里的大量文件:

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/overview-summary.html

回答你的问题,你可以使用的getSize()用于获取物体的大小S3,你可以迭代你的所有文件来获得你的桶的大小。

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" 
} 

AWS的Java SDK的CloudWatch的:

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/cloudwatch/AmazonCloudWatchClient.html

+0

我有百万桶的文件,迭代他们花费太多时间。我希望有一些最快的方法来实现这一目标? – user3313379

+0

hi Istvan!感谢您的回应,但有没有类似的Cloud API的Java API? – user3313379

+0

是的,我在最近的更新中包含了URL。 – Istvan