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


当前回答

也可以用gsutil du(是的,一个谷歌云工具)

gsutil du s3://mybucket/ | wc -l

其他回答

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

AWS S3存储镜头

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

api将以1000为增量返回列表。检查IsTruncated属性,看看是否还有更多。如果有,您需要进行另一次调用,并在下次调用时传递您获得的最后一个键作为Marker属性。然后继续这样循环,直到IsTruncated为false。

有关更多信息,请参阅亚马逊文档:遍历多页结果

没有一个API会给你一个计数,因为真的没有任何亚马逊特定的API来做这件事。您只需运行一个list-contents并计算返回的结果的数量。

下面是上面嵌入的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)

计算s3中对象数量的一个最简单的方法是:

步骤1:选择根文件夹

步骤2:点击Actions ->删除(显然,要小心-不要删除它)

第三步:等待几分钟,aws会显示对象的数量和总大小。