--no-wait / --full-wait: choose what "done" means
CloudFront / RDS / ElastiCache / NAT Gateway / EC2 Instance / ELBv2 LoadBalancer typically take 1–15 minutes to fully provision. Three modes, least to most waiting:
--no-waitreturns as soon as the create call returns and lets AWS finish in the background.- default waits where the wait is load-bearing (something the same
deploy resolves or verifies needs the settled state, or the wait can
surface a failure). The rule of thumb: where CloudFormation and
Terraform agree on what "done" means, cdkd matches them; where they
disagree, cdkd's default takes the faster side — so, for example, ECS
Service steady state is NOT waited for by default (Terraform does not
wait either;
--full-waitrestores the CloudFormation behavior). The one case where both engines wait and cdkd still returns early is CloudFront Distribution: it returns as soon asCreateDistributionis accepted (nothing in-deploy needs the 3–15 min edge propagation, and the wait cannot detect a failure). --full-waitadditionally waits everywhere CloudFormation does — the exact per-type set is the wait-semantics table in the CLI reference.
How to pick
Pick by whether anything downstream needs the resource to actually be
serving, not by where the deploy runs — cutting billed CI minutes is a
perfectly good reason to use --no-wait in CI, and a local smoke test
(or a pipeline that wants CloudFormation-parity completion as a standing
setting) is a good reason to use --full-wait. The two flags are
opposite ends of one axis and cannot be combined.
Destroy always waits
Deploy-only: cdkd destroy always waits (NAT in deleting state
holds ENIs and would DependencyViolation sibling deletes).
What "done" means per resource type
The single source of truth is the wait-semantics table in the CLI reference: what each mode does per resource type, next to what CloudFormation and Terraform do, plus the caveats (NAT egress, RDS final-snapshot timing, etc.). cdkd is template-compatible with CloudFormation but not wait-semantics-identical.