Одним из решений является использование обратного прокси-сервера, который передает запрос в Amazon S3, но также переписывает заголовки ответа, чтобы изменить имя файла и принудительно загрузить файл.
Это избавит от необходимости делать локальную копию этого файла, но фактическая передача данных все равно будет проходить через ваш сервер.
Я предлагаю изучить Nginx для этого и, более конкретно, опции конфигурации proxy_pass и add_header .
Другим решением было бы сделать временную копию файла в S3 (используя вызов копирования объекта PUT, чтобы вам не нужно было передавать его на ваш сервер), а затем установить заголовки Content-Type и Content-Disposition на этот объект для принудительной загрузки.
Затем вы можете передавать эти файлы напрямую из S3 в браузер клиента, но вам нужно будет регулярно очищать их на S3, поскольку они не будут автоматически удаляться после завершения загрузки.