除非我遗漏了什么,否则我所看过的所有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
其他回答
选择桶/文件夹->单击动作->单击计算总大小
旧线程,但仍然相关,因为我正在寻找答案,直到我明白了这一点。我想使用基于gui的工具(即没有代码)进行文件计数。我碰巧已经使用了一个名为3Hub的工具,用于在S3之间进行拖放传输。我想知道我在一个特定的存储区中有多少文件(我不认为计费是按存储区划分的)。
So, using 3Hub,
- list the contents of the bucket (looks basically like a finder or explorer window)
- go to the bottom of the list, click 'show all'
- select all (ctrl+a)
- choose copy URLs from right-click menu
- paste the list into a text file (I use TextWrangler for Mac)
- look at the line count
我在桶中有20521个文件,并且在不到一分钟的时间内完成了文件计数。
2020/10/22
使用AWS控制台
查看bucket上的Metrics标签
or:
看看AWS Cloudwatch的指标
使用AWS CLI
对象数量:
or:
aws s3api list-objects --bucket <BUCKET_NAME> --prefix "<FOLDER_NAME>" | wc -l
or:
aws s3 ls s3://<BUCKET_NAME>/<FOLDER_NAME>/ --recursive --summarize --human-readable | grep "Total Objects"
或者用s4cmd:
s4cmd ls -r s3://<BUCKET_NAME>/<FOLDER_NAME>/ | wc -l
对象大小:
aws s3api list-objects --bucket <BUCKET_NAME> --output json --query "[sum(Contents[].Size), length(Contents[])]" | awk 'NR!=2 {print $0;next} NR==2 {print $0/1024/1024/1024" GB"}'
or:
aws s3 ls s3://<BUCKET_NAME>/<FOLDER_NAME>/ --recursive --summarize --human-readable | grep "Total Size"
或者用s4cmd:
s4cmd du s3://<BUCKET_NAME>
或与CloudWatch指标:
aws cloudwatch get-metric-statistics --metric-name BucketSizeBytes --namespace AWS/S3 --start-time 2020-10-20T16:00:00Z --end-time 2020-10-22T17:00:00Z --period 3600 --statistics Average --unit Bytes --dimensions Name=BucketName,Value=<BUCKET_NAME> Name=StorageType,Value=StandardStorage --output json | grep "Average"
没有一个API会给你一个计数,因为真的没有任何亚马逊特定的API来做这件事。您只需运行一个list-contents并计算返回的结果的数量。
2021的答案
该信息现在显示在AWS仪表板中。只需导航到桶并单击Metrics选项卡。
推荐文章
- 如何查看所有地区所有正在运行的Amazon EC2实例?
- 确定记录是否存在的最快方法
- 如何在Python中获得所有直接子目录
- 如何从命令行使用多个AWS帐户?
- 即使模板文件存在,Flask也会引发TemplateNotFound错误
- 如何在Ruby中创建文件
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- __FILE__宏显示完整路径
- 如何搜索亚马逊s3桶?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 拒绝访问;您需要(至少一个)SUPER特权来执行此操作
- 我如何使用通配符“cp”一组文件与AWS CLI
- 如何删除文件中的特定行?
- 使用Java重命名文件
- 如何从Python包内读取(静态)文件?