» Examples

This page contains links to tutorials, example projects in every supported language, explanatory videos, and other resources to help you learn to create and manage CDK for Terraform (CDKTF) applications.

» Tutorials

Follow these hands-on tutorials from HashiCorp Learn:

Tutorial Description
Install CDKTF and Run a Quick Start Demo Write TypeScript code that will provision an NGINX server using Docker on Mac, Windows, or Linux.
Build AWS Infrastructure with TypeScript Provision an EC2 instance on AWS using TypeScript.
Build AWS Infrastructure with Python Provision an EC2 instance on AWS using Python.
Build AWS Infrastructure with Go Provision an EC2 instance on AWS using Go.
Deploy Multiple Lambda Functions with TypeScript Deploy a CDKTF application made up of two stacks, each containing a simple AWS Lambda function written in TypeScript.
Deploy Applications with CDK for Terraform Use CDKTF to deploy an application on Kubernetes.

» Example Projects

» Typescript

Example Description
aws-ecs-docker-and-static-frontend Uses a backend service in a Docker container with a static frontend running in Amazon Web Services (AWS). Walk through AWS setup and configuring the backend to run against a Postgres Database.
aws-lambda-end-to-end An end-to-end example for a serverless web application hosted on AWS.
aws-prebuilt Provisions a DynamoDB table on the prebuilt AWS provider.
aws-multiple-stacks Uses Stacks to pass different settings into the development, staging, and production environments.
aws-cloudfront-proxy Uses AWS Cloudfront as a SSL proxy server for any existing domain.
azure Provisions a Virtual Network on Microsoft Azure.
azure-app-service Uses the Azure App Service to deploy a Docker image.
docker Starts a Docker container with an NGINX server.
google Creates a simple Compute Instance with the Google Cloud Platform Provider.
google-cloudrun Defines a Google Cloud Run service with a hello world container.
kubernetes Sets up a Kubernetes Deployment with a NGINX container.
ucloud Provisions a Linux base image on UCloud.
vault Creates a Mount in Vault.

» Backends

Each CDK for Terraform project can specify a backend that defines where and how Terraform operations are performed, where Terraform state snapshots are stored, etc.

Example Description
azurerm Specifies Azure Resource Manager (azurerm) as the backend.
gcs Specifies Google Cloud Storage (gcs) as the backend.
remote Specifies a remote backend. You can use remote backends to run operations in Terraform Cloud.
s3 Specifies Amazon S3 (s3) as the backend.

» Python

Example Description
aws Provisions an AWS Virtual Private Cloud (VPC).
aws-eks Provisions an EKS cluster on an AWS Virtual Private Cloud.
azure Provisions a Virtual Network on Microsoft Azure.
docker Starts a Docker container with an NGINX server.
kubernetes Schedules and exposes a NGINX deployment on a Kubernetes cluster.
ucloud Provisions a Linux base image on UCloud.

» Java

Example Description
aws Provisions a DynamoDB table on the AWS provider.
azure Provisions a Virtual Network on Microsoft Azure.
google Creates a simple Compute Instance with the Google Cloud Platform Provider.
gradle-shared-module Uses gradle to build and share two AWS modules. Modules are distinct configurations that you can package and reuse across projects and teams.
kubernetes Schedules and exposes a NGINX deployment on a Kubernetes cluster.
ucloud Provisions a Linux base image on UCloud.

» C Sharp

Example Description
aws Provisions a DynamoDB table on the AWS provider.
azure Provisions a Virtual Network on Microsoft Azure.
google Creates a simple Compute Instance with the Google Cloud Platform Provider.
ucloud Provisions a Linux base image on UCloud.

» Go

Example Description
docker Starts a Docker container with an NGINX server.
aws Provisions an EKS cluster on an AWS Virtual Private Cloud. High memory usage: The provider generation currently needs ~6 GB of memory, so the maximum for Node.js is currently set to 8GB.
google cloud kubernetes engine + kubernetes Creates a simple Compute Instance with the Google Cloud Platform Provider.
ucloud Provisions a Linux base image on UCloud.

» Youtube Playlist

» Release demos

If you are interested in extending the cdktf convert command, you may also be interested in the convert deep dive. You do not need to watch this video to use the convert command successfully.

» Pocket public codebase

Mozilla Pocket is a widely used application for managing reading lists that is built into the Firefox browser. Like many Mozilla projects, Pocket is open source, and the CDK for Terraform codebase that Pocket uses to manage infrastructure for the recommendation API is also public and open source. Pocket's codebase provides a great example of how to lay out a CDK for Terraform project.

In order to re-use components, Pocket's codebase is separated out into a set of reusable modules. These are then used from CDK for Terraform code in the recommendation-api codebase. The recommended reading order is to:

  1. Read Pocket/recommendation-api/.aws/src/main.ts.
  2. Look at the constructs used that are defined in the Pocket/terraform-modules repository, such as PocketALBApplication.
  3. Look at the "base" constructs, which are are used in the higher-level constructs in the previous step.