In this blog, we will cover up basic of what is AWS CDK, it's features, use cases, cdk commands, how to use them and deploy into AWS.
AWS Cloud Development Kit
AWS Cloud Development Kit is open source development framework used to model and provision cloud resources using familiar programming languages such as JS, TS, Python, Go etc.
You can use any of supported languages to define your cloud resources and when deployed those resources are provisioned through AWS CloudFormation.
Key Benifits of using CDK
Familiar : Benefits of using programming language of your's/team's choice. This gives advantage of using same programming language for your infrastructure build as well as for your application development.
Tools Support : Lot of languages have in built support for linting, testing, debugging which is inherited by cdk framework.
Abstraction : CDK provides secure first defaults properties for most of resources according best practices and implementation. e.g. when you create S3 bucket it will have public access disabled by default. However you have option to set each properties as well if you chose to do so.
CDK Main Components
1. Core Framework : With core framework you can create App which can contain one more multiple structured components called as Stacks.
Stacks are logical unit of infrastructure which contains one or many resources. Resources are mapped one-to-one to Cloudformation resources. Stack in CDK is one to one relationship with CloudFormation stack. Similar to CloudFormation you can have nested stack in CDK(we will discuss this in another blog with example!).
It's good practice to divide resources into stack that have different purpose or lifecycles. E.g. stateless(SQS) vs stateful(RDS) OR front-end applications Vs backend API's for front end.
2. AWS Construct Library: AWS construct library is set of components designed and created by AWS to create resources for specific services. These are build considering best practices and security implementation for given services. AWS constructs are categorised into three levels
Level 1(L1) constructs : These constructs are mapped one to one with single CloudFormation resource specification. E.g. S3 bucket. They are named starting with "Cfn". e.g. CfnBucket
Level 2(L2) constructs : These constructs provide higher level abstraction compared to L1 constructs. L2 constructs is very simple and requires very little input to generate complex CloudFormation templates. However they can have many defaults properties and options to be set.
Level 3(L3) constructs : These constructs are known as patterns and it can contain collection of resources that are configured to work together to achieve specific functionality. E.g. Appsync API with dynamoDB and step functions integration.
3. AWS CDK CLI : CLI commands helps to interact with core framework such as initialise our project, inspect differences between various deployments versions. Let's look at workflow on how to use CLI to develop infrastructure and deployment into AWS.
Development and Deployment Workflow
cdk bootstrap
CDK requires specific dedicated resources to be created for you to be able to deploy resources using cdk. cdk bootstrap cli command helps with achieving necessary preconfiguration to be done. This is just one time activity.
Workflow
Create new project with name of directory e.g. "cdk-todo-app-api".
π cdk init app --language=javascript
Build Project
π¦Ύ npm run build
Create templates from given code
𧬠cdk synth
Validate change set that will result as part of deployment
π cdk diff
Deploy changes to resources into cloud.
π cdk deploy
Top comments (0)