Для загрузки на S3 требуется весь поток данных с набором метаданных длины содержимого. Вам необходимо создать оперативный буфер, который получает данные из исходного URL-адреса и асинхронно направляет их в запрос S3 PutObject.
Один из способов сделать это - использовать два буфера для упорядочения потока данных из источника в заданные размеры фрагментов, которые можно использовать как часть многоэтапной загрузки.
В SDK, я сомневаюсь, есть поддержка этого, поэтому вам придется реализовать это, используя вызовы REST к сервису AWS.