【发布时间】:2017-01-20 09:25:59
【问题描述】:
使用下面的 boto3 库和 python 代码,我可以遍历 S3 存储桶和前缀,打印出前缀名称和键名称,如下所示:
import boto3
client = boto3.client('s3')
pfx_paginator = client.get_paginator('list_objects_v2')
pfx_iterator = pfx_paginator.paginate(Bucket='app_folders', Delimiter='/')
for prefix in pfx_iterator.search('CommonPrefixes'):
print(prefix['Prefix'])
key_paginator = client.get_paginator('list_objects_v2')
key_iterator = key_paginator.paginate(Bucket='app_folders', Prefix=prefix['Prefix'])
for key in key_iterator.search('Contents'):
print(key['Key'])
在密钥循环中,我可以放入一个计数器来计算密钥(文件)的数量,但这是一项昂贵的操作。有没有办法在给定存储桶名称和前缀的情况下进行一次调用并返回该前缀中包含的键的计数(即使它超过 1000 个)?
更新:我发现了一个帖子 here,它显示了一种使用 AWS CLI 执行此操作的方法,如下所示:
aws s3api list-objects --bucket BUCKETNAME --prefix "folder/subfolder/" --output json --query "[length(Contents[])]"
有没有办法用 boto3 API 做类似的事情?
【问题讨论】:
-
aws s3api只是为你分页。
标签: python python-2.7 amazon-web-services amazon-s3 boto3