2015-12-10 4 views
1

Несложно выполнить дипломированный загрузку с s3 в файл с помощьюКак выполнить учетную загрузку с s3 с помощью boto3 без сохранения файла?

import boto3 

s3 = boto3.resource('s3') 
def save_file_from_s3(bucket_name, key_name, file_name): 
    b = s3.Bucket(bucket_name) 
    b.download_file(key_name, file_name) 

Легко загрузить с s3 в файл-подобный объект с помощью

import from StringIO import StringIO 
import urllib 

file_like_object = StringIO(urllib.urlopen(url).read()) 

(см How do I read image data from a URL in Python?)

Но как вы выполняете аутентифицированную загрузку с s3 на файл-подобный объект?

ответ

2

Вам просто нужно сделать вызов s3.Bucket.Object.get:

import boto3 

s3 = boto3.resource('s3') 
# obj = s3.Object(bucket_name, key_name).get() 
bucket = s3.Bucket(bucket_name) 
obj = bucket.Object(key_name).get() 
body = obj.get('Body') 
+0

Это возвращает объект словаря. Но то, что я хочу, это объект типа файла, который я могу обработать, например, с подушкой. –

+1

Объект словаря содержит файл-объект под ключевым словом «Тело». Итак, чтобы закончить пример, используйте только f = obj ['Body'] –