Skip to main content

atmos aws cloudformation delete

Delete a CloudFormation stack and stream its events until deletion finishes. Deleting a protected stack requires --disable-termination-protection.

Experimental
CloudFormation Configuration

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

atmos aws cloudformation delete --help
 

Usage​

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

Examples​

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

Skip the interactive confirmation prompt:

atmos aws cloudformation delete vpc -s plat-ue2-dev --auto-approve

Retry a DELETE_FAILED stack, retaining resources that could not be deleted:

atmos aws cloudformation delete vpc -s plat-ue2-dev --retain-resources=SecurityGroup,ManualDbSnapshot

Delete a stack protected by termination_protection: true:

atmos aws cloudformation delete vpc -s plat-ue2-dev --disable-termination-protection

Delete components selected by tags or labels:

atmos aws cloudformation delete --all --tags production,tier-1
atmos aws cloudformation delete --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.
--auto-approve (optional)
Skip the interactive confirmation prompt. Without it, delete prompts for confirmation on a TTY before deleting the stack.
--retain-resources (optional)
Comma-separated logical IDs of resources to retain. Only valid when the stack is in DELETE_FAILED status — CloudFormation rejects it otherwise.
--disable-termination-protection (optional)

Disable termination protection before deleting. If the component's termination_protection is true, delete fails with an actionable hint instead of silently disabling protection — pass this flag as an explicit escape hatch. Setting termination_protection: false in the stack configuration and re-applying does not disable protection: apply only ever turns protection on, never off.

--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

delete fires the before.aws/cloudformation.delete/after.aws/cloudformation.delete hook events.

Behavior​

  • A stack that does not exist is not an error. delete prints <stack> does not exist; nothing to delete and exits 0, the same way with or without a terminal, and also with --retain-resources or --disable-termination-protection.
  • A stack protected by termination protection is refused with a "termination protection enabled" error and a hint to pass --disable-termination-protection.
  • --retain-resources on a stack that is not in DELETE_FAILED is refused with its own error before anything is deleted.
  • A delete that ends in DELETE_FAILED fails with a hint that names the resources CloudFormation could not delete and shows the retry: delete <component> -s <stack> --retain-resources=<ids>.

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 deploy demo -s local
atmos cft delete demo -s local --auto-approve
atmos emulator down aws -s local