# atmos aws cloudformation changeset create

Create a CloudFormation changeset for the component and leave it in place for
later manual review and execution — the explicit-control complement to
[`diff`](/cli/commands/aws/cloudformation/diff)/[`plan`](/cli/commands/aws/cloudformation/plan)'s
temporary preview changeset. After rendering, `diff`/`plan` deletes its changeset
and any preview-created stack placeholder still in `REVIEW_IN_PROGRESS`.
Cleanup failures are returned as errors.

> ⚠️ Experimental

## Usage

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

```shell
atmos aws cloudformation changeset create vpc -s plat-ue2-dev
```

Create changesets for all or affected components in dependency order:

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

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

## Behavior

- A changeset that would change nothing is not kept. CloudFormation reports it as a `FAILED` changeset ("didn't contain changes"), so Atmos deletes it and prints `No changes; changeset not kept`.
- A changeset that fails to compute is deleted, together with the empty `REVIEW_IN_PROGRESS` stack it registered when Atmos created that stack for a never-deployed component.
- A successful changeset is kept, and so is the `REVIEW_IN_PROGRESS` stack of a never-deployed component: that is the reusable artifact you asked for, and [`changeset execute`](/cli/commands/aws/cloudformation/changeset/execute) needs it.
- A stack in `ROLLBACK_COMPLETE` cannot be updated, so `changeset create` fails with a hint to [`delete`](/cli/commands/aws/cloudformation/delete) the stack first.

## Output

On success, the summary includes the changeset's ID and name, whether it was a
no-op (no changes to apply), and the predicted changes — the same diff summary
[`diff`](/cli/commands/aws/cloudformation/diff) renders. Execute the named
changeset later with
[`changeset execute`](/cli/commands/aws/cloudformation/changeset/execute).

:::note
`changeset create` does not fire `before`/`after` hook events — only
[`apply`](/cli/commands/aws/cloudformation/apply),
[`diff`](/cli/commands/aws/cloudformation/diff),
[`delete`](/cli/commands/aws/cloudformation/delete),
[`drift detect`](/cli/commands/aws/cloudformation/drift/detect), and
[`drift describe`](/cli/commands/aws/cloudformation/drift/describe) do.
:::
