3.2.4 Deploy Stack Updates to Environments

Deploy Application Stack Updates

SAM Multi-Environment

# samconfig.toml
[default.deploy.parameters]
stack_name = "my-app-dev"
parameter_overrides = "Stage=dev"

[staging.deploy.parameters]
stack_name = "my-app-staging"
parameter_overrides = "Stage=staging"

[production.deploy.parameters]
stack_name = "my-app-prod"
parameter_overrides = "Stage=prod"
confirm_changeset = true
sam deploy                          # dev (default)
sam deploy --config-env staging     # staging
sam deploy --config-env production  # prod

CloudFormation Change Sets

# Preview changes before applying
aws cloudformation create-change-set \
  --stack-name my-stack \
  --template-body file://template.yaml \
  --change-set-name my-update

# Review then execute
aws cloudformation execute-change-set \
  --change-set-name my-update --stack-name my-stack

CDK Multi-Environment

new MyStack(app, 'Dev', { env: { account: '111', region: 'us-east-1' } });
new MyStack(app, 'Prod', { env: { account: '222', region: 'us-east-1' } });
cdk diff Dev    # Preview changes
cdk deploy Dev  # Deploy to dev

Exam Tip: samconfig.toml for multi-env. Change Sets = preview before update. CDK cdk diff = preview changes.