Sunday, August 04, 2019

AWS CDK Python - How To Get Started

Assuming you are already familiar with the concept of "IaC" (Infrastructure As Code), well in AWS context, "IaC" means CloudFormation.

CloudFormation allows you to define your AWS infrastructure in JSON or YAML files that can be managed witin your source code repository (Git for example). You can do pull requests and code reviews. When everything looks good, you can use these files as input into an automated process (CI/CD) that deploys your infrastructure changes.

So AWS Python CDK builds on AWS CloudFormation and uses it as the engine for provisioning AWS resources. It allows you to compose new abstractions that hide details and simplify common use cases, then it packages the code up as a library in Python. This blog shows you how to get sarted with AWS Python CDK.


  • Node.js (>= 8.11.x): Why? AWS CDK is developed in TypeScript and transpiled to JavaScript. Bindings for Python make use of the AWS CDK back-end running on Node.js, as does the cdk command-line tool.
  • Your AWS profile and credentials
  • Python >= 3.6

Install AWS Python CDK

1. Check npm version
$ npm -v 6.10.0
2. Install AWS CDK
$ npm install -g aws-cdk
/usr/local/bin/cdk -> /usr/local/lib/node_modules/aws-cdk/bin/cdk > core-js@2.6.9 postinstall /usr/local/lib/node_modules/aws-cdk/node_modules/core-js > node scripts/postinstall || echo "ignore" Thank you for using core-js ( ) for polyfilling JavaScript standard library! The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: > > Also, the author of core-js ( ) is looking for a good job -) + aws-cdk@1.3.0
3. Check CDK version
$ cdk --version
1.3.0 (build bba9914)
4. Check Python version
$ python3.7 -V
Python 3.7.1

5. Create a Python virtual env
$ python3.7 -m venv  cdk-venv

$ source cdk-venv/bin/activate

(cdk-venv) $
6. Updating Python Dependencies
(cdk-venv) $ which pip


(cdk-venv) $ pip install --upgrade aws-cdk.cdk
Collecting aws-cdk.cdk
Collecting publication>=0.0.3 (from aws-cdk.cdk)
Installing collected packages: publication, typing-extensions, mypy-extensions, attrs, cattrs, six, python-dateutil, jsii, aws-cdk.cdk
Successfully installed attrs-19.1.0 aws-cdk.cdk-0.36.1 cattrs-0.9.0 jsii-0.13.4 mypy-extensions-0.4.1 publication-0.0.3 python-dateutil-2.8.0 six-1.12.0 typing-extensions-3.7.4
7. Create AWS profiles (If you don't have one already)
(cdk-venv) $ aws configure --profile test-dev
AWS Access Key ID [None]: xxxxx
AWS Secret Access Key [None]: xxxx
Default region name [None]: ca-central-1
Default output format [None]: json
8. Check CDK version
(cdk-venv) $ cdk --version
1.3.0 (build bba9914)
At this point, you have successfully installed AWS CDK for Python and connected your Python with AWS CDK.

In our next blog, we will create a example app stack.

No comments: