How do I get the file / key size in boto S3?
This would work:
bk = conn.get_bucket('my_bucket_name')
key = bk.lookup('my_key_name')
print key.size
The lookup method simply does a HEAD request on the bucket for the keyname so it will return all of the headers (including content-length) for the key but will not transfer any of the actual content of the key.
The S3 tutorial mentions this but not very explicitly and not in this exact context. I'll add a section on this to help make it easier to find.
Note: for every old link like http://boto.cloudhackers.com/s3_tut.html
that returns a 404, add in "/en/latest"
right after the ".com"
: http://boto.cloudhackers.com/en/latest/s3_tut.html
. (Someone needs to explore mod_rewrite...)
in boto3:
s3.head_object
also performs a HEAD request to retrieve the meta data about the object:
s3 = boto3.client('s3')
response = s3.head_object(Bucket='bucketname', Key='keyname')
size = response['ContentLength']
in boto3
using an S3 resource:
boto3.resource('s3').Bucket(bucketname).Object(keyname).content_length
The head_object
call of the S3 client returned me an http "403 Forbidden"