A change set is a computed diff between a stack and a new template or new parameter values. Creating one changes nothing; you review it, then execute it or delete it. create-change-set builds one by name (--change-set-type CREATE even previews a stack that does not exist yet, which is what the REVIEW_IN_PROGRESS status means), and deploy --no-execute-changeset builds one without executing it. Here the booknest-fn stack of Intrinsic Functions is asked to switch from dev to prod:
aws cloudformation deploy --stack-name booknest-fn --template-file functions.yaml
aws cloudformation deploy --stack-name booknest-fn --template-file functions.yaml \
--parameter-overrides Stage=prod --no-execute-changeset | cut -c1-80
aws cloudformation list-change-sets --stack-name booknest-fn --output text \
--query 'Summaries[].[ChangeSetName,Status,ExecutionStatus]'Output
Waiting for changeset to be created.. Waiting for stack create/update to complete Successfully created/updated stack - booknest-fn Waiting for changeset to be created.. Changeset created successfully. Run the following command to review changes: aws cloudformation describe-change-set --change-set-name arn:aws:cloudformation: awscli-cloudformation-package-deploy-1790358428 CREATE_COMPLETE AVAILABLE

Review change sets before production deploys, for example in a manual approval step. On AWS 24 , a drift-aware change set also compares against the resources' actual state (not run here: LocalStack 63,725 has no drift support).