The colo setup requires an up front cost and a commitment to the hardware. With AWS it's less about finding an exact hardware match and more about managing resources.
There are pros and cons to each. I've worked in the hosting/colo space for many years. I think there's a time in a companies infrastructure and scaling needs where being able to customize your hardware and software is the right decision. I see a hybrid future, actually it's already here.
AWS Pros:
I can fail over to another datacenter pretty quickly (depends on how you manage your infrastructure). With colo, that's not possible without more cost.
I can quickly spin up or down instances as needed (based on traffic patterns). To have a standby server or servers at a colo = $$$ , or maybe have the dedicated server provider boot up a few of their dedicated servers ?
s3 (tons of storage) - If you've built-out clustered storage systems, you know how expensive (hardware/management) that can be.
Ping,Pipe,Power - They've been managing data centers for many years and have the experience to keep the lights on.
AWS Cons:
Needs better support.
Price: They're priced above a usual VPS, but you need to consider the flexibility they provide.(API,ZONES)
I think for startups aws/slicehost/linode can work.
@viraptor thanks for the feedback. Excluding the "why" was a huge oversight. As far as running a local resolver, it depends on how you architect your infrastructure. Having a single line with 127.0.0.1 introduces a single point of failure. While that might be acceptable for demo/prototyping applications, I think for production deployments you'd want to avoid that. Also running a local resolver adds another service you'll need to monitor and keep up to date.
Note: This recommendation is for server setups, where dns latency can easily add ms to processing time. With workstations we can tolerate some latency and should probably benchmark your ISPs resolvers.