2016-01-25 3 views
1

Я использую Boto в Python для загрузки файла из своего ведра S3.S3Transfer download_file ошибки, но client.download_file отлично работает

Это прекрасно работает:

import boto3 
s3_client = boto3.resource('s3') 
s3_client.meta.client.download_file('mybucket', 'db/file.00.txt', '/work/testing/file.00.txt') 

Я хотел бы использовать S3Transfer автоматически использовать многочастный, как я буду работать с некоторыми довольно массивными файлами (900 МБ +).

Однако, когда я пытаюсь следующее, он не:

import boto3 
from boto3.s3.transfer import S3Transfer 
s3_client = boto3.resource('s3') 
transfer = S3Transfer(s3_client) 
transfer.download_file('mybucket', 'db/file.00.txt', '/work/testing/file.00.txt') 

Я получаю ошибку следующим образом:

Traceback (most recent call last): 
    File "/work/sparkrun/CommonBlast.py", line 126, in <module> 
    transfer.download_file('mybucket', 'db/file.00.txt', '/work/testing/file.00.txt') 
    File "/usr/local/lib/python2.7/dist-packages/boto3/s3/transfer.py", line 658, in download_file 
    object_size = self._object_size(bucket, key, extra_args) 
    File "/usr/local/lib/python2.7/dist-packages/boto3/s3/transfer.py", line 723, in _object_size 
    return self._client.head_object(
AttributeError: 's3.ServiceResource' object has no attribute 'head_object' 

Параметры для метода download_file идентичны. Я использую последнюю версию boto (1.2.3). Что происходит?

ответ

4

Вы передаете ресурс, когда S3Transfer ожидает клиента.

В любом случае вам также не понадобится создавать свой собственный объект S3Transfer, так как его методы уже добавлены как к клиенту, так и к ресурсу.

import boto3 
client = boto3.client('s3') 
client.download_file('bucket', 'key', 'filename.txt') 

resource = boto3.resource('s3') 
bucket = resource.Bucket('bucket') 
bucket.download_file('key', 'filename.txt') 

obj = bucket.Object('key') 
obj.download_file('filename.txt') 

docs

+0

Ах, это было бы почему. Отлично работает сейчас, спасибо. Думаю, это научит меня уделять более пристальное внимание. –

 Смежные вопросы

  • Нет связанных вопросов^_^