Skip to main content

atmos aws cloudformation diff

Preview changes to a deployed CloudFormation stack using a temporary changeset. Atmos displays the changes and removes the changeset without executing it. This command authenticates and calls AWS.

Experimental
CloudFormation Configuration

Configure templates, parameters, and delivery targets for your component.

atmos aws cloudformation diff --help
 

Usage​

atmos aws cloudformation diff <component> --stack <stack> [options]

Examples​

atmos aws cloudformation diff vpc -s plat-ue2-dev

Diff all or affected components in dependency order:

atmos aws cloudformation diff --all -s plat-ue2-dev
atmos aws cloudformation diff --affected --base origin/main

Diff components selected by tags or labels:

atmos aws cloudformation diff --all --tags production,tier-1
atmos aws cloudformation diff --affected --labels cost-center=platform

Arguments​

component (required unless selecting multiple components)
CloudFormation component name in the Atmos stack.

Flags​

--stack, -s (required for a single component)
Atmos stack. With bulk selection flags, limits the selected components to this stack.
--all (optional)
Process all aws/cloudformation components. Deployment runs dependencies first; deletion runs consumers first.
--affected (optional)
Process affected aws/cloudformation components and their dependencies. Compares the working tree against a base: see --base and the Git flags below.
--include-dependents (optional)
With --affected, include dependent aws/cloudformation components.
--base (optional)
Git base ref or SHA to compare against for affected detection: --base=origin/main. A value that looks like a commit SHA is treated as --sha, anything else as --ref. Used with --affected.
--tags (optional)
Filter by tags (comma-separated, matches any): --tags=production,tier-1. Composes with --all/--affected to narrow the selected set further; cannot be combined with a single component argument.
--labels (optional)
Filter by labels (repeatable and/or comma-separated key=value or key:value pairs, matches all): --labels=cost-center=platform,compliance=sox. Composes with --all/--affected/--tags; cannot be combined with a single component argument.
--ci (optional)
Enable CI integration for supported operations when ci.enabled is configured. Summary and output-variable publishing use their respective CI settings. Also enabled by CI and ATMOS_CI.
--ref (optional)
Git ref to compare against for affected detection. Used with --affected.
--sha (optional)
Git SHA to compare against for affected detection. Used with --affected.
--repo-path (optional)
Path to an already cloned target repository to use as the affected baseline. Used with --affected.
--clone-target-ref (optional)
Clone the target ref instead of checking it out in the current repository for affected detection. Used with --affected.
--ssh-key (optional)
Path to the SSH private key used to clone the target ref for affected detection. Used with --clone-target-ref.
--ssh-key-password (optional)
Password for the SSH private key used to clone the target ref for affected detection. Used with --clone-target-ref.
--skip-hooks (optional)
Skip lifecycle hooks for this invocation. --skip-hooks with no value skips every hook; --skip-hooks=name1,name2 skips only the named hooks. Equivalent to the ATMOS_SKIP_HOOKS environment variable.
note

atmos aws cloudformation plan is an alias for diff. Both fire the before.aws/cloudformation.diff/after.aws/cloudformation.diff hook events.

Behavior​

Atmos deletes the preview changeset after displaying it, including an empty changeset or a failed render.

New Stacks​

Previewing a new stack creates an empty REVIEW_IN_PROGRESS stack. Atmos removes it after the preview if this invocation created it and it remains in that state. Stacks that already existed are preserved.

Failed Stack Creation​

A stack in ROLLBACK_COMPLETE cannot be updated. The command fails with a hint to delete the failed stack and apply again.

Try it out​

Copy the example into a new directory and make it your own:

atmos init examples/cloudformation
cd cloudformation

Requires Docker or Podman, Python 3, and network access for the emulator image. Run against the local AWS emulator; the final commands clean up. No AWS account is needed.

atmos config set aliases.cft "aws cloudformation"
atmos emulator up aws -s local
atmos cft diff demo -s local
atmos cft delete demo -s local --auto-approve
atmos emulator down aws -s local