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/60372759/

相关文章:

amazon-web-services - 上传到 S3 存储桶,导致 ECS 实例拒绝访问

java - Java 中的同步块(synchronized block)是如何实现的?

java - 备份 Java?

c# - "static reflection"在 Java 中如何工作? (例如在 mockito 或 easymock 中)

java - 最后捕获或返回实例或空引用

node.js - 无服务器部署 : Recoverable error occurred (write ECONNRESET), 休眠约 5 秒。尝试 4 个中的 1 个

java - 使用 DataFrameReader 从 S3 读取文件

javascript - 无法弄清楚为什么 ScriptEngine 引擎在代码中为空

amazon-s3 - 何时创建 S3 存储桶

javascript - Node.js 进程在中间退出,没有错误(使用流)