#node.js #amazon-web-services #amazon-s3 #upload #pre-signed-url
Вопрос:
Я пытаюсь загрузить файл в S3 клиента. Мне дается URL-адрес с подписью председателя, который позволяет мне выполнить PUT
запрос. У меня нет доступа к их доступу и секретному ключу, поэтому об использовании AWS SDK не может быть и речи.
Вариант использования заключается в том, что я использую потоковый вызов сервера gRPC и преобразую его в csv с некоторыми изменениями полей. По мере поступления вызовов я хотел бы иметь возможность передавать преобразованный ответ gRPC в S3. Мне нужно было бы сделать это через потоковую передачу, потому что ответ может быть довольно большим, более 100 МБ, поэтому загрузка всего в память перед загрузкой в S3 не идеальна. Есть какие-нибудь идеи?
Ответ №1:
Это открытая проблема с предварительно подписанным URL-адресом загрузки S3:
https://github.com/aws/aws-sdk-js/issues/1603
В настоящее время единственным рабочим решением для большой загрузки через предварительно подписанный URL-адрес S3 является использование загрузки из нескольких частей. Самый большой недостаток этого подхода заключается в том, что вам необходимо сообщить серверу, который подписывает загрузку, размер вашего файла, так как ему потребуется предварительно подписать каждую часть по отдельности. например: для загрузки файла объемом 100 МБ потребуется 20 частей (максимум 5 МБ каждая), которые должны быть предварительно подписаны индивидуально.
Комментарии:
1. Не удалось столкнуться с этой проблемой при поиске, думаю, мой google-foo нуждается в некоторой доработке. Большое спасибо!