I'd like to setup a website on the Amazon AWS free tier but I'd like to be sure I won't lose any money if I see a sudden spike in traffic. Is there any way to set a cap on traffic or stop the server after a certain level of cost is reached?
Simple answer: No way to do this via the AWS control panel.
The only "solution" I know is to check your account regularly or to implement a check directly on your EC2 instance (see How to cap bandwidth usage on AWS EC2? )
I talked to someone from Amazon last night and they said that they definitely get requests for this kind of thing and they are planning to open an API soon that will allow you to write a script to check the amount of money you have spent.
Also, there is a company in Portland ( I forget the name) that offers a interface similar to Mint.com that will report your $$$ usage.