AWS CDK Examples
This repository contains a set of example projects for the AWS Cloud Development Kit. Some examples are only available in TypeScript, there is a guide on how to read TypeScript code and translate it to Python here.
Table of Contents
TypeScript examples
To run a TypeScript example, say my-widget-service:
$ npm install -g aws-cdk
$ cd typescript/my-widget-service
$ npm install
$ npm run build
$ cdk deploy // Deploys the CloudFormation template
# Afterwards
$ cdk destroy
Example | Description |
---|---|
api-cors-lambda-crud-dynamodb | Creating a single API with CORS, and five Lambdas doing CRUD operations over a single DynamoDB |
application-load-balancer | Using an AutoScalingGroup with an Application Load Balancer |
appsync-graphql-dynamodb | Creating a single GraphQL API with an API Key, and four Resolvers doing CRUD operations over a single DynamoDB |
classic-load-balancer | Using an AutoScalingGroup with a Classic Load Balancer |
custom-resource | Shows adding a Custom Resource to your CDK app |
elasticbeanstalk | Elastic Beanstalk example using L1 with a Blue/Green pipeline (community contributed) |
ecs-cluster | Provision an ECS Cluster with custom Autoscaling Group configuration |
ecs-network-load-balanced-service | Starting a container fronted by a network load balancer on ECS |
ecs-service-with-task-placement | Starting a container ECS with task placement specifications |
ecs-service-with-advanced-alb-config | Starting a container fronted by a load balancer on ECS with added load balancer configuration |
ecs-service-with-task-networking | Starting an ECS service with task networking, allowing ingress traffic to the task but blocking for the instance |
fargate-application-load-balanced-service | Starting a container fronted by an application load balancer on Fargate |
fargate-service-with-auto-scaling | Starting an ECS service of FARGATE launch type that auto scales based on average CPU Utilization |
ecs-cross-stack-load-balancer | Shows how to use a single load balancer with services in other stacks |
lambda-cron | Running a Lambda on a schedule |
my-widget-service | Use Lambda to serve up widgets |
resource-overrides | Shows how to override generated CloudFormation code |
static-site | A static site using CloudFront |
stepfunctions-job-poller | A simple StepFunctions workflow |
ecs-service-with-logging | Starting a container fronted by a load balancer on ECS |
fargate-service-with-logging | Starting a container fronted by a load balancer on Fargate |
custom-logical-names | Example of how to override logical name allocation |
Java examples
To run the Java examples:
$ npm install -g aws-cdk
$ cd java/my-widget-service
$ mvn compile
$ cdk deploy
# Afterwards
$ cdk destroy
Example | Description |
---|---|
fargate-load-balanced-service | Starting a container fronted by a load balancer on Fargate |
hello-world | A demo application that uses the CDK in Java |
lambda-cron | Running a Lambda on a schedule |
resource-overrides | Use of the resource overrides (aka "escape hatch") mechanism. |
stepfunctions-job-poller | A simple StepFunctions workflow |
static-site | A static site using CloudFront |
api-cors-lambda-crud-dynamodb | Creating a single API with CORS, and five Lambdas doing CRUD operations over a single DynamoDB |
classic-load-balancer | Using an AutoScalingGroup with a Classic Load Balancer |
Python examples
To run a Python example, say my-widget-service:
$ npm install -g aws-cdk
$ cd python/my-widget-service
$ pip install -r requirements.txt # Best to do this in a virtualenv
$ cdk deploy # Deploys the CloudFormation template
# Afterwards
$ cdk destroy
Example | Description |
---|---|
api-cors-lambda | Shows creation of Rest API (GW) with an /example GET endpoint, with CORS enabled |
application-load-balancer | Using an AutoScalingGroup with an Application Load Balancer |
appsync-graphql-dynamodb | Creating a single GraphQL API with an API Key, and four Resolvers doing CRUD operations over a single DynamoDB |
classic-load-balancer | Using an AutoScalingGroup with a Classic Load Balancer |
custom-resource | Shows adding a Custom Resource to your CDK app |
dockerized-app | Deploys a containerized app into 3 tiers with userdata in an autoscaling group |
ecs-cluster | Provision an ECS Cluster with custom Autoscaling Group configuration |
ecs-load-balanced-service | Starting a container fronted by a load balancer on ECS |
ecs-service-with-task-placement | Starting a container ECS with task placement specifications |
ecs-service-with-advanced-alb-config | Starting a container fronted by a load balancer on ECS with added load balancer configuration |
ecs-service-with-task-networking | Starting an ECS service with task networking, allowing ingress traffic to the task but blocking for the instance |
fargate-load-balanced-service | Starting a container fronted by a load balancer on Fargate |
fargate-service-with-autoscaling | Starting an ECS service of FARGATE launch type that auto scales based on average CPU Utilization |
lambda-cron | Running a Lambda on a schedule |
lambda-s3-trigger | S3 trigger for Lambda |
rds | Creating a MySQL RDS database inside its dedicated VPC |
stepfunctions | A simple StepFunctions workflow |
url-shortner | Demo from the Infrastructure is Code with the AWS CDK AWS Online Tech Talk |
ec2-instance | Create EC2 Instance in new VPC with Systems Manager enabled |
JavaScript examples
Select the following link to see how to install and run the example.
Example | Description |
---|---|
aws-cdk-changelogs-demo | A full serverless Node.js application stack deployed using CDK. It uses AWS Lambda, AWS Fargate, DynamoDB, Elasticache, S3, and CloudFront. |
.NET examples
Example | Description |
---|---|
my-widget-service | Use Lambda to serve up widgets |
random-writer | This sample application demonstrates some essential mechanisms of the AWS CDK for .NET. It uses AWS Lambda, DynamoDB, CloudWatch. |
To run a .NET example, say my-widget-service:
$ npm install -g aws-cdk
$ cd csharp/my-widget-service
$ dotnet build src
$ cdk deploy // Deploys the CloudFormation template
# Afterwards
$ cdk destroy
License
This library is licensed under the Apache 2.0 License.