Skip to content

Commit 845cff7

Browse files
ostermanclaude
andcommitted
docs(cloudformation): document Phase 2 verbs and the interop bridge
CLI docs for changeset create/execute/list/delete, drift detect/describe, get template/policy, fmt, list, and source pull/list/describe/delete (mirroring the existing terraform/helmfile/packer source docs pattern). Also documents the Terraform<->CloudFormation interop bridge: !aws.cloudformation.output alongside the other YAML functions (including its forbidden-in-selectors restriction, same as !terraform.output), and atmos.Component(...).outputs now resolving aws/cloudformation targets. No config/schema reference changes needed — Phase 2 added CLI verbs only, no new stack-manifest or atmos.yaml fields. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent 81abc27 commit 845cff7

26 files changed

Lines changed: 1884 additions & 1 deletion
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "changeset",
3+
"className": "command",
4+
"link": {
5+
"type": "doc",
6+
"id": "cli/commands/aws/cloudformation/changeset/changeset"
7+
}
8+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
title: atmos aws cloudformation changeset
3+
sidebar_label: changeset
4+
sidebar_class_name: command
5+
id: changeset
6+
description: Manage aws/cloudformation changesets directly.
7+
---
8+
import Intro from '@site/src/components/Intro'
9+
import CastPlayer from '@site/src/components/CastPlayer'
10+
import DocCardList from '@theme/DocCardList'
11+
import Experimental from '@site/src/components/Experimental'
12+
13+
<Intro>
14+
Manage `aws/cloudformation` changesets directly — manual control over changesets,
15+
complementing [`apply`](/cli/commands/aws/cloudformation/apply)/[`deploy`](/cli/commands/aws/cloudformation/deploy)/[`diff`](/cli/commands/aws/cloudformation/diff)'s
16+
implicit flow (each of those creates or reuses a changeset internally). Use these
17+
verbs when you need to review a changeset before executing it, name it for later
18+
execution, or manage changesets outside a normal deploy.
19+
</Intro>
20+
21+
<Experimental />
22+
23+
<CastPlayer title="atmos aws cloudformation changeset --help" src="/casts/screengrabs/atmos-aws-cloudformation-changeset--help.cast" static chrome />
24+
25+
## Usage
26+
27+
```shell
28+
atmos aws cloudformation changeset create <component> --stack <stack>
29+
atmos aws cloudformation changeset execute <component> --stack <stack> --changeset-name <name>
30+
atmos aws cloudformation changeset list <component> --stack <stack>
31+
atmos aws cloudformation changeset delete <component> --stack <stack> --changeset-name <name>
32+
```
33+
34+
## Subcommands
35+
36+
<DocCardList/>
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
title: atmos aws cloudformation changeset create
3+
sidebar_label: create
4+
sidebar_class_name: command
5+
id: create
6+
description: Create a changeset and leave it for later review or execution.
7+
---
8+
import Intro from '@site/src/components/Intro'
9+
import CastPlayer from '@site/src/components/CastPlayer'
10+
import Experimental from '@site/src/components/Experimental'
11+
12+
<Intro>
13+
Create a CloudFormation changeset for the component and leave it in place for
14+
later manual review and execution — the explicit-control complement to
15+
[`diff`](/cli/commands/aws/cloudformation/diff)/[`plan`](/cli/commands/aws/cloudformation/plan)'s
16+
implicit, preview-only changeset (which is also left in place, but framed as
17+
a one-off preview rather than a named, reusable artifact).
18+
</Intro>
19+
20+
<Experimental />
21+
22+
<CastPlayer title="atmos aws cloudformation changeset create --help" src="/casts/screengrabs/atmos-aws-cloudformation-changeset-create--help.cast" static chrome />
23+
24+
## Usage
25+
26+
```shell
27+
atmos aws cloudformation changeset create <component> --stack <stack> [options]
28+
```
29+
30+
```shell
31+
atmos aws cloudformation changeset create vpc -s plat-ue2-dev
32+
```
33+
34+
Create changesets for all or affected components in dependency order:
35+
36+
```shell
37+
atmos aws cloudformation changeset create --all -s plat-ue2-dev
38+
atmos aws cloudformation changeset create --affected --base origin/main
39+
```
40+
41+
## Flags
42+
43+
<dl>
44+
<dt>`--stack`, `-s` <em>(required)</em></dt>
45+
<dd>Atmos stack.</dd>
46+
47+
<dt>`--all` <em>(optional)</em></dt>
48+
<dd>Create changesets for all `aws/cloudformation` components in dependency order.</dd>
49+
50+
<dt>`--affected` <em>(optional)</em></dt>
51+
<dd>Create changesets for affected `aws/cloudformation` components and their dependencies.</dd>
52+
53+
<dt>`--include-dependents` <em>(optional)</em></dt>
54+
<dd>With `--affected`, include dependent `aws/cloudformation` components.</dd>
55+
56+
<dt>`--tags` <em>(optional)</em></dt>
57+
<dd>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.</dd>
58+
59+
<dt>`--labels` <em>(optional)</em></dt>
60+
<dd>Filter by labels (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.</dd>
61+
</dl>
62+
63+
## Output
64+
65+
On success, the summary includes the changeset's ID and name, whether it was a
66+
no-op (no changes to apply), and the predicted changes — the same diff summary
67+
[`diff`](/cli/commands/aws/cloudformation/diff) renders. Execute the named
68+
changeset later with
69+
[`changeset execute`](/cli/commands/aws/cloudformation/changeset/execute).
70+
71+
:::note
72+
`changeset create` does not fire `before`/`after` hook events — only
73+
[`apply`](/cli/commands/aws/cloudformation/apply),
74+
[`diff`](/cli/commands/aws/cloudformation/diff), and
75+
[`delete`](/cli/commands/aws/cloudformation/delete) do.
76+
:::
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
title: atmos aws cloudformation changeset delete
3+
sidebar_label: delete
4+
sidebar_class_name: command
5+
id: delete
6+
description: Delete a named changeset without touching the stack.
7+
---
8+
import Intro from '@site/src/components/Intro'
9+
import CastPlayer from '@site/src/components/CastPlayer'
10+
import Experimental from '@site/src/components/Experimental'
11+
12+
<Intro>
13+
Delete a named changeset (`DeleteChangeSet`) without touching the stack
14+
itself. Use this to clean up changesets created with
15+
[`changeset create`](/cli/commands/aws/cloudformation/changeset/create) that
16+
you decided not to execute.
17+
</Intro>
18+
19+
<Experimental />
20+
21+
<CastPlayer title="atmos aws cloudformation changeset delete --help" src="/casts/screengrabs/atmos-aws-cloudformation-changeset-delete--help.cast" static chrome />
22+
23+
## Usage
24+
25+
```shell
26+
atmos aws cloudformation changeset delete <component> --stack <stack> --changeset-name <name> [options]
27+
```
28+
29+
```shell
30+
atmos aws cloudformation changeset delete vpc -s plat-ue2-dev --changeset-name vpc-2026-08-25
31+
```
32+
33+
## Flags
34+
35+
<dl>
36+
<dt>`--stack`, `-s` <em>(required)</em></dt>
37+
<dd>Atmos stack.</dd>
38+
39+
<dt>`--changeset-name` <em>(required)</em></dt>
40+
<dd>Name of the changeset to delete.</dd>
41+
42+
<dt>`--all` <em>(optional)</em></dt>
43+
<dd>Delete the named changeset for all `aws/cloudformation` components in dependency order.</dd>
44+
45+
<dt>`--affected` <em>(optional)</em></dt>
46+
<dd>Delete the named changeset for affected `aws/cloudformation` components and their dependencies.</dd>
47+
48+
<dt>`--include-dependents` <em>(optional)</em></dt>
49+
<dd>With `--affected`, include dependent `aws/cloudformation` components.</dd>
50+
51+
<dt>`--tags` <em>(optional)</em></dt>
52+
<dd>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.</dd>
53+
54+
<dt>`--labels` <em>(optional)</em></dt>
55+
<dd>Filter by labels (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.</dd>
56+
</dl>
57+
58+
:::note
59+
`changeset delete` does not fire `before`/`after` hook events — only
60+
[`apply`](/cli/commands/aws/cloudformation/apply),
61+
[`diff`](/cli/commands/aws/cloudformation/diff), and
62+
[`delete`](/cli/commands/aws/cloudformation/delete) do.
63+
:::
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: atmos aws cloudformation changeset execute
3+
sidebar_label: execute
4+
sidebar_class_name: command
5+
id: execute
6+
description: Execute a previously-created, named changeset.
7+
---
8+
import Intro from '@site/src/components/Intro'
9+
import CastPlayer from '@site/src/components/CastPlayer'
10+
import Experimental from '@site/src/components/Experimental'
11+
12+
<Intro>
13+
Execute a previously-created, named changeset (`ExecuteChangeSet`) and stream
14+
stack events until the operation reaches a terminal state — unlike
15+
[`apply`](/cli/commands/aws/cloudformation/apply), which creates (or reuses)
16+
and executes a changeset in one step, `changeset execute` acts on an
17+
existing changeset by name, created earlier with
18+
[`changeset create`](/cli/commands/aws/cloudformation/changeset/create).
19+
</Intro>
20+
21+
<Experimental />
22+
23+
<CastPlayer title="atmos aws cloudformation changeset execute --help" src="/casts/screengrabs/atmos-aws-cloudformation-changeset-execute--help.cast" static chrome />
24+
25+
## Usage
26+
27+
```shell
28+
atmos aws cloudformation changeset execute <component> --stack <stack> --changeset-name <name> [options]
29+
```
30+
31+
```shell
32+
atmos aws cloudformation changeset execute vpc -s plat-ue2-dev --changeset-name vpc-2026-08-25
33+
```
34+
35+
Skip the interactive confirmation prompt:
36+
37+
```shell
38+
atmos aws cloudformation changeset execute vpc -s plat-ue2-dev --changeset-name vpc-2026-08-25 --auto-approve
39+
```
40+
41+
## Flags
42+
43+
<dl>
44+
<dt>`--stack`, `-s` <em>(required)</em></dt>
45+
<dd>Atmos stack.</dd>
46+
47+
<dt>`--changeset-name` <em>(required)</em></dt>
48+
<dd>Name of the changeset to execute.</dd>
49+
50+
<dt>`--auto-approve` <em>(optional)</em></dt>
51+
<dd>Skip the interactive confirmation prompt. Without it, `changeset execute` prompts for confirmation on a TTY before executing the changeset.</dd>
52+
53+
<dt>`--all` <em>(optional)</em></dt>
54+
<dd>Execute the named changeset for all `aws/cloudformation` components in dependency order.</dd>
55+
56+
<dt>`--affected` <em>(optional)</em></dt>
57+
<dd>Execute the named changeset for affected `aws/cloudformation` components and their dependencies.</dd>
58+
59+
<dt>`--include-dependents` <em>(optional)</em></dt>
60+
<dd>With `--affected`, include dependent `aws/cloudformation` components.</dd>
61+
62+
<dt>`--tags` <em>(optional)</em></dt>
63+
<dd>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.</dd>
64+
65+
<dt>`--labels` <em>(optional)</em></dt>
66+
<dd>Filter by labels (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.</dd>
67+
</dl>
68+
69+
## Behavior
70+
71+
If the stack ends in a failed status after executing the changeset (e.g.
72+
`UPDATE_ROLLBACK_COMPLETE`), `changeset execute` exits non-zero.
73+
74+
:::note
75+
`changeset execute` does not fire `before`/`after` hook events — only
76+
[`apply`](/cli/commands/aws/cloudformation/apply),
77+
[`diff`](/cli/commands/aws/cloudformation/diff), and
78+
[`delete`](/cli/commands/aws/cloudformation/delete) do.
79+
:::
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
title: atmos aws cloudformation changeset list
3+
sidebar_label: list
4+
sidebar_class_name: command
5+
id: list
6+
description: List a stack's changesets.
7+
---
8+
import Intro from '@site/src/components/Intro'
9+
import CastPlayer from '@site/src/components/CastPlayer'
10+
import Experimental from '@site/src/components/Experimental'
11+
12+
<Intro>
13+
List a CloudFormation stack's changesets (`ListChangeSets`), newest first —
14+
each entry's name, status, and description.
15+
</Intro>
16+
17+
<Experimental />
18+
19+
<CastPlayer title="atmos aws cloudformation changeset list --help" src="/casts/screengrabs/atmos-aws-cloudformation-changeset-list--help.cast" static chrome />
20+
21+
## Usage
22+
23+
```shell
24+
atmos aws cloudformation changeset list <component> --stack <stack> [options]
25+
```
26+
27+
```shell
28+
atmos aws cloudformation changeset list vpc -s plat-ue2-dev
29+
```
30+
31+
## Flags
32+
33+
<dl>
34+
<dt>`--stack`, `-s` <em>(required)</em></dt>
35+
<dd>Atmos stack.</dd>
36+
37+
<dt>`--all` <em>(optional)</em></dt>
38+
<dd>List changesets for all `aws/cloudformation` components in dependency order.</dd>
39+
40+
<dt>`--affected` <em>(optional)</em></dt>
41+
<dd>List changesets for affected `aws/cloudformation` components and their dependencies.</dd>
42+
43+
<dt>`--include-dependents` <em>(optional)</em></dt>
44+
<dd>With `--affected`, include dependent `aws/cloudformation` components.</dd>
45+
46+
<dt>`--tags` <em>(optional)</em></dt>
47+
<dd>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.</dd>
48+
49+
<dt>`--labels` <em>(optional)</em></dt>
50+
<dd>Filter by labels (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.</dd>
51+
</dl>
52+
53+
## Output
54+
55+
If the stack has no changesets, `changeset list` prints a single line saying
56+
so instead of an empty table.
57+
58+
:::note
59+
`changeset list` does not fire `before`/`after` hook events — only
60+
[`apply`](/cli/commands/aws/cloudformation/apply),
61+
[`diff`](/cli/commands/aws/cloudformation/diff), and
62+
[`delete`](/cli/commands/aws/cloudformation/delete) do.
63+
:::

website/docs/cli/commands/aws/cloudformation/cloudformation.mdx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,22 @@ atmos aws cloudformation delete <component> --stack <stack>
4343
atmos aws cloudformation validate <component> --stack <stack>
4444
atmos aws cloudformation output <component> --stack <stack>
4545

46+
atmos aws cloudformation changeset create <component> --stack <stack>
47+
atmos aws cloudformation changeset execute <component> --stack <stack> --changeset-name <name>
48+
atmos aws cloudformation changeset list <component> --stack <stack>
49+
atmos aws cloudformation changeset delete <component> --stack <stack> --changeset-name <name>
50+
51+
atmos aws cloudformation drift detect <component> --stack <stack>
52+
atmos aws cloudformation drift describe <component> --stack <stack>
53+
54+
atmos aws cloudformation get template <component> --stack <stack>
55+
atmos aws cloudformation get policy <component> --stack <stack>
56+
57+
atmos aws cloudformation fmt <component> --stack <stack>
58+
atmos aws cloudformation list --stack <stack>
59+
60+
atmos aws cloudformation source pull <component> --stack <stack>
61+
4662
atmos aws cloudformation apply --all --stack <stack>
4763
atmos aws cloudformation apply --affected --base origin/main
4864

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "drift",
3+
"className": "command",
4+
"link": {
5+
"type": "doc",
6+
"id": "cli/commands/aws/cloudformation/drift/drift"
7+
}
8+
}

0 commit comments

Comments
 (0)