https://github.com/awslabs/aws-cdk
They are in the process of releasing a kit to define your infrastructure programmatically, and let them deal with the mess of CloudFormation as a compiled IR they send to their backend when you deploy.
https://github.com/awslabs/aws-cdk
They are in the process of releasing a kit to define your infrastructure programmatically, and let them deal with the mess of CloudFormation as a compiled IR they send to their backend when you deploy.
You’re still defining your resources declaratively - just with type checking - at least if you’re using a statically typed language. If not, you’re still just getting runtime errors when you run your program. It might catch some things before you run your template - but so will a linter.
Neither will catch issues like using a subnet that doesn’t exist or using an AMI that doesn’t exist.
The CDK does: you’re either explicitly bypassing the safety checks, are explicitly importing a value (which necessarily is validated at runtime), or have to provide a subnet definition to instantiate the relevant object.
You then use these programming language constructs to implement higher level ideas like applications, fully in a programming language.