I beg to differ. CloudFormation is great, but crafting CF templates for non-trivial backends is not for the faint of heart. Also iterating on them while tweaking things in CF templates and corresponding logic in micro-services running on Lambda is not the shortest/fastest feedback loop with the current AWS tooling. Also things are pretty hard to test.
After over a year of struggling with the current tooling, I've started working on a framework [0] that would allow writing serverless infrastructures at a higher abstraction level.