Потоковая загрузка в S3 с использованием URL-адреса, подписанного председателем

#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 нуждается в некоторой доработке. Большое спасибо!