cloudposse/atmos/atmos-aws-cloudformation

Trust tier 3
  • community
  • ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Source check pending

Checking that the SKILL.md file is still in the repository.

Native AWS CloudFormation components (experimental): render/plan/diff/apply/deploy/delete/validate/output/fmt/list via the AWS SDK for Go v2, changesets, drift detection, S3 backend, source provisioning, StackSets, tree/logs/watch

Install

npx vskill@latest install cloudposse/atmos/atmos-aws-cloudformation

Semi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard

SKILL.md

Atmos Native AWS CloudFormation Components

Use this skill for native components."aws/cloudformation" stacks. Atmos deploys them through the AWS SDK for Go v2, without an aws, cfn, sam, or Rain binary. This first aws/* component and its nested commands are experimental; the top-level aws group stays stable.

Related Skills

NeedLoad
Terraform/OpenTofu orchestration (contrast: HCL + state file vs. CFN's own stack/changeset state)atmos-terraform
Component architecture, inheritance, catalogs, dependencies.components DAG orderingatmos-components
AWS credentials / identities for the SDK client and per-target auth overridesatmos-auth
Lifecycle hooks around diff/apply/delete/drift detect/drift describe/changeset create/changeset executeatmos-hooks
Native CI job summariesatmos-ci
!secret values flowing into parameters:atmos-secrets
kind: git GitOps delivery target mechanicsatmos-git
Local AWS sandbox (Floci) for testing without real credentialsatmos-emulator
Migrating off Rain / raw CloudFormationatmos-migration → references/from-rain.md

Component Shape

Define CloudFormation stacks under components.aws/cloudformation in stack manifests. Prefer the unquoted aws/cloudformation: key in YAML examples; a / does not require quoting:

yaml
components:
aws/cloudformation:
vpc:
path: template.yaml # file reference, relative to the component's base path
stack_name: "{{ .vars.stage }}-vpc" # explicit; no legacy name-pattern interpolation
parameters:
CidrBlock: "10.0.0.0/16"
AvailabilityZones:
- us-east-1a
- us-east-1b
DbPassword: !secret DB_PASSWORD # secrets flow into parameters, not env
capabilities:
- CAPABILITY_IAM
tags:
team: platform
stack_policy:
file: stack-policy.json # or an inline `body:` (JSON string or YAML map)
role_arn: "arn:aws:iam::123456789012:role/cfn-deploy"
termination_protection: true
timeout_in_minutes: 30
settings:
aws_cloudformation:
region: us-east-2
provision:
backend:
enabled: true
targets:
artifacts:
kind: aws/s3
bucket: acme-plat-cfn-artifacts
region: us-east-2
gitops:
kind: git
repository: acme/infra-gitops
path: stacks/dev/vpc

CloudFormation components use the same stack sections as other component types — vars, env, auth, metadata, settings, dependencies, hooks, source/provision, inheritance, and overrides — plus CloudFormation-specific fields. generate: and plugins: are not supported: a generate: key on a component, under the aws/cloudformation: type-level section, or in CloudFormation overrides is a stack-processing error. Use an inline template: instead — Atmos renders it with Go templates (when templates.settings.enabled: true) and YAML functions, so per-stack template content needs no generated files.

FieldPurpose
template / path (exactly one required)template is an inline body (string or YAML map) rendered by Atmos Go templates (templates.settings.enabled: true) and YAML functions (!env, !store, !aws.cloudformation.output, ...) before reaching CloudFormation. path is a file reference, read as raw bytes, no templating. Setting both is an error. To pass a CloudFormation dynamic reference through the template renderer, escape the opening braces once: Value: '{{ "{{" }}resolve:ssm:/my/param}}'.
stack_nameExplicit stack name. Supports Go templates; no legacy name-pattern interpolation.
parametersA map of name to value, or an AWS CLI/Rain list of {ParameterKey, ParameterValue} entries (UsePreviousValue: true allowed; also !include of a JSON array). Scalars stringified, lists comma-joined for List<Type>. Other shapes are an error. For a Rain config file use !include rain.yaml .Parameters.
capabilitiesAcknowledged IAM capabilities: CAPABILITY_IAM, CAPABILITY_NAMED_IAM, CAPABILITY_AUTO_EXPAND (macros/SAM). Validated locally; an unknown value fails with the valid set.
tagsmap[string]string tags on the stack — distinct from Atmos's own component tags/--tags.
stack_policy.file / stack_policy.body (mutually exclusive; setting both is a validation error)file is a JSON policy path relative to the component's base path, read verbatim. body is an inline policy: a JSON string (used as written) or a YAML map (serialized to JSON). body needs no component directory and is rendered by Atmos templates and YAML functions like an inline template. Atmos installs the policy before UPDATE execution (apply/deploy or explicit changeset execute), and after a successful CREATE or a no-op apply. Policy-setting errors stop pending updates; blocked updates never trigger an automatic override.
role_arnThe CloudFormation service role, not caller credentials — CreateChangeSet's RoleARN.
notification_arnsSNS topic ARNs CloudFormation publishes stack events to.
disable_rollbackPrevents automatic rollback on stack creation/update failure.
termination_protectionSee Delete Safety below.
timeout_in_minutesBounds how long stack creation may run before CloudFormation rolls back.
sourceJIT template provisioning — see Source & Template Management.
provisionDelivery targets — see Delivery Targets.

Commands

CommandPurpose
atmos aws cloudformation render <component> -s <stack>Render the template client-side without deploying or validating it through the CloudFormation API. Local or already-provisioned sources render offline without AWS credentials; source provisioning (for example a cold private S3 source) and configured secret or output lookups can still require authentication and network access.
atmos aws cloudformation validate <component> -s <stack>Server-side ValidateTemplate — syntax and capability discovery, not a local linter.
atmos aws cloudformation diff <component> -s <stack>Creates (or reuses) a changeset and previews the changes an apply would make, then deletes the preview changeset and any owned preview stack placeholder still in REVIEW_IN_PROGRESS. Cleanup failures are returned as errors. plan is an alias.
atmos aws cloudformation apply <component> -s <stack>Executes the changeset (ExecuteChangeSet), creating or updating the stack — never a direct CreateStack/UpdateStack call. Streams per-resource stack events live and ends with a rendered Outputs summary.
atmos aws cloudformation deploy <component> -s <stack>Alias for apply with --auto-approve defaulted to true.
atmos aws cloudformation delete <component> -s <stack>DeleteStack, respecting termination protection — see Delete Safety.
atmos aws cloudformation output <component> [key] -s <stack>Renders the deployed stack's Outputs via DescribeStacks, as apply does. With key, prints only that value (pipeable); a missing key lists the available keys. A stack that is not deployed is an error. Alias: outputs.
atmos aws cloudformation fmt <component> -s <stack> [--check]Canonically formats the local template in place (comment-preserving YAML round-trip, no shell-out). --check reports without writing and, in bulk runs, checks every template before failing once. See ci-and-listing.
atmos aws cloudformation list [-s <stack>]ListStacks, marking each stack managed (matches a component's stack_name in -s, or in any stack without it) or unmanaged. See ci-and-listing.

All operation commands accept --all, --affected (with --base/--ref/--sha/--repo-path/ --clone-target-ref/--ssh-key/--ssh-key-password), --include-dependents (requires --affected), and --tags/--labels bulk selection, matching atmos describe affected semantics. --all/--affected are mutually exclusive with a positional component argument, and so is --tags/--labels-based selection. atmos aws cfn is a Cobra alias for atmos aws cloudformation that works with every verb.

Confirmation: direct apply previews the changeset before asking; deploy auto-approves. delete also asks; publish-only/external targets do not. See apply flow for cleanup and non-TTY behavior.

Output formats

Formats: json, yaml, hcl, env, dotenv, bash, csv, tsv, table, github; key modifiers: --flatten, --uppercase. A positional key selects one output. Masking reads deployed templates and fails closed if sensitivity metadata is unavailable; --mask=false disables it. Internal lookups keep real values. See output formats and masking for the full contract.

Changesets

Use changeset create, list, execute, and delete for explicit two-phase deployments. See changeset operations for confirmation and capability requirements.

Drift Detection

shell
atmos aws cloudformation drift detect vpc -s dev [--fail-on-drift]
atmos aws cloudformation drift describe vpc -s dev

drift detect runs DetectStackDrift/polls DescribeStackDriftDetectionStatus; drift describe renders the results of the most recent detection (DescribeStackResourceDrifts). --fail-on-drift exits non-zero when drift is found, for CI gating — drift is not a hard failure by default. drift describe shows each MODIFIED resource's property differences (path, expected, actual, type). Drift summaries follow Native CI. Atmos Pro dashboard uploads through UploadInstanceStatus remain future work.

Delivery Targets (Backend Management)

By default apply/deploy deploy directly to the account/region resolved for the component (see Region Resolution). A component can declare additional named provision.targets, selected with --target: aws/s3 (publish-only upload, also used automatically to package any template over CloudFormation's 51,200-byte inline limit), git (GitOps commit instead of deploying), and aws/stackset (multi-account/region, see Stack Sets). "Backend" means the S3 artifact bucket a kind: aws/s3 target declares — CloudFormation's own stack state is service-managed. Manage it like atmos terraform backend:

shell
atmos aws cloudformation backend create vpc -s dev

Set provision.backend.enabled: true to auto-provision the bucket on first use instead of running backend create explicitly. See references/delivery-targets.md for the full target-kind table, the backend verb group, auto-provisioning semantics, and today's packaging-scope limitation (local assets like Lambda zips aren't rewritten, only the template body is uploaded).

Source & Template Management

Point a component at a remote template through the top-level source: section instead of committing it to your infrastructure repository — the same JIT-vendoring mechanism other component types use:

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Extension points

  • hookPre/post lifecycle hooks

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/cloudposse/atmos/atmos-aws-cloudformation/badge)](https://verified-skill.com/skills/cloudposse/atmos/atmos-aws-cloudformation)

Something wrong with this skill or its page? Tell us.