Basta utilizar a funcionalidade de presigned URL para gerar um link para acesso unico daquele objeto em questão, sem a necessidade de tornar o objeto publico.
Esse link tem validade definida por você, e pode ser gerado via SDK do AWS.
Fazer o proxy como você mostrou tira toda a vantagem de utilizar o S3.
Inclusive é possível criar uma URL presigned para upload de objetos.