# Awesome CDK

> Curated list of awesome AWS Cloud Development Kit (AWS CDK) open-source projects, guides, blogs and other resources.

The AWS Cloud Development Kit (AWS CDK) is an open-source software development framework for defining cloud infrastructure in code.

## Contents

- Construct Libraries
  - APIs
  - Databases
  - Static Websites
  - Security
  - Ops
  - Queue
  - CI/CD
  - Monitoring
  - Workflows
  - Multi-accounts setup
- High-Level Frameworks
- Scaffolding
- Language Support
- Library Publishing
- Tools
- Training Materials and Sample Code
- Blog Posts & Talks
- Related Projects
- Tips & Tricks

## Construct Libraries

This section includes code libraries in various programming languages which vend constructs that can be used in CDK apps.

### APIs

- cdk-chalice - AWS CDK construct for AWS Chalice (Python Serverless Microframework for AWS).
- auto-cdk - Automatically generate api-gateway/lambda integrations with the filesystem (beta).
- crow-api - Create a serverless API with routes based on your file structure.

### Databases

- aws-cdk-dynamodb-seeder - A simple CDK seeder for DynamoDB.
- cdk-tweet-sentiment - Identify sentiments in tweets and log them into an Amazon DynamoDB table.
- cdk-dynamo-table-viewer - Exposes the contents of an Amazon DynamoDB table through a public HTML page.
- cdk-postgresql - AWS CDK Constructs for PostgreSQL.
- cdk-sqlserver-seeder - CDK construct that executes custom SQL scripts against SQL Server database.

### Static Websites

- cdk-static-website - CDK component that creates a static website using S3, configures CloudFront (CDN) and maps a custom domain via Route53 (DNS).
- ness - CDK powered CLI tool for deploying static sites to your AWS account.

### Security

- cdk-passwordless - Construct for having passwordless authentication using userpool.

- cdk-iam-generator - Construct to generate IAM Managed Policies and IAM Roles using JSON Configuration.

- c3 - Enables compliancy with privacy and security best practices.

- cdk-iam-floyd - IAM policy statement generator with fluent interface.

- k9-cdk - Construct to generate secure S3 bucket policies easily.

- cdk-cloudfront-authorization - CloudFront with Cognito authentication using Lambda@Edge.

- aws-firewall-factory - Deploy, update, and stage your WAFs while managing them centrally via FMS. ### Ops

- cdk-instanceStopRule - CDK component which creates an instance with a CloudWatch rule to stop it at the end of the day.

- cdk-time-bomb - CDK Construct that implodes your AWS CDK Stack after a set amount of time.

### Queue

- cdk-tweet-queue - Fills up an SQS queue with tweets from a tweeter search query.
- cdk-ses-template-mailer - Constructs to create AWS SES email templates + microservice to send templated emails with AWS SES.
- cdk-sqs-monitored - SQS Construct with dead letter queue and configured alarms.

### CI/CD

- aws-delivlib - Synthesizes CI/CD pipelines for multi-language software delivery (used by the CDK itself).
- cdk-blue-green-container-deployment - Blue/Green container deployment with CodeDeploy.

### Monitoring

- cdk-watchful - Automatic dashboards and alarms for CDK apps.
- aws-cdk-billing-alarm - Construct that sets up email alerts for exceeding an amount on your AWS bill.
- cdk-monitoring-constructs - Use high-level APIs to create monitoring for your AWS apps. Generates dashboards automatically.

### Workflows

- cdk-pull-request-check - CDK component that automatically check pull requests.
- cdk-github-webhook - CDK component that provisions GitHub webhooks.
- cdk-codepipeline-slack - CDK component that provisions a #slack approval workflow.
- cdk-codecommit-backup - Backup CodeCommit repositories to S3.
- Alexa Deployment Pipeline - Construct which creates a CodePipeline to deploy Alexa Skills to Lambda and to the Developer console using AWS SAM and DeployToAlexa action.
- cdk-developer-tools-notifications - Slack / Microsoft Teams / Email notifications for developer tools: CodeCommit, CodeBuild, CodeDeploy, CodePipeline.
- aws-pdf-textract-pipeline - ETL pipeline for crawling PDFs from the Web using Puppeteer and transforming their contents into structured data using AWS Textract and storing the results in DynamoDB.

