Как загрузить файлы напрямую в Amazon S3 с удаленного сервера?
Можно ли загрузить файл на S3 с удаленного сервера?
Удаленный сервер в основном является файловым сервером на основе URL. Например, используя http://example.com/1.jpg, он обслуживает изображение. Он больше ничего не делает и не может запустить код на этом сервере.
Возможно иметь другой сервер, говорящий S3, чтобы загрузить файл с http://example.com/1.jpg
upload from http://example.com/1.jpg
server -------------------------------------------> S3 <-----> example.com
4 ответа
Если вы не можете запустить код на сервере или выполнить запросы, то нет, вы не можете этого сделать. Вам нужно будет загрузить файл на свой сервер или компьютер и загрузить его оттуда.
Вы можете увидеть операции, которые вы можете выполнить на amazon S3, на http://docs.amazonwebservices.com/AmazonS3/latest/API/APIRest.html
Проверяя операции для API REST и SOAP, вы увидите, что нет способа дать Amazon S3 удаленный URL-адрес и заставить его захватить объект для вас. Все запросы PUT требуют, чтобы данные объекта были предоставлены как часть запроса. Это означает, что данные должны быть у сервера или компьютера, который инициирует веб-запрос.
В прошлом у меня была похожая проблема, когда я хотел загрузить миниатюры Facebook моих пользователей и загрузить их на S3 для использования на моем сайте. Я сделал это, загрузив изображение из Facebook в память на моем сервере, а затем загрузив его в Amazon S3 - полная загрузка заняла менее 2 секунд. После завершения загрузки на S3 запишите ведро / ключ в базу данных.
К сожалению, нет другого способа сделать это.
Я думаю, что предложенное предложение довольно хорошее, вы можете отправить SCP файл в S3 Bucket. Предоставление файла pem будет аутентификацией без пароля, с помощью PHP-файла вы можете проверить расширения. Файл PHP может передавать файл в качестве аргумента команды SCP.
Единственная проблема, связанная с этим решением, заключается в том, что вы должны иметь свой экземпляр в AWS. Вы не можете использовать это решение, если ваш сайт размещен у других хостинг-провайдеров, и вы пытаетесь загрузить файлы прямо в S3 Bucket.
Технически это возможно, используя AWS Signature Version 4, предполагая, что remote server
Если клиент на изображении ниже, вы можете подготовить форму на главном сервере и отправить поля формы на удаленный сервер, чтобы она curl
Это. Подробный пример здесь.
Вы можете использовать команду scp из терминала.
1) используя терминал, перейдите в то место, где находится тот файл, который вы хотите передать на сервер
2) введите это:
scp -i yourAmazonKeypairPath.pem fileNameThatYouWantToTransfer.php ec2-user@ec2-00-000-000-15.us-west-2.compute.amazonaws.com:
NB Добавьте "ec2-user@" перед вашими материалами ec2blablbla, которые вы получили с сайта Ec2!! Это такая придирчивая ошибка!
3) Ваш файл будет загружен и будет показан прогресс. Когда это 100%, вы сделали!