【问题标题】:How can I get the size of an Amazon S3 bucket using Python (Boto lib)?如何使用 Python (Boto lib) 获取 Amazon S3 存储桶的大小?
【发布时间】:2014-08-13 12:24:21
【问题描述】:

我想获取 Amazon S3 存储桶的大小(以字节和键数为单位)。
我正在寻找一种有效方法来获取存储桶的大小。

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

有没有高效的解决方案??

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

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

【问题讨论】:

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


    【解决方案1】:

    似乎没有直接要求这样做。您可以遍历键并进行总结。

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

    只有当bucket的key数量较少且计算不经常执行时才应使用此选项。

    查看this(不是 Boto)以获得更有用的选项。

    【讨论】:

    • 我已经尝试过这个解决方案。它效率不高。我正在寻找一个有效的解决方案。无论如何,谢谢。
    • 不幸的是,没有其他方法可以做到这一点。 S3 API 只是没有提供执行此操作的机制。
    【解决方案2】:

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

    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 的大小(以字节为单位)??


    【讨论】:

    • get_all_keys (与名称所暗示的相反)一次最多只能返回 1000 个键,因此如果您的键数多于存储桶中的键数,则会出现问题。
    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2018-09-14
    • 2011-01-29
    相关资源
    最近更新 更多