Until you start using serious bandwidth. Then it's extremely expensive.
As you say, if you have a massive spike for an hour or something due to the nature of your service, maybe AWS makes sense rather than paying for the full day, but I think that's an extremely rare usecase.
Also if you're using a language/setup that isn't too efficient, then AWS may be a second best option to switching language/framework etc.