# atmos aws cloudformation fmt

Format a template file with consistent YAML indentation while preserving
comments and key order. Use `--check` to check formatting without modifying the template.

> ⚠️ Experimental

**CloudFormation Configuration**

Configure templates, parameters, and delivery targets for your component.
Configuration Reference[Read more](/stacks/components/aws-cloudformation)

## Usage

```shell
atmos aws cloudformation fmt <component> --stack <stack> [options]
```

## Examples

```shell
atmos aws cloudformation fmt vpc -s plat-ue2-dev
```

Check whether the template is formatted without writing changes (for CI):

```shell
atmos aws cloudformation fmt vpc -s plat-ue2-dev --check
```

Format all or affected components' templates in dependency order:

```shell
atmos aws cloudformation fmt --all -s plat-ue2-dev
atmos aws cloudformation fmt --affected --base origin/main --check
```

## 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.
- **`--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.

This command does not fire [lifecycle hooks](/stacks/components/aws-cloudformation#lifecycle-hooks).

## 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 --check` checks 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.

## Source Downloads

Formatting does not call CloudFormation. If the template comes from an uncached
remote source, Atmos downloads it first. Private sources may require authentication.
