Is it possible to build a blockchain explorer to put on aws? Can I download the blockchain onto a cloud service then build an api to search it? maybe put it on a noSQl database?

What would be the best way?

Or even better, is there a way to not download the whole blockchain but, build an api that uses SPV to get just the transactions of a certain public address?

I have been trying to use the apis out there such as blockchain, block.io, insightpay, etc, but they all limit me in terms of API usage and I they are all bad at dealing with transactions where there are hundreds of inputs. Not sure how common this is, but it is a problem.

Thanks
There are open-source projects available that make building your own query service possible. A good example would be Libbitcoin, see their github and official website.

You need to install libbitcoin server - this is a full bitcoin node with a database, and libbitcoin explorer - a set of tools among which you will find one for querying the server about addresses (balances and whatnot).

Be aware that the server will download the whole blockchain. It is not possible to have your own query server without having the blockchain on hand.