Quiero manipular un objeto python en escabeche almacenado en S3 en el sandbox de Google App Engine. Yo uso la sugerencia en el boto de documentation:¿Es posible leer un archivo de S3 en 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)
pero esto me obliga a escribir en un archivo, que al parecer no es kosher en la caja de arena GAE.
¿Cómo puedo evitar esto? Gracias mucho por cualquier ayuda
gracias Nick. Esto funciona, y sin tener que importar el módulo StringIO. Creo que por razones obvias eso lo convierte en una mejor solución. Para cualquier persona que me siga en casa, cambié el pickle.load (contenido) a pickle.loads (contenido) para trabajar con el deshecho de un objeto tipo cadena, en lugar de un archivo. – rd108
También sugiero usar validate = False a la llamada get_bucket - es decir, bucket = conn.get_bucket (bucket_name, validate = False) ya que boto intenta acceder al depósito, y fallará si no tiene acceso para hacerlo. para obtener más información, consulte: http://stackoverflow.com/questions/12571217/python-amazon-s3-cannot-get-the-bucket-says-403-forbidden –
Además, las teclas boto tienen una llamada .open() que usted puedo usar. – meawoppl