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

Ответы

Ответ 1

Если вы не можете запускать код на сервере или выполнять запросы, тогда нет, вы не можете этого сделать. Вам придется загрузить файл на сервер или компьютер, который у вас есть, и загрузить оттуда.

Вы можете увидеть операции, которые вы можете выполнить на 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 завершена, напишите ведро/ключ в базу данных.

К сожалению, нет другого способа сделать это.

Ответ 2

Я думаю, что предлагаемое предложение неплохо, вы можете SCP файл в S3 Bucket. Предоставление файла pem будет менее аутентифицированным с помощью пароля, через PHP файл вы можете проверить расширения. Файл PHP может передать файл в качестве аргумента команде SCP.

Единственная проблема с этим решением - вы должны иметь свой экземпляр в AWS. Вы не можете использовать это решение, если ваш сайт размещен в других хостинг-провайдерах, и вы пытаетесь загрузить файлы прямо в ведро S3.

Ответ 3

Технически это возможно, с использованием AWS Signature Version 4, Предполагая, что ваш remote server является клиентом на изображении ниже, вы можете подготовить формы на главном сервере и отправьте поля формы на удаленный сервер, чтобы он был curl. Подробный пример здесь.

Amazon S3 upload using a POST request

Ответ 4

вы можете использовать команду scp из терминала.

1), используя терминал, перейдите к месту, где есть файл, который вы хотите перенести на сервер

2) введите это:

scp -i yourAmazonKeypairPath.pem  fileNameThatYouWantToTransfer.php [email protected]st-2.compute.amazonaws.com:

N.B. Добавьте "ec2-user @" перед своими продуктами ec2blablbla, которые вы получили с сайта Ec2! Это такая придирчивая ошибка!

3) ваш файл будет загружен и будет показан прогресс. Когда это будет 100%, вы закончите!