如何从 Java 代码执行以下命令来获取 S3 存储桶大小
aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
Java 的 ProcessBuilder 类可以非常轻松地从 Java 调用 AWS CLI :
ProcessBuilder pb = new ProcessBuilder( yourCliCommandWithArgs );
Process process = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
... then consume the CLI output as input.
我将使用 AWS Java SDK,列出一个路径的对象的等效项是
ListVersionsRequest listVersionsRequest = new ListVersionsRequest()
.withBucketName( yourBucketName )
.withDelimiter( pathDelimiter ).withPrefix( "your/path/" );
您可能会更好地使用 Cloudwatch API,它通过 CLI 和 SDK BucketSizeBytes 提供总存储桶大小。 http://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html
我使用 AWS Marketplace 中的 http://www.insight4storage.com/ 来按前缀、存储桶或存储类别跟踪我的 AWS S3 存储使用趋势。它比 CLI 或 SDK 更容易。