atmos aws cloudformation fmt
Format the component's local template in place: a dependency-free, native
round-trip through the YAML parser that re-serializes the template with
consistent indentation, preserving comments and key order. There is no
cfn-format binary to shell out to (Rain's own formatter is archived along
with the rest of Rain), so this is entirely native.
Usage
atmos aws cloudformation fmt <component> --stack <stack> [options]
atmos aws cloudformation fmt vpc -s plat-ue2-dev
Check whether the template is formatted without writing changes (for CI):
atmos aws cloudformation fmt vpc -s plat-ue2-dev --check
Format all or affected components' templates in dependency order:
atmos aws cloudformation fmt --all -s plat-ue2-dev
atmos aws cloudformation fmt --affected --base origin/main --check
Check mode
With --check, fmt reports each template and never writes:
- A template that is already formatted prints
already formatted. - An unformatted template prints
not formatted; a single-component run then exits non-zero. - With
--all,--affected,--tags, or--labels,fmt --checkchecks every selected template and prints a line for each one, then exits non-zero once at the end, with an error that lists every unformatted template. It does not stop at the first one.
Components that point at the same template file share one check, identified by the file's resolved path, so a shared template is reported once per run rather than once per component.
Flags
--stack,-s(required for a single component)- Atmos stack. Required when operating on a single component; optional (and used only to narrow the selected set) with
--all/--affected. --check(optional)- Report whether the template is formatted without writing changes. Exits non-zero if the template is not formatted — use this in CI instead of the default write-in-place behavior.
--all(optional)- Process all
aws/cloudformationcomponents in dependency order. --affected(optional)- Process affected
aws/cloudformationcomponents and their dependencies. Compares the working tree against a base: see--baseand the Git flags below. --include-dependents(optional)- With
--affected, include dependentaws/cloudformationcomponents. --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/--affectedto narrow the selected set further; cannot be combined with a single component argument. --labels(optional)- Filter by labels (repeatable and/or comma-separated
key=valueorkey:valuepairs, matches all):--labels=cost-center=platform,compliance=sox. Composes with--all/--affected/--tags; cannot be combined with a single component argument. --ci(optional)- Enable native CI integration (requires
ci.enabled): writes the job summary and output variables for the operation. Also enabled by theCIandATMOS_CIenvironment variables. --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.
fmt never calls the CloudFormation API and does not fire before/after
hook events — only apply,
diff,
delete,
drift detect, and
drift describe do.