Voglio manipolare un oggetto python decapitato memorizzato in S3 nella sandbox di Google App Engine. Io uso il suggerimento boto di documentation:È possibile leggere un file da S3 in Google App Engine usando 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)
ma questo mi obbliga a scrivere in un file, che a quanto pare non è kosher nella sandbox GAE.
Come posso aggirare questo? Grazie molto per qualsiasi aiuto
grazie Nick. Funziona, e senza dover importare il modulo StringIO. Penso per ovvi motivi che lo rende una soluzione migliore. Per chi segue a casa, ho cambiato il pickle.load (contenuto) in pickle.loads (contenuto) per lavorare con l'annullamento di un oggetto simile a una stringa piuttosto che di un file. – rd108
Suggerisco anche di usare validate = False alla chiamata get_bucket - cioè bucket = conn.get_bucket (bucket_name, validate = False) come boto tenta di accedere al bucket e fallirà se non ha accesso a farlo. per ulteriori informazioni consultare: http://stackoverflow.com/questions/12571217/python-amazon-s3-cannot-get-the-bucket-says-403-forbidden –
Inoltre, i tasti boto hanno una chiamata .open() poter usare. – meawoppl