### Multi-accounts setup

- aws-bootstrap-kit - Creates a multi-account set-up with AWS Organization, AWS SSO, DNS, and AWS CodePipeline.
- cdk-organizations - CDK constructs that helps to provision AWS Organization, Organizational Units (OU), Accounts and Policies.

## High-Level Frameworks

- punchcard - TypeScript framework to unify infrastructure and runtime code for the CDK, so you can declare constructs and implement runtime logic within the context of one Node.js application.
- aws-cdk-pure - A toolkit to develop purely functional and high-order cloud components with AWS CDK.
- cdk-stepfunctions-patterns - A set of Step Functions high-level resiliency patterns.
- Orkestra - An event-driven alternative to Airflow built on the AWS CDK and Step Functions.
- SST - An open source framework for building serverless applications with CDK. It features a Live Lambda Development environment, to test and debug Lambda functions locally without having to redeploy them.
- Datajob - Build and deploy a serverless data pipeline or machine learning pipeline on AWS with no effort.

## Scaffolding

- ReactJS + Cognito + CDK Starter - Starter project for ReactJS + Amazon Cognito + Amazon Amplify Framework with AWS CDK support.
- cra-template-aws-cdk - Create React App template using AWS CDK for out of the box, simple provisioning of serverless React apps.
- create-cdk-app - Create CDK apps from templates.
- awscdk-jsii-template - A GitHub template repository to generate a ready environment to build, test and publish your JSII construct lib for AWS CDK.

## Language Support

- AWS-CDK-Kotlin-DSL - A Wrapper library of AWS CDK Java. CI automatically generates code and deploys it by daily.
- aws-cdk-maven-plugin - A plugin to define and deploy your AWS CDK applications using Java and Maven.
- aws-lambda-nodejs-webpack - Alternative Node.js lambda CDK construct, using webpack.
- aws-lambda-nodejs-esbuild - Alternative Node.js lambda CDK construct, using esbuild.

## Library Publishing

- GitHub Action - GitHub Action for AWS CDK.
- jsii-publish - A Docker image and GitHub action to build and publish CDK constructs created via JSII.

## Tools

- CDK-Dia - Automatic infrastructure diagrams for AWS CDK.

## Training Materials and Sample Code

- Official CDK Examples - A set of example projects for the AWS CDK.
- CDK Serverless Workshop - A workshop that guides you through the process of creating and deploying CDK application.
- Build an App with AWS Cloud Development Kit course on egghead.io
- Infrastructure is Code with the AWS CDK - Recording of re:Invent 2018 session.
- GitHub Changelog Crawler - A fully fledged CDK app written by Nathan Peck which uses Fargate, API Gateway, Lambda, CloudFront, S3, ElastiCache, and Dynamodb.
- ECS with CI/CD - Demo of deploying ECS application using CDK.
- Example templates for aws cdk - Working TypeScript snippets from several AWS projects.
- Lambda packaging asset - CDK asset which builds lambda function and produces a ZIP file with dependencies.
- Open CDK Guide - Open source guide on CDK and best practices.
- Colorteller Example - Great example project using Fargate and Appmesh.
- CDK Patterns - An opensource collection of serverless architecture patterns built with CDK.
- Create a CI/CD pipeline using CodePipeline and CodeBuild - The cra-pipeline project on GitHub shows an AWS CodePipeline with AWS CodeBuild to deploy a static React application.
- React SPA with server-side rendering on AWS Lambda - The cra-serverless project is a serverless architecture to add pre-rendering to a React website created with create-react-app.
- Mini Tutorial: Setup AWS Lambda + ACM + API Gateway with AWS Cloud Development Kit - Deploy a functional public API that receives an HTML form (e.g. /contact_us.html) POST request and delivers its data to Pushover notification service.
- Example of REST API built with CDK - Source code that powers REST APIs at https://api.l3x.in/.
- dilbert-feed - A serverless application written in Go that allows you to enjoy Dilbert in your RSS feed reader without any ads.
- django-postgres-vue-gitlab-ecs - An example Django + Vue.js web app deployed with CDK using GitLab CI.
- nextjs-vercel-aws-cdk-example - A PostgreSQL (RDS), EventBridge (crons) and SNS (background jobs) example along with a Next.js application.
- Create and Publish CDK Constructs Using projen and jsii - A step-by-step guide with sample code to create a new CDK construct using projen and `jsii` and publish it to npm, Maven Central, PyPi and NuGet.

## Blog Posts & Talks

- Introduction to how and why CDK - By Leo Lapworth.
- How to Build a CDK Construct Library - By Philipp Garbe.
- CDK All The Things: A Whirlwind Tour - By Kevin S Lin.
- AWS CDK Developer Preview Announcement - The first AWS CDK Developer Preview announced on on 27 August 2018.
- Contributing to the AWS Cloud Development Kit - By Mike Cowgill from Intuit.
- First look into AWS Cloud Development Kit - By Philipp Garbe.
- Boost your AWS Infrastructure with the CDK - SlideShare by Philipp Garbe.
- Getting started with AWS CDK for Amazon ECS - By Nathan Peck.
- AWS re:Invent 2018, best of show: CDK - Aller Media Tech Blog.
- AWS Cloud Development Kit introduction with Live Demos - AWS User Group Finland Meetup January 2019.
- AWS CDK — a glimpse into the future - By Nordcloud Engineering.
- AWS Infrastructure as Code with CDK - By Ross Rhodes.
- Callbacks with AWS Step Functions - By Ross Rhodes.
- Using the CDK for CodePipelines Setup - By Stefan Freitag.
- Using the CDK for AWS MSK Setup - By Stefan Freitag.
- Serverless Dotnet - E01: Intro to AWS CDK - By Jake Scott.
- GitHub repository - By Jake Scott.
- Infrastructure is Code with the AWS CDK - AWS Tech Talk Webinar.
- tecRacer Amazon AWS Blog - Several Blog Posts from aws-blog.de by Gernot Glawe.
- Using CDK to build a UDP NLB Logging Service - By ClouderDex.
- GitHub Repo - By ClouderDex.
- Purely Functional Cloud Components with AWS CDK - Bu fogfish.
- Using the CDK to probe multiple accounts (sfn/lambda/sqs/sechub) - Blog post from fudless.xyz.
- Scheduled Lambda Functions and CI/CD pipeline with AWS CDK - By Maarten Thoelen.
- GitHub Repo - By Maarten Thoelen.
- AWS Client VPN with mutual TLS - By Kirill Merkushev.
- CDK Step Functions - By Matt Morgan.
- Loading DynamoDB with Custom Resources - By Matt Morgan.
- Loading DynamoDB with Provider Framework - By Matt Morgan.
- German: React SPA und server-side rendering (SSR) mit AWS Lambda und CloudFront - By superluminar GmbH.
- Introducing AWS CDK with a real life Lambda and API gateway example - By Alexander Fortin.
- CloudWatch Dashboards as Code (the Right Way) Using AWS CDK - By Simon-Pierre Gingras.
- Coding the Jamstack missing parts: databases, crons & background jobs - By Vincent Voyer.
- AWS CDK Continuous Integration and Delivery Using Travis CI - By Thomas Poignant.
- Custom Resources with AWS CDK - By Roy Ben-Yosef.
- Recommended AWS CDK project structure for Python applications - By Alex Pulver.

## Related Projects

- jsii - JavaScript interop interface, the technology that CDK uses to create language bindings (currently supports .NET, Java and Python).
- cdk8s - Define Kubernetes native apps and abstractions using object-oriented programming.
- cdktf - Define infrastructure resources using programming constructs and provision them using HashiCorp Terraform.
- cdktg - Agile Threat Modeling as Code.

## Tips & Tricks

- Reflect on the CDK Type System - Explore the CDK’s type system.
- Testing Your Construct Library CodeBuild Configuration Locally - With the `jsii/superchain:latest` Docker Image.

## Contributing

Contributions welcome! Read the contribution guidelines first.

cdk.md Github