Pros
The people here are good, and the company has accomplished some great things. The interview process is grueling but effective; there aren't very many people here lacking in intelligence. The management has realized the value of a balanced life; we aren't asked to work extended hours. At least in my group, they're doing their best to keep the unpleasantness of being on call to a minimum. The mentoring program seems to be pretty good; the principal engineers put on some pretty interesting presentations describing the technologies that they're working with, and technical issues that affect developers. There are some interesting technical problems to solve at Amazon, so if you're lucky enough to be on a team that's solving them, you will probably be quite happy here.
Cons
For the most part, the work is maintenance. Most engineers end up spending more time wading through low-quality code and fighting with configuration problems in the development environment than they do coding. Unless you're on a team that's developing new software, most of the code required is little more than patches and glue. Most of Amazon's technology is out of date, including the low-end computers that the developers receive as workstations. The main platform is several years and two versions behind the times, and there's a surprising amount of business-critical code written in low-quality Perl. All of this is exacerbated by a fairly mediocre benefits package.