What Runs for Real

Choosing Which CloudFormation Features Run for Real in This Chapter

LocalStack 4.13.1 63,725 uses its newer CloudFormation 24 engine, built around change sets, and its coverage is uneven. Every feature below was tried on it while this chapter was written; the table decides how each section treats it:

CloudFormation features on LocalStack 4.13.1 and how this chapter treats them
Feature LocalStack 4.13.1, as tested Treatment
Create, update, delete, change sets Work; resources created one at a time Run (7.6, Change Sets and Policies)
Intrinsic functions, Fn::ForEach Work, except Fn::Cidr and a few forms Run (Intrinsic Functions)
Nested stacks, exports and imports Work Run (Cross-Stack and Nested)
StackSets Instances deploy; describe calls fail Run in part (StackSets)
Rollback None; failed stacks keep resources AWS 24 docs (Rollback)
Parameter constraints, Rules Not checked cfn-lint 2,641 (Template Anatomy)
Stack policies InternalFailure, not supported Not run here (Stack Policies)
Termination protection, export in use Recorded, deletion not blocked Both shown (7.7.4, The Export Deletion Trap)
DeletionPolicy: Retain Ignored; resource deleted Both shown (Deletion Policies)
Drift detection, resource import Not supported Not run here (Drift and Import)
Fn::GetStackOutput Left unresolved, as text Not run here (Cross-Stack and Nested)
IAM policies Stored, not enforced Both shown (IAM for CloudFormation)

Three rules follow. Where LocalStack behaves like AWS, the chapter runs the example and prints real output. Where it differs, the chapter shows what LocalStack did and states AWS's documented behavior beside it, because a test environment that silently disagrees with production is exactly what you need to recognize. Where it cannot run a feature at all, the example comes from AWS's documentation, labeled "not run here", with no output. Lint every template with cfn-lint before deploying, since it enforces much of what LocalStack skips.