Как загрузить файлы напрямую в 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 Это. Подробный пример здесь.

Загрузка Amazon S3 с использованием запроса POST

Вы можете использовать команду 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%, вы сделали!

Другие вопросы по тегам