Я работаю в веб-среде Python, и я могу просто загрузить файл из файловой системы в S3, используя boto key.set_contents_from_filename (путь/в/файл). Однако я хотел бы загрузить изображение, которое уже есть в Интернете (скажем https://pbs.twimg.com/media/A9h_htACIAAaCf6.jpg:large).
Должен ли я каким-то образом загрузить изображение в файловую систему, а затем загрузить его на S3 с помощью boto, как обычно, а затем удалить изображение?
Что было бы идеальным, если есть способ получить файл boto key.set_contents_from_file или какую-либо другую команду, которая будет принимать URL-адрес и красиво передавать изображение на S3 без явной загрузки копии файла на мой сервер.
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
Используя set_contents_from_file, как указано выше, я получаю "строковый объект, не имеющий атрибута" сообщить ". Используя set_contents_from_filename с URL-адресом, я получаю сообщение об ошибке" Нет такого файла или каталога ". документация по хранению boto уходит при загрузке локальных файлов и не упоминает загрузку файлов, хранящихся удаленно.