Skip to main content
CDK synthesis and CloudFormation deployment are different compatibility questions. cdk synth runs locally and produces a template. cdk deploy normally calls CloudFormation and may also call STS, S3, IAM, ECR, and service APIs for bootstrap assets and deployment monitoring. Do not infer deploy compatibility because the resources inside a synthesized template have service adapters. The deployment engine itself must be reachable through a documented CloudFormation mapping, and every auxiliary API in the tool’s call graph must be covered.

Inventory the deployment path

For the exact AWS CLI, CDK CLI, bootstrap stack, and library versions you use, record:
  • CloudFormation operations such as stack create, change set, describe, event polling, and delete;
  • STS and account-discovery calls;
  • bootstrap bucket reads and writes;
  • ECR calls for container assets;
  • IAM role and policy calls;
  • service-specific operations performed outside CloudFormation;
  • endpoint configuration available for each client.
Compare that list with the AWS service catalog. A missing control-plane dependency blocks the workflow even when an individual resource type is supported through another adapter.

Safely use synthesis today

Synthesis is useful for understanding the intended origin-cloud resources without contacting Cloud Adapter:
Review the generated template for resources, IAM statements, custom resources, assets, lookups, and context providers. Lookups can make synthesis contact AWS unless their values are already in CDK context, so verify whether your app is truly offline.

Build a compatibility fixture

When the complete dependency graph is covered, start with a disposable stack containing one resource and no custom resources or external assets. Retain:
  1. the synthesized template;
  2. the list of API operations observed during deployment;
  3. stack events and request identifiers;
  4. native target state;
  5. the delete result.
Test create, event polling, read-back, update with no replacement, update with replacement, failure rollback, and delete. A successful create alone is not a CloudFormation lifecycle test.

Endpoint routing is multi-service

One --endpoint-url affects one AWS CLI service invocation. CDK creates several service clients internally. A single S3 endpoint override does not redirect CloudFormation, STS, IAM, or ECR. Keep the routing design explicit and do not use a catch-all endpoint override unless every call it captures is intentionally supported.

Failure interpretation

Until your complete call graph passes, use a directly supported client or IaC guide rather than presenting synthesis as deployment evidence. Start with Terraform/OpenTofu or AWS CLI.