我在 google 上搜索了获取有关 S3 存储桶元数据(例如其大小和文件数量)的有效方法。我发现this讨论此类问题的链接。但它适用于使用 cloud-watch 的 PHP 和 aws cli。我想知道是否有一些 java api 来获取 s3 存储桶元数据?
谢谢
最佳答案
您可以在此处找到 AWS S3 Java 库的详细文档:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/overview-summary.html
回答您的问题,您可以使用 getSize() 获取 S3 中对象的大小,并且可以迭代所有文件以获取存储桶的大小。
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 开发工具包:
关于java - AWS 使用 java api 获取 S3 存储桶大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60372759/