AWS CDK Constructs: English Vocabulary for Infrastructure as Code

Learn the precise English vocabulary and IaC code review phrases engineers use daily when discussing AWS CDK constructs, stacks, and synthesis.

AWS CDK has its own vocabulary — and it’s not just technical jargon. The words engineers use when discussing CDK reflect specific concepts about abstraction levels, resource ownership, and deployment boundaries. If you’re working on an AWS-heavy team, you’ll hear these terms in code reviews, architecture discussions, and Slack threads every day. This post teaches you how to use them naturally.

The Three Levels of Constructs

The most important conceptual vocabulary in CDK is the construct hierarchy. Engineers talk about L1, L2, and L3 constructs constantly.

L1 Construct (CloudFormation Resource)

An L1 construct is a direct, low-level representation of a CloudFormation resource. The name comes from “Level 1.” L1 constructs give you complete control but require you to specify every property explicitly.

“We dropped down to an L1 construct for the Lambda permission because the L2 didn’t expose the FunctionUrlAuthType property yet.”

The phrase drop down to (or fall back to) an L1 is very natural — it implies you’re moving to a lower abstraction level by necessity.

L2 Construct (Intent-Driven)

An L2 construct is an opinionated, higher-level abstraction that encapsulates sensible defaults and exposes a cleaner API. Most CDK engineers work at this level day-to-day.

“The aws_s3.Bucket L2 construct automatically sets up server-side encryption by default. You have to explicitly opt out if you don’t want it.”

Key phrases: sets sane defaults, opinionated, intent-driven, encapsulates the boilerplate.

L3 Construct (Pattern)

An L3 construct — also called a pattern — bundles multiple resources into a reusable architecture. These often come from aws-solutions-constructs or are written in-house.

“We built an L3 construct that provisions an API Gateway, a Lambda function, and a DynamoDB table together — with all the IAM wiring handled internally.”

Escape Hatch

An escape hatch is a CDK mechanism that lets you access and modify the underlying CloudFormation resource when the L2 or L3 abstraction doesn’t expose what you need.

“We had to use an escape hatch to set a raw CloudFormation property that the L2 construct didn’t surface. It’s not ideal, but it works.”

The term comes from the idea of “escaping” the abstraction. In code reviews you’ll hear: “Can we avoid the escape hatch here? There might be a cleaner way using the L2 API.”

Stack and App

Stack

A stack is the unit of deployment in CDK — it maps directly to a CloudFormation stack. Engineers talk about stacks as containers for related resources.

“We split the VPC into its own stack so other stacks can reference it without redeploying networking every time.”

Common verbs: deploy a stack, synthesize a stack, destroy a stack, reference across stacks.

App

The app is the root of a CDK application — the entry point that contains all stacks. Engineers rarely discuss the app itself in detail, but the phrase matters.

“The app instantiates three stacks: one for networking, one for the API layer, and one for the data tier.”

Synthesis

Synthesis (verb: synthesize) is the process of converting your CDK code into CloudFormation templates. It happens before deployment.

“Synthesis failed because we had a circular dependency between stacks. We need to restructure which stack owns the shared security group.”

You’ll also hear synth as shorthand: “Run cdk synth and check what CloudFormation template it produces.”

Bootstrapping

Bootstrapping is a one-time setup process that prepares an AWS account and region for CDK deployments — it creates the S3 bucket and IAM roles CDK needs to operate.

“The pipeline failed in the new account because nobody ran cdk bootstrap yet. The staging environment wasn’t bootstrapped.”

A common mistake is confusing bootstrapping (account setup) with deployment (running cdk deploy). In conversations: “Is that account bootstrapped?” is a standard diagnostic question.

Asset Bundling

Asset bundling refers to the process of packaging application code — Lambda functions, Docker images — as part of the CDK build. CDK can bundle assets locally or in Docker.

“Asset bundling is slowing down our CI pipeline. We’re looking at using bundling.image with a custom Docker image to cache the node_modules layer.”

Cross-Stack References

A cross-stack reference is when one CDK stack exports a value (like a VPC ID or an ARN) that another stack imports and uses.

“Be careful with cross-stack references — if you rename an export, CloudFormation will refuse to deploy until you update all stacks that import it.”

The gotcha phrase here: “CloudFormation will refuse to deploy” — this is natural and direct, not “CloudFormation will not be able to deploy.”

CDK Context

Context in CDK is a key-value store for configuration values — things like account IDs, environment names, or feature flags. It is stored in cdk.context.json.

“We use CDK context to inject the environment name at synth time. The same stack code deploys to dev, staging, and prod with different context values.”

Code Review Phrases for IaC

Requesting a lower abstraction level:

  • “This could be an L2 construct — do we really need to configure every CloudFormation property manually?”

Flagging an escape hatch:

  • “We’re using an escape hatch here. Let’s add a comment explaining why the L2 API isn’t sufficient.”

Discussing cross-stack coupling:

  • “I’d rather not create a cross-stack reference for this. It tightly couples these two stacks and makes stack deletion painful.”

Synthesis issues:

  • “The synth output looks correct, but let’s diff it against the deployed stack before we apply: cdk diff.”

Key Collocations

CollocationUsage context
drop down to an L1when the L2 abstraction is insufficient
synthesize a stackconverting CDK code to CloudFormation
bootstrap an accountone-time account preparation for CDK
bundle assetspackaging Lambda code or Docker images
reference across stackscross-stack output/import pattern
expose a propertywhen a construct surfaces a config option
escape the abstractionuse an escape hatch to access raw CFN

Practice

Take a CDK construct you’ve written recently — even a simple S3 bucket or Lambda. Write three sentences describing it in English: what level of construct it is, what defaults it sets, and whether you needed any escape hatches. Then write one sentence you might say in a code review about it. Focus on using the collocations from this post rather than translating Ukrainian sentence structures directly.