Вы говорите: «Сбор подписанного URL для каждого файла кажется очень неэффективным», но сам процесс создания подписанного URL очень прост - всего несколько строк кода.
Однако, если файлов много, пользователям придется загружать каждый файл по отдельности.
Таким образом, другой подход может быть:
- Укажите все файлы, которые они хотят загрузить
- Создайте Zip из файлов и сохраните его в Amazon S3
- Укажите подписанный URL в Zip-файле
- Удалите файл Zip позже (поскольку он больше не требуется), возможно, путем создания правила жизненного цикла для папки внутри корзины
Обратите внимание, что функции AWS Lambda имеют ограничение на дисковое пространство 500 МБ, которого может быть недостаточно для создания Zip-файла.