Upload directly to S3