Как получить размер файла / ключа в boto S3?

Должен быть простой способ получить размер файла (размер ключа), не перетягивая весь файл. Я вижу это в свойствах браузера AWS S3. И я думаю, что я могу получить его из заголовка «Content-length» запроса «HEAD». Но я не связываю точки о том, как это сделать с помощью boto. Дополнительный престиж, если вы разместите ссылку на более подробные примеры, чем в стандартных документах boto .

РЕДАКТИРОВАТЬ: Итак, похоже, что это делает трюк (хотя, глядя на исходный код, я не совсем уверен.):

bk = conn.get_bucket('my_bucket_name') ky = boto.s3.key.Key(bk) ky.open_read() ## This sends a GET request. print ky.size 

Пока я оставляю вопрос открытым для комментариев, более эффективных решений или указателей на примеры.

2 Solutions collect form web for “Как получить размер файла / ключа в boto S3?”

Это будет работать:

 bk = conn.get_bucket('my_bucket_name') key = bk.lookup('my_key_name') print key.size 

Метод поиска просто выполняет запрос HEAD в ведре для имени ключа, чтобы он возвращал все заголовки (включая длину содержимого) для ключа, но не передавал никакого фактического содержимого ключа.

Sultus tutoria l упоминает это, но не очень четко, а не в этом точном контексте. Я добавлю раздел об этом, чтобы облегчить его поиск.

Примечание: для каждой старой ссылки, например http://boto.cloudhackers.com/s3_tut.html которая возвращает 404, добавьте "/en/latest" сразу после ".com" : http://boto.cloudhackers.com/en/latest/s3_tut.html . (Кому-то нужно изучить mod_rewrite …)

в boto3 :

s3.head_object также выполняет запрос HEAD для получения метаданных об объекте:

 s3 = boto3.client('s3') response = s3.head_object(Bucket='bucketname', Key='keyname') size = response['ContentLength'] 
  • Обработка ошибок: Boto: Сброс соединения с помощью одноранговой сети
  • Как я могу получить список только папок в amazon S3, используя python boto
  • Обновление до Django 1.7. Ошибка при получении: невозможно выполнить сериализацию: <storages.backends.s3boto.S3BotoStorage object
  • Как перемещать файлы между двумя ведрами Amazon S3 с помощью boto?
  • увеличить объем EC2 EBS после клонирования - resize2fs не работает
  • S3ResponseError: 403 Запрещено использование boto
  • get_bucket () дает «плохой запрос» для кодов S3, которые я не создал через Boto
  • Загрузка файла Boto на S3 в Windows
  • Python - лучший язык программирования в мире.