如何使用Python(Boto库)获取Amazon S3存储桶的大小?

时间:2014-08-13 12:24:21

标签: python-3.x amazon-web-services amazon-s3 amazon boto

我想获得Amazon S3存储分区的大小(字节和#键)。
我正在寻找一种高效方式来获取存储桶的大小。

一种可能的方式( NOT 高效):我可以获取存储桶的密钥列表并总结每个密钥的大小。当我有数千个密钥时,这是低效的,因为我必须查找每个密钥的大小。

是否有高效解决方案?

更新:
以下代码不是我想要的(因为它效率不高):

bucket = conn.get_bucket("bucket_name")
total_size = 0
for key in bucket.list():
   total_size += key.size

2 个答案:

答案 0 :(得分:2)

这似乎没有直接的要求。您可以遍历键并总结。

bucket = conn.get_bucket(self.container)
size = 0
for key in bucket.list():
   size += key.size

仅当存储桶的键数较少且计算频率不高时才应使用此方法。

检查this(非Boto)以获得更有用的选项。

答案 1 :(得分:0)

我发现了一些东西,您可以使用这些代码获取存储桶中的密钥数量:

from boto.s3.connection import S3Connection

conn = S3Connection('<aws access key>', '<aws secret key>')
bucket = conn.get_bucket("bucket_name")
number_of_keys = len(bucket.get_all_keys())})

  

我仍然需要 bucket 的大小(以字节为单位)??