Having also used both, terraform is a significant improvement over CloudFormation. As a DevOps engineer working on AWS, I push very hard against CloudFormation.<p>Both languages suffer when you try to do some advanced things, but CloudFormation falls apart way earlier.<p>One example, triggering a lambda from an S3 upload event is a prime use case for both services. However CloudFormation fails to do that because the S3 bucket takes time to be created. You need to either deploy twice, expecting the first to fail or trigger a lambda in CFN to setup the notification. Seriously you need python code uploaded in a zip file to handle this? Both are hacks for a classic example.<p>1. <a href="https://forums.aws.amazon.com/thread.jspa?threadID=167470" rel="nofollow">https://forums.aws.amazon.com/thread.jspa?threadID=167470</a>
2. <a href="https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-s3-notification-lambda/" rel="nofollow">https://aws.amazon.com/premiumsupport/knowledge-center/cloud...</a>