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


当前回答

在AWS CLI的命令行中,使用ls加——summary。它将为您提供所有项目的列表以及特定bucket中的文档总数。我还没有尝试过包含子桶的桶:

aws s3 ls "s3://MyBucket" --summarize

这可能会花费一些时间(列出我16+K的文档大约需要4分钟),但这比一次计算1K要快。

其他回答

没有办法,除非你

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

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

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

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

现在S3 API有一个简单的解决方案(在AWS cli中可用):

aws s3api list-objects --bucket BUCKETNAME --output json --query "[length(Contents[])]"

或针对特定文件夹:

aws s3api list-objects --bucket BUCKETNAME --prefix "folder/subfolder/" --output json --query "[length(Contents[])]"

使用AWS CLI

aws s3 ls s3://mybucket/ --recursive | wc -l 

or

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

注意:上面的cloudwatch命令似乎适用于某些人,而不适用于其他人。讨论地点:https://forums.aws.amazon.com/thread.jspa?threadID=217050

使用AWS Web控制台

您可以查看cloudwatch的度量部分,以获得存储的对象的大约数量。

我有大约5000万个产品,使用aws s3 ls花了一个多小时来计数

如果您在Windows上使用AWS CLI,您可以使用PowerShell中的measurement - object来获得文件的总数,就像*nix上的wc -l一样。

PS C:\> aws s3 ls s3://mybucket/ --recursive | Measure-Object

Count    : 25
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

希望能有所帮助。

如果你正在寻找特定的文件,比如.jpg图像,你可以执行以下操作:

aws s3 ls s3://your_bucket | grep jpg | wc -l