Я использую плагин node.js под названием s3-upload-stream, чтобы передать очень большие файлы Amazon S3. Он использует многопроцессорный API и по большей части работает очень хорошо.Pipe the stream to s3.upload()
Однако этот модуль показывает свой возраст, и я уже должен был внести в него изменения (автор тоже не рекомендовал его). Сегодня я столкнулся с другим вопросом с Amazon, и мне бы очень хотелось взять рекомендацию автора и начать использовать официальный aws-sdk для выполнения моих загрузок.
НО.
Официальный SDK, похоже, не поддерживает трубопроводы до s3.upload()
. Характер s3.upload состоит в том, что вы должны передать читаемый поток в качестве аргумента в конструктор S3.
У меня есть примерно 120 модулей кода пользователя, которые выполняют различные обработки файлов, и они не зависят от конечного пункта назначения их вывода. Двигатель передает им доступный для записи выходной поток, и они подключаются к нему. Я не могу передать им объект AWS.S3
и попросить их называть его upload()
без добавления кода ко всем модулям. Причина, по которой я использовал s3-upload-stream
, состояла в том, что она поддерживала трубопроводы.
Есть ли способ сделать aws-sdk s3.upload()
что-то, что я могу передать потоку?
Великими, это решить мою очень уродливый хак = -) Может вы объясните, что делает stream.PassThrough() на самом деле? – mraxus
Ваш поток PassThrough закрывается, когда вы это делаете? У меня есть чертовски время, пропедевщее закрытие в s3.upload, чтобы попасть в мой поток PassThrough. – cr125rider
Это работает, спасибо! – thewoolleyman