我有一个 S3 存储桶,里面有很多顶级前缀。我有一种相对低效的方法来汇总顶级前缀中的字节数:
- 通过获取前缀列表
aws s3 ls [bucket name]
,然后使用一些 sed/grep。 - 对这些前缀执行 bash for 循环,运行
aws s3api list-objects --bucket [bucket name] --prefix $prefix --output json --query [sum(Contents[].Size)]
。
我觉得这不是最理想的,因为所有常见的原因都表明 for 循环不是最理想的。首先,我希望它在 AWS 端自动并行化。
我觉得 JMESPath 中一定有一种方法,本质上就是返回所有顶级前缀的 (Prefix, Sum(Size)) 对列表。但我不知道该如何实现。添加--delimiter '/'
只会返回 CommonPrefixes;它不会返回任何其他信息(包括大小),所以我无法使用它来获得我想要的总和。
我是不是漏掉了什么技巧?还是 for 循环是我最好的选择?