Use s3-upload-stream with SDK v2, set the part size to ~10MB–50MB (tunable), and pipe your input stream directly.
s3-upload-stream