Je souhaite manipuler un objet python mariné stocké dans S3 dans le sandbox de Google App Engine. J'utilise la suggestion documentation de Boto:Est-il possible de lire un fichier de S3 dans Google App Engine en utilisant boto?
from boto.s3.connection import S3Connection
from boto.s3.key import Key
conn = S3Connection(config.key, config.secret_key)
bucket = conn.get_bucket('bucketname')
key = bucket.get_key("picture.jpg")
fp = open ("picture.jpg", "w")
key.get_file (fp)
mais cela me oblige à écrire dans un fichier, qui est apparemment pas casher dans le bac à sable GAE.
Comment puis-je contourner le problème? Merci beaucoup pour toute aide
merci Nick. Cela fonctionne, et sans avoir à importer le module StringIO. Je pense que pour des raisons évidentes cela en fait une meilleure solution. Pour ceux qui suivent à la maison, j'ai changé le pickle.load (contenu) à pickle.loads (contenu) pour travailler avec unpickling un objet semblable à une chaîne, plutôt que semblable à un fichier. – rd108
Je suggère également d'utiliser validate = False pour l'appel get_bucket - c'est-à-dire bucket = conn.get_bucket (bucket_name, validate = False) car boto tente d'accéder au compartiment, et échouera s'il n'y a pas accès. Pour plus d'informations, voir: http://stackoverflow.com/questions/12571217/python-amazon-s3-cannot-get-the-bucket-says-403-forbidden –
En outre, les clés boto ont un appel .open() que vous peut utiliser. – meawoppl