I want to directly upload/download files to Amazon S3 from python clients, running in some users machines. I have a server, that hosts the access Id and Secret keys, as they cannot be in the users side, that can be used to generate a pre-signed url, and that the clients can connect via API to request these pre-signed urls.

I have found many examples of JS, but not a single one with python also in the client side (not web based). I have tried to use boto on the client side, but there seems there is no simple way to take advantage of the boto API, but sign the requests with the remote signature.

Is there a way I can use boto to handle the transfers from the client side? So far it seems the best way is to build my own client with python-requests, but I think it pretty much sounds to reinvent the wheel. 

So far I have been able to monkey-patch HmacKeys (from boto.auth, in boto2), so the provider.secret\_key is no longer required (and doesn't raise NotReadyToAuthenticate()) and I can override the signing, injecting an API call for remote signing. But this seems very tricky, fragile and difficult to maintain. Is there any other way with boto to achieve this?