I found that it is easy to rewrite code in botocore and use tornado AsyncHTTPClien instead of urllib.
The idea is to rewrite botocore.operation.call to make it uses tornado.httpclient.AsyncHTTPClient. After some experiments I got a simple wrapper for botocore that allows to use it in tornado asynchronously.