2015-12-10 1 views
1

Il est simple à effectuer un téléchargement credentialed de s3 à un fichier en utilisantComment effectuer un téléchargement authentifié à partir de s3 en utilisant boto3 sans enregistrer un fichier?

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) 

Il est facile de télécharger de s3 à un objet de type fichier en utilisant

import from StringIO import StringIO 
import urllib 

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

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

Mais comment effectuer un téléchargement accrédité de s3 vers un objet de type fichier?

Répondre

2

Vous avez juste besoin de faire un appel à 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

Ce dictionnaire retourne un objet. Mais ce que je veux, c'est un objet de type fichier que je peux ensuite traiter, par exemple avec Pillow. –

+1

L'objet dictionnaire contient l'objet fichier sous le mot clé "Corps". Donc, pour compléter l'exemple, utilisez simplement f = obj ['Body'] –