AWS IaC (Infrastructure as Code) is about to get a whole lot more interesting.

From the AWS “Whats New” news feed:

Posted On: Jul 11, 2019

The AWS Cloud Development Kit (AWS CDK) is now generally available in TypeScript and Python. AWS CDK is an open source software development framework to model and provision your cloud application resources using familiar programming languages. With AWS CDK, you can define your infrastructure as code and provision it through AWS CloudFormation. AWS CDK is also available in Java and C# in developer preview.

AWS CDK provides high-level components that preconfigure cloud resources with proven defaults, so you can build cloud applications without needing to be an expert. It also enables you to compose and share your own custom components that incorporate your organization’s requirements, helping teams start new projects faster. AWS CDK is available to use in all regions.

https://aws.amazon.com/cdk/

Quick Take

“…software […] to model and provision your cloud application resources using familiar programming languages…” that sounds like IaC to me. Like CloudFormation with a sprinkling of Pulumi. Could this be the future of CloudFormation? Is IaC moving away from YAML/JSON declarative syntax and adopting a more programming centric translation paradigm?

Digging into the full on documentation it would seem that yes, this might just be the AWS way forward as far as IaC is concerned. Looking over some of the documentation it also appears the the CDK is abstraction of CloudFormation. An abstraction that is centrally pointed at the competitors like Terraform. Again, directly from the AWS docs:

Why Use the AWS CDK?

Let’s look at the power of the AWS CDK. Here is some TypeScript code in an AWS CDK project to create an AWS Fargate service (this is the code we use in the Creating an AWS Fargate Service Using the AWS CDK).

[ … 21 lines of typescript … ]

This produces an AWS CloudFormation template of over 600 lines; deploying the AWS CDK app produces over 50 resources of the following types.

[ … list of resources … ]

https://docs.aws.amazon.com/cdk/latest/guide/home.html

Final Thoughts

AWS can do a lot. Will this new tool get lost in the static? Like many of the other service offerings this too is an abstractions on top of existing services. Abstraction can be a powerful too for adoption; and AWS is a large organization that has figured out how to stay adaptive, but is it to much. What do you think?

Resources