java - AWS 使用 java api 获取 S3 存储桶大小

标签 java amazon-s3

我在 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 中对象的大小,并且可以迭代所有文件以获取存储桶的大小。

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 开发工具包:

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

关于java - AWS 使用 java api 获取 S3 存储桶大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35378200/

相关文章:

ruby-on-rails - NameError(未初始化的常量 Aws::VERSION):

actionscript-3 - 使用预签名 url 从 AS3 上传到 S3

java - spring中注入(inject)抽象类的问题

java - 如何修复 'handleWindowVisibility: no activity for token android.os.BinderProxy' ?

image - 使用 AWS Amplify 从 React Native 上传到 S3

angular - 是否可以将 amazon cognito 与 Kinesis 数据流一起使用,充当生产者(生产者是 Angular 应用程序)?

javascript - 函数不会等到其他函数执行完毕

java - 如何使用 Mockito 比较 Junit 测试用例中的多个条件

java - EclEmma 代码覆盖忽略 Junit 测试

java - Play 2.1-快照: Ebean database updates and deletions don't work in Junit test cases