I guess your cross posted this questions to Amazon S3 forum, but for the sake of others I’d like to post the answer here:
If there is only ever one “user filename” for each S3 object, then you can set the Content-Disposition header on your s3 file to set the downloading filename:
Content-Disposition: attachment; filename="foo.bar"
For the sake of fairness I’d like to mention that it was not me to provide the right answer on Amazon forum and all credits should go to Colin Rhodes 😉