Pros
Compensation is awesome, and only gets better with time. Work with very smart people. Working in a place that is absurd in scale, forces you to learn new things and stretch yourself. I'm told it looks great on your resume. If you can make this into a career you will make serious compensation.
Cons
If it's not for you, they will let you know. The "Leadership Principles" are applied only however it suites the interpreter, if you solo deliver a large complex project a week late, one manager may say that you demonstrated Ownership by managing ambiguity and delivered results, another may say that you failed to deliver results, demonstrating a lack of bias for action as well as a failure to invent and simplify. On numerous occasions I've been in meetings, or informed by others of situations where managers are flat out lying to their directors (to buy time to conceal the issue or throw someone else under the bus). External Hires come in at a disadvantage compared to their peers at the same level, due to the massive amount of tribal knowledge and proprietary internal tools. Pro or Con: As a software developer, you are not just responsible for software, dev-ops/on-call etc, but also deeply understanding the business model, "being an entrepreneur" in your area, which may or may not be your thing. The average retention time at amazon is <2 yrs, and the average time you are with any given manager is about 6 months (varies from place to place within amazon but these are the "averages") this makes it difficult to grow your "internal resume" to work towards promotion. Desk Crying is still a thing. There is a strong culture of separating the performers from the under performers, the better you do the more opportunity you will be given to the areas that you know well. The worse you do the more they will focus on giving you things that you are not good at. This is apparent all the way up to SVP level thinking on how "raising the bar" is supposed to lead to YOY attrition (by design).