1

Привет, я разрабатываю REST api для мобильного приложения, в котором пользователь загружает изображения на сервер приложений, а затем сервер загружает изображения на amazon s3 и обновляет базу данных.nodejs Передача загруженного файла непосредственно на S3 без двойного ожидания

Проблема:

1.User wants to upload 10MB file It takes 10 seconds to travel from user's device to my server 
2.After server has received last bit, it starts uploading to S3. Another 10 seconds. 
3.After 20 seconds in total, user is presented with hyperlink. 

Я думаю, что эти 20 секунд может быть уменьшена в два раза, до 12 или около того. Если Nodejs были достаточно умны, чтобы начать загрузку на S3 не после того, как последний бит пришел, но после того, как первый бит поступит от пользователя, не ждите, пока весь файл будет загружен, но начните потоковое вещание «на лету».

Возможно ли это?

ответ

2

Вы должны отправить предварительно подписанные URL-адреса S3 пользователям, чтобы пользователи могли напрямую загружать их на S3, а не через ваш сервер узлов вообще.

Смотрите здесь: http://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

+0

благодаря @ at0mzk u сохранен мой день –

0

Я не знаю, почему вы должны загрузить файл в первую EC2, а затем S3, когда ваш API может загрузить файл непосредственно в S3 вместо этого.

Кроме того, node.js достаточно умен, чтобы вы могли начать обработку ваших данных по прибытии (см., Например, on('file') событие в busboy).

В S3 вы можете использовать managed uploader для загрузки потоков неизвестного размера с помощью настраиваемого количества параллелизма для выполнения многостраничных загрузок, где это возможно.

Управляемый загрузчик позволяет легко и эффективна загрузке буферов, капли, или потоков, используя конфигурируемое количество параллелизма для выполнения многоэкземплярных загрузки, где это возможно. Эта абстракция также позволяет загружать потоки неизвестного размера из-за использования многостраничных загрузок .