python: carga de un gráfico desde la memoria a s3 usando matplotlib y boto

Este es mi script de trabajo que genera un gráfico, lo guarda localmente en el disco, lo carga en S3 y elimina el archivo:

plt.figure(figsize=(6,6)) plt.plot(x, y, 'bo') plt.savefig('file_location') conn = boto.s3.connect_to_region( region_name=AWS_REGION, aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, calling_format=boto.s3.connection.OrdinaryCallingFormat() ) bucket = conn.get_bucket('bucket_name') k = Key(bucket) k.key = 'file_name' k.set_contents_from_filename('file_location') os.remove(file_location) 

Lo que quiero es omitir la escritura del disco y cargar la ttwig directamente desde la memoria.

¿Alguna sugerencia de cómo lograrlo?

Poniendolo todo junto:

 img_data = io.BytesIO() plt.savefig(img_data, format='png') img_data.seek(0) s3 = boto3.resource('s3') bucket = s3.Bucket(BUCKET_NAME) bucket.put_object(Body=img_data, ContentType='image/png', Key=KEY) 

Gracias a @ padraic-cunningham y @ guyb7 por los consejos!