Python Can';用Boto3不能得到一个桶的总尺寸
我想知道一个桶的大小。但是,total_size返回0。当然,桶中有几个文件。如果我的bucket中有五个文件,那么下面的函数将打印五个零。我做错了什么Python Can';用Boto3不能得到一个桶的总尺寸,python,amazon-web-services,amazon-s3,boto,boto3,Python,Amazon Web Services,Amazon S3,Boto,Boto3,我想知道一个桶的大小。但是,total_size返回0。当然,桶中有几个文件。如果我的bucket中有五个文件,那么下面的函数将打印五个零。我做错了什么 bucket = boto3.resource('s3', config=Config(signature_version="s3", s3={'addressing_style': 'path'})).Bucket(name) for object in bucket.objects.all(): total_size += obje
bucket = boto3.resource('s3', config=Config(signature_version="s3", s3={'addressing_style': 'path'})).Bucket(name)
for object in bucket.objects.all():
total_size += object.size
print(object.size)
我看到几个问题:
- 不确定您对
的调用。对吗boto3.resource()
未初始化总大小
total_size = 0
bucket = boto3.resource('s3').Bucket('mybucket')
for object in bucket.objects.all():
total_size += object.size
print(object.size)
print(total_size)
或一行:
sum([object.size for object in boto3.resource('s3').Bucket('mybucket').objects.all()])
将签名更改为签名
我也喜欢赫洛夫的回答
还可以指定存储桶的区域,而不是依赖默认配置。更简单的方法是每天转储对象列表,然后根据该列表计算总数。我使用的是:
s3client = boto3.client('s3', region_name=region,
aws_access_key_id=access_key,
aws_secret_access_key=secret_key)
response = s3client.list_objects(Bucket=bucket_name)['Contents']
bucket_size = sum(obj['Size'] for obj in response)
但是你是怎么用boto3的呢?