Subir imagen disponible en la URL pública a S3 usando boto

Estoy trabajando en un entorno web de Python y simplemente puedo cargar un archivo del sistema de archivos a S3 usando key.set_contents_from_filename de boto's (ruta / a / archivo). Sin embargo, me gustaría subir una imagen que ya está en la web (por ejemplo,https://pbs.twimg.com/media/A9h_htACIAAaCf6.jpg:large).

¿Debería descargar de alguna manera la imagen al sistema de archivos y luego subirla a S3 usando boto como siempre, luego eliminar la imagen?

Lo que sería ideal es si hubiera una manera de obtener el archivo key.set_contents_from_file de boto o algún otro comando que acepte una URL y transmita la imagen a S3 sin tener que descargar explícitamente una copia de archivo a mi servidor.

def upload(url):
    try:
        conn = boto.connect_s3(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
        bucket_name = settings.AWS_STORAGE_BUCKET_NAME
        bucket = conn.get_bucket(bucket_name)
        k = Key(bucket)
        k.key = "test"
        k.set_contents_from_file(url)
        k.make_public()
                return "Success?"
    except Exception, e:
            return e

Al usar set_contents_from_file, como se indicó anteriormente, obtengo un error "el objeto de cadena no tiene ningún atributo 'tell'". Al usar set_contents_from_filename con la url, obtengo un error No de archivo o directorio. losdocumentación de almacenamiento de boto deja de cargar archivos locales y no menciona cargar archivos almacenados de forma remota.

Respuestas a la pregunta(8)

Su respuesta a la pregunta