Goodbye YAML, Hello AWS Cloud Development Kit
Today in AWS we have two native options for modeling our infrastructure as code. The AWS Cloud Development Kit is a relatively new (Summer 2019) option. The AWS CDK allows the use of a familiar programming language for defining infrastructure as code, provisioning services through AWS CloudFormation and creating reusable AWS constructs.
Why AWS Cloud Development Kit The AWS Cloud Development Kit is more than just a new toy or framework. The CDK gives us a new cloud native way of deploying and modeling services in AWS. Maybe you hate long YAML files or one some nice code completion for your favorite editor. Using the CDK we can model our infrastructure in JavaScript, TypeScript and Python! Java and C# are also available as developer preview. Using these languages gives our teams flexibility and allow us to create our own reusable constructs in our preferred language.
Components The AWS CDK is primarily composed of Apps, Stacks and Constructs. This talk will cover these basic components and setup of the CDK as well as some configuration options available.
Reusability The biggest draw to AWS CDK for an organization is the ability to define reusable AWS constructs. Want to standardize the way your organization defines serverless applications, containers or databases? AWS CDK allows you to define organizational constructs that can be packaged up as CDK constructs using your favorite programming languages.
Cons Not everything is perfect using the CDK. I’ll talk through some pain points such as multiple stacks, environments and awkward features.
Demo! I will demo deploying an active-active serverless api using DynamoDB global tables, AWS Lambda, API Gateway, AWS Certificate Manager and Route53 in Python. We will setup the cdk, bootstrap our environment and make our own reusable constructs.
About Richard Boyd
iRobot Corporation
Richard is a Cloud Solutions Architect at the iRobot Corporation. Richard focuses on building serverless applications that need to interact with on-premise and legacy applications and designing CI/CD workflows for serverless architectures.