As an example, take the use of S3 as a "cache" for the most recent messages in each channel. Suppose you're hosting a decent-sized collection of chat rooms, handling a total of 100 messages/second. The PUT requests alone would run you over $1000/month, even though the same amount of traffic could be easily served by a single small EC2 instance for a few percent of the cost.
E.g. 1TB worth of retrievals from S3 can buy me a dedicated server with 16TB of disk space and 30TB of inclusive traffic. Doesn't take a very big cache hit ratio before caching all external reads becomes profitable.
If cost is a consideration, it's pretty rare for AWS to be the way to go for anything but batch processing where you need instances or short periods of time in the first place.
- generating a thumbnail for an image uploaded to an S3 bucket
- processing in response to queue events
- generating stats and metrics on a schedule or in a response to events