fie*_*lds 127 file count amazon-s3 amazon-web-services
除非我遗漏了某些内容,否则我看到的所有API都不会告诉您S3存储桶/文件夹(前缀)中有多少对象.有没有办法计算?
May*_*wal 218
aws s3 ls s3://mybucket/ --recursive | wc -l
Run Code Online (Sandbox Code Playgroud)
要么
aws cloudwatch get-metric-statistics \
--namespace AWS/S3 --metric-name NumberOfObjects \
--dimensions Name=BucketName,Value=BUCKETNAME \
Name=StorageType,Value=AllStorageTypes \
--start-time 2016-11-05T00:00 --end-time 2016-11-05T00:10 \
--period 60 --statistic Average
Run Code Online (Sandbox Code Playgroud)
注意:上面的cloudwatch命令似乎适用于某些人而不适用于其他人.在这里讨论:https://forums.aws.amazon.com/thread.jspa? threadID = 217050
您可以查看cloudwatch的度量标准部分以获取大约存储的对象数.

我有大约5000万件产品,用了一个多小时就算了 aws s3 ls
adv*_*ncd 132
有一个--summarize开关包括桶摘要信息(即对象数,总大小).
以下是使用AWS cli的正确答案:
aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"
Total Objects: 194273
Run Code Online (Sandbox Code Playgroud)
请参阅文档
gva*_*uez 52
虽然这是一个老问题,并且2015年提供了反馈,但现在它更加简单,因为S3 Web Console启用了"获取大小"选项:
其中提供以下内容:
小智 49
如果使用s3cmd命令行工具,则可以获取特定存储桶的递归列表,并将其输出到文本文件.
s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt
Run Code Online (Sandbox Code Playgroud)
然后在linux中你可以在文件上运行一个wc -l来计算行数(每个对象1行).
wc -l listing.txt
Run Code Online (Sandbox Code Playgroud)
Rap*_*ael 43
现在有一个简单的S3 API解决方案(可在AWS cli中使用):
aws s3api list-objects --bucket BUCKETNAME --output json --query "[length(Contents[])]"
Run Code Online (Sandbox Code Playgroud)
或者对于特定文件夹:
aws s3api list-objects --bucket BUCKETNAME --prefix "folder/subfolder/" --output json --query "[length(Contents[])]"
Run Code Online (Sandbox Code Playgroud)
Tom*_*sen 33
除非你,否则没办法
将它们全部列在1000个批次中(这可能是缓慢而且带宽太大 - 亚马逊似乎永远不会压缩XML响应),或者
在S3上登录您的帐户,然后转到帐户 - 使用情况.看来,结算部门确切地知道您存储了多少对象!
如果您存储了5000万个对象,只需下载所有对象的列表实际上会花费一些时间并花费一些钱.
另请参阅有关StorageObjectCount的此主题 - 它位于使用数据中.
一个S3 API至少可以获得基础知识,即使它只是几个小时,也会很棒.
使用 AWS Cloudwatch 的指标
或者:
aws s3api list-objects --bucket <BUCKET_NAME> --prefix "<FOLDER_NAME>" | wc -l
Run Code Online (Sandbox Code Playgroud)
或者:
aws s3 ls s3://<BUCKET_NAME>/<FOLDER_NAME>/ --recursive --summarize --human-readable | grep "Total Objects"
Run Code Online (Sandbox Code Playgroud)
或使用s4cmd:
s4cmd ls -r s3://<BUCKET_NAME>/<FOLDER_NAME>/ | wc -l
Run Code Online (Sandbox Code Playgroud)
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"}'
Run Code Online (Sandbox Code Playgroud)
或者:
aws s3 ls s3://<BUCKET_NAME>/<FOLDER_NAME>/ --recursive --summarize --human-readable | grep "Total Size"
Run Code Online (Sandbox Code Playgroud)
或使用s4cmd:
s4cmd du s3://<BUCKET_NAME>
Run Code Online (Sandbox Code Playgroud)
或使用 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"
Run Code Online (Sandbox Code Playgroud)
小智 7
从 AWS CLI 的命令行中,使用ls plus --summarize. 它将为您提供所有项目的列表以及特定存储桶中的文档总数。我还没有尝试过使用包含子存储桶的存储桶:
aws s3 ls "s3://MyBucket" --summarize
Run Code Online (Sandbox Code Playgroud)
它花费的时间有点长(列出我的 16+K 文档大约需要 4 分钟),但它比一次数 1K 快。

如果您在 Windows 上使用 AWS CLI,则可以使用Measure-ObjectPowerShell 获取文件总数,就像wc -l在 *nix 上一样。
PS C:\> aws s3 ls s3://mybucket/ --recursive | Measure-Object
Count : 25
Average :
Sum :
Maximum :
Minimum :
Property :
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。
小智 5
转到AWS Billing,然后报告,然后转到AWS Usage报告.选择Amazon Simple Storage Service,然后选择Operation StandardStorage.然后,您可以下载包含UsageTypeCount的UsageType的CSV文件,该文件列出了每个存储桶的项目计数.
计算 s3 中对象数量的最简单方法之一是:
第 1 步:选择根文件夹
第2步:点击“操作”->“删除”(显然,要小心——不要删除它)
步骤 3:等待几分钟 aws 将显示对象的数量及其总大小。
自 2020 年 11 月 18 日起,现在有一种更简单的方法可以获取此信息,而无需对 API 请求造成负担:
默认的内置免费仪表板允许您查看所有存储桶或“存储桶”选项卡下单个存储桶的计数。有许多下拉菜单可以过滤和排序您想要寻找的几乎任何合理的指标。