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


当前回答

下面是上面嵌入的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会显示对象的数量和总大小。

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

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

Aws s3 ls s3://bucket-name/folder-prefix-if-any——recursive | wc -l .使用实例

使用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花了一个多小时来计数

在s3cmd中,简单地运行以下命令(在Ubuntu系统上):

s3cmd ls -r s3://mybucket | wc -l