除非我遗漏了什么,否则我所看过的所有api似乎都不会告诉您<S3 bucket>/<文件夹>中有多少对象。有办法统计一下吗?


当前回答

您可以只执行这个cli命令来获取桶或特定文件夹中的总文件计数

扫描整个桶

aws s3api list-objects-v2 --bucket testbucket | grep "Key" | wc -l
aws s3api list-objects-v2 --bucket BUCKET_NAME | grep "Key" | wc -l

可以使用该命令获取详细信息

aws s3api list-objects-v2 --bucket BUCKET_NAME

扫描特定文件夹

aws s3api list-objects-v2 --bucket testbucket --prefix testfolder --start-after testfolder/ | grep "Key" | wc -l

aws s3api list-objects-v2 --bucket BUCKET_NAME --prefix FOLDER_NAME --start-after FOLDER_NAME/ | grep "Key" | wc -l

其他回答

下面是上面嵌入的python脚本的boto3版本。

import sys
import boto3

s3 = boto3.resource("s3")
s3bucket = s3.Bucket(sys.argv[1])
size = 0
totalCount = 0

for key in s3bucket.objects.all():
    totalCount += 1
    size += key.size

print("total size:")
print("%.3f GB" % (size * 1.0 / 1024 / 1024 / 1024))
print("total count:")
print(totalCount)

没有办法,除非你

以1000个为一组列出它们(这可能很慢,而且占用带宽——amazon似乎从不压缩XML响应),或者 在S3上登录您的帐户,然后进入帐户-使用。似乎账单部门确切地知道你存储了多少对象!

如果您存储了5000万个对象,那么仅仅下载所有对象的列表实际上就需要花费一些时间和金钱。

也可以看到这个关于StorageObjectCount的线程——它在使用数据中。

一个S3 API至少能获得基础知识,即使它是几个小时以前的,也会很棒。

s3浏览器可从http://s3browser.com/下载并安装。当你选择一个桶在中央的右角,你可以看到桶中的文件数量。但是,在当前版本中显示的大小是不正确的。

Gubs

截至2020年11月18日,现在有一种更简单的方法来获取这些信息,而无需对API请求征税:

AWS S3存储镜头

默认的,内置的,免费的仪表板允许您查看所有桶的计数,或在“buckets”选项卡下的单个桶。有许多下拉列表可以过滤和排序几乎任何你想要寻找的合理指标。

转到AWS计费,然后是报表,然后是AWS使用情况报表。 选择Amazon Simple Storage Service,然后选择Operation StandardStorage。 然后,您可以下载一个CSV文件,该文件包含StorageObjectCount的UsageType,该文件列出每个桶的项目计数。