The Export Deletion Trap

While any stack imports an export, AWS 24 refuses to delete the exporting stack or to change or remove the exported value; the error names the export and its importer. That lock protects consumers, and it is also the trap: renaming the table in booknest-data-dev now takes three deploys, in order. Make booknest-settings-dev stop importing, change the producer, then point the consumer at the new value. On LocalStack 4.13.1 63,725 the lock does not exist:

Deleting the exporting stack while its export is importedShell
aws cloudformation delete-stack --stack-name booknest-data-dev
aws cloudformation wait stack-delete-complete --stack-name booknest-data-dev && echo "deleted"
aws cloudformation list-exports --query 'Exports[].Name'
aws ssm get-parameter --name /booknest/dev/table-name --query Parameter.Value --output text
aws dynamodb list-tables --query TableNames
Output
deleted
[]
booknest-dev-books
[]

The producer, its exports and its table are gone, while the settings stack still points at booknest-dev-books. AWS would have refused the delete (not run here). Design around the lock: keep exports few and stable, delete consumers before producers, and for values that change, let the producer write a Parameter Store parameter that consumers read through a parameter of type AWS::SSM::Parameter::Value<String>.