👋 How can we help?

Guides, tutorials, and tips for CloudFormation — the multi-cloud Terraform designer

🚀
Get Started
New to CloudFormation? Start here
🎨
Design Canvas
Drag, drop, and connect resources
⚙️
Generate Code
Terraform HCL, CI/CD, policies
☁️
Cloud Providers
582 resources across 9 clouds
Advanced Features
CaC, PaC, Pipeline, Data as Code
🤖
Ask the Bot
Get instant AI-powered answers
📚 Popular Articles
Most viewed help topics this week
🎯
Your first infrastructure design
Build an AWS VPC with EC2 instances in 5 minutes
Beginner
🚀
Using deploy scripts
Download and run Shell, Python, Go, or TypeScript deploy automation
Beginner
🌐
Multi-cloud architectures
Mix AWS, Azure, and GCP resources on one canvas
Intermediate
🛡️
Policy as Code & compliance
CIS, PCI-DSS, HIPAA, SOC 2 automated checks
Advanced

Your first infrastructure design

Build a simple AWS architecture — VPC, public subnet, EC2 instance, and security group — in under 5 minutes.

1
Select the AWS tab
Click AWS in the header cloud tabs to load the AWS component palette.
2
Drag a VPC onto the canvas
Find VPC in Networking. Click and drag it to the canvas centre.
3
Add a Subnet
Drag a Subnet from the palette. Position it inside the VPC visually.
4
Add EC2 Instance and Security Group
Drag both from the Compute and Security categories.
5
Connect resources
Hover a resource to reveal connection handles. Drag from one to another to draw a dependency line.
6
Generate Terraform
Click Generate in the toolbar (or Ctrl+Enter). The Output tab shows your complete main.tf.
💡 Tip: The output format dropdown lets you switch between main.tf, variables, outputs, provider, README, and all four deploy scripts without regenerating.

Using the deploy scripts

CloudFormation generates four deployment scripts — Bash, Python, TypeScript, and Go — that wrap terraform with pre-flight checks and workspace selection.

Available formats

  • deploy.sh — Bash/Shell (Linux, macOS, WSL)
  • deploy.py — Python 3.10+ (cross-platform)
  • deploy.ts — TypeScript via npx tsx
  • deploy.go — Go (run with go run deploy.go)

How to switch to a deploy script

  1. Click Generate or press Ctrl+Enter
  2. Open the output format dropdown in the right panel
  3. Under "Deploy scripts", select your preferred language
  4. Click Download to save the file
Note: If the output panel appears empty on desktop but works on mobile, click the Output tab explicitly after generating — this was a CSS layout bug fixed in v2.1.

Running the script

chmod +x deploy.sh
./deploy.sh            # interactive mode
./deploy.sh --auto     # auto-approve apply

Multi-cloud architectures

Mix resources from different clouds on the same canvas. The code generator auto-detects which providers are present and generates only the relevant provider blocks.

  • Each cloud has its own palette tab in the header
  • Components from multiple clouds coexist on the same canvas freely
  • The Multi-Cloud tab provides Terraform backends, remote state data sources, and cross-cloud modules

Example: AWS + Azure hybrid

  1. From AWS tab: drag Transit Gateway and VPN Gateway
  2. From Azure tab: drag VPN Gateway and ExpressRoute
  3. From Multi-Cloud tab: drag a Terraform Backend (S3) for shared state
  4. Generate — you get both provider "aws" and provider "azurerm" blocks with correct variables

Policy as Code & Compliance Scanning

Click Policy in the toolbar to open the Policy as Code module, which scans your canvas against six frameworks.

Supported frameworks

  • 🟠 CIS AWS Foundations Benchmark
  • 🔷 CIS Azure Foundations Benchmark
  • 🔵 CIS GCP Foundations Benchmark
  • 🟣 PCI DSS v4
  • 🟢 HIPAA/HITECH
  • 🔵 SOC 2 Type II

Running a scan

  1. Add resources to the canvas
  2. Click Policy in the toolbar
  3. Toggle frameworks in the left sidebar
  4. Click Scan — results show by severity
  5. Click Show remediation on any finding for specific fix steps
💡 Export a Markdown compliance report via "Export Report" — useful for audit evidence packages.
🚀 Quick Start Guide
Get productive with CloudFormation in under 10 minutes
1
Choose your cloud provider
Click one of the cloud tabs in the header: AWS, Azure, GCP, IBM, Oracle, VMware, Kubernetes, Alibaba, or Multi-Cloud. The left palette loads that provider's components.
2
Browse or search components
Use the search box at the top of the palette to find components by name or Terraform resource type (e.g. "bucket", "VM", "database"). Components are grouped by category.
3
Drag components to the canvas
Click and drag any component from the palette onto the canvas. On mobile, tap a component to add it instantly.
4
Configure resource properties
Click any resource on the canvas to select it. The Properties tab on the right shows all configurable fields — names, instance types, regions, tags.
5
Connect related resources
Hover a resource to reveal connection handles (small circles at the edges). Drag from one handle to another resource to create a dependency line. This generates proper Terraform references like aws_vpc.main.id.
6
Generate your Terraform code
Click Generate in the toolbar or press Ctrl+Enter. The Output tab opens with main.tf. Switch the format dropdown to see all other output files.
7
Download the complete project
Click the ZIP button in the output toolbar to download a complete Terraform project folder — all 12 file types, ready for terraform init.
🎯 Pro tip: Click Templates in the toolbar to load a pre-built architecture pattern — 3-tier web app, EKS cluster, multi-cloud hybrid, serverless API, and more. It's the fastest way to start.
🗺️ Navigate the App
A guided tour of every UI section and what it does
Interface Areas
📐
Header toolbar
File operations, cloud provider tabs, Generate button, and feature buttons (Templates, Scan, Cost, Config, Policy, Pipeline, Data). On mobile, overflow items move into the ⋯ More menu.
📦
Left sidebar — Component Palette
All components for the active cloud, grouped by category. Search bar at top filters across all names and resource types. Drag any item to the canvas, or tap on mobile.
🎨
Canvas (centre)
The main design area. Pan with middle-click drag or two-finger drag. Zoom with scroll wheel or pinch. Click to select, Shift+click to multi-select, drag a blank area to marquee-select.
⚙️
Right sidebar — Properties
Four tabs: Properties (edit the selected resource), Output (generated code), Variables (manage Terraform input variables), History (undo/redo log).
🗺️
Minimap
Thumbnail overview of the full canvas in the bottom-right corner. Click anywhere on the minimap to jump to that area. Drag the viewport rectangle to pan smoothly.
📊
Status bar (footer)
Resource count, connection count, validation status, save status, current environment, zoom level, and links to legal pages and this Help Center.
Toolbar Buttons
ButtonWhat it does
GenerateCreates all Terraform HCL files from the current canvas design. Use the output format dropdown to choose which file to view.
TemplatesOpens a library of pre-built architecture patterns to load as a starting point — 3-tier app, Kubernetes cluster, serverless, multi-cloud, and more.
ScanRuns a security analysis against Terraform best practices, flagging exposed ports, missing encryption, and overly permissive IAM policies.
CostEstimates approximate monthly cloud cost for the resources on the canvas, based on standard on-demand pricing.
ConfigConfiguration as Code — manage per-environment .tfvars values (dev, stage, prod) in a side-by-side table with secret masking and drift detection.
PolicyPolicy as Code — automated compliance scanning against CIS, PCI-DSS, HIPAA, and SOC 2. Includes an OPA/Rego and Sentinel policy editor.
PipelinePipeline as Code — generates complete CI/CD pipeline files for GitHub Actions, GitLab CI, Azure DevOps, Jenkins, CircleCI, and AWS CodePipeline.
DataData as Code — generates dbt models, schema SQL, data catalog YAML, quality contracts, lineage diagrams, and pipeline Terraform IaC.
🎨 Canvas & Designing
Master the visual design canvas
Mouse Controls
🖱️
Pointer interactions
  • Click — select a resource
  • Drag — move a resource
  • Scroll — zoom in / out
  • Middle-click drag — pan the canvas
  • Shift+click — add to selection
  • Drag blank area — marquee select
  • Double-click — open properties
  • Right-click — context menu
📱
Touch & Mobile
  • Tap component — add to canvas
  • Tap resource — select it
  • Drag node — move it
  • Two-finger drag — pan canvas
  • Pinch — zoom in / out
  • Long-press — open context menu
  • Double-tap — open properties
Working with Resources
🔗
Drawing connections
Hover over any resource to reveal blue connection handles (small circles at the edges). Drag from one handle to another resource to draw a dependency line. In generated code, connections produce correct Terraform cross-references like subnet_id = aws_subnet.public.id.
✏️
Configuring properties
Click any resource to select it, then switch to the Properties tab on the right. Fill in the resource name, configuration fields, and tags. Required fields are marked with a red asterisk.
📋
Selecting and grouping
Use Shift+click to multi-select resources. Drag a selection to move the whole group. Use Ctrl+A to select everything. Right-click → Group to visually cluster related resources.
🗑️
Deleting resources
Select a resource and press Delete or Backspace. Alternatively right-click → Delete. Connections are removed automatically. Use Ctrl+Z to undo any deletion.
⚙️ Code Generation
Understanding what CloudFormation generates and how to use it
Generated File Types
File Contents When to use
main.tfAll resource blocks for every component on the canvasAlways — this is your infrastructure
variables.tfInput variable declarations with type, description, and defaultAlways — defines parameterised inputs
outputs.tfOutput value declarations — IDs, ARNs, endpoints, connection stringsAlways — exposes key resource attributes
provider.tfProvider blocks with auth configuration for each detected cloudAlways — configures cloud credentials
backend.tfRemote state backend configuration (S3, Azure Blob, GCS)When you need shared or persistent state
terraform.tfvarsExample variable values per environmentAs a template for your real .tfvars files
README.mdArchitecture documentation with full resource listAlways useful for team documentation
deploy.sh / .py / .ts / .goDeployment automation scripts wrapping terraform CLIAs an alternative to running Terraform manually
Switching Output Format
1
Click Generate
Press Ctrl+Enter or click the Generate button in the toolbar.
2
Open the Output tab
Click the second tab (Output) in the right sidebar. The generated main.tf appears immediately.
3
Change format
Use the dropdown at the top of the Output panel to switch between Terraform files (main, variables, outputs, provider, backend, tfvars, README) and deploy scripts (Shell, Python, TypeScript, Go).
4
Download or copy
Click Copy to copy the current file to clipboard, Download for the individual file, or ZIP for the complete project with all 12 files.
⚠️ Always review generated code before running
Generated Terraform is a starting point. Review all resource configurations, check variable values for your environment, and test in dev/staging before applying to production.
☁️ Cloud Providers
582 Terraform resources across 9 cloud providers
🟠
Amazon Web Services
149
EC2, VPC, S3, RDS, EKS, Lambda, SageMaker, Bedrock AI, CodePipeline, CloudTrail, IAM, and 130+ more
🔷
Microsoft Azure
96
Virtual Machines, AKS, Cosmos DB, Synapse Analytics, Databricks, Azure AI Services, Logic Apps, and 80+ more
🔵
Google Cloud Platform
96
Compute Engine, GKE, BigQuery, Vertex AI, Cloud SQL, Dataflow, Cloud Spanner, and 80+ more
💙
IBM Cloud
50
VPC, IKS (Kubernetes), Watson AI, Event Streams, Direct Link, Transit Gateway, Satellite, Toolchains
🔴
Oracle Cloud (OCI)
53
Compute, VCN, Autonomous DB, OCI Queue, Bastion, WAF, Cloud Guard, Generative AI, Data Catalog
VMware
37
vSphere VMs, NSX-T networking, VMware Cloud on AWS (SDDC), Tanzu / TKG, Content Library, Resource Pools
☸️
Kubernetes / Helm
24
Deployments, StatefulSets, Services, Ingress, RBAC, PVCs, HPA, CronJobs, Helm releases (cert-manager, nginx, Prometheus)
🟧
Alibaba Cloud
45
ECS, OSS, ApsaraDB RDS / Redis / PolarDB, MaxCompute, AliKafka, Function Compute, ACK, CDN, WAF
🟣
Multi-Cloud / Shared
32
Terraform backends (S3, Azure Blob, GCS), remote state data sources, modules, providers, output aggregators
💡 Finding the right component: Use the search box in the left palette. It searches across all component names and Terraform resource types simultaneously — works even across cloud tabs.
Provider Setup (Terraform)
CloudProvider sourceAuthentication
AWShashicorp/awsaws configure or OIDC in CI/CD
Azurehashicorp/azurermaz login or ARM_* env vars
GCPhashicorp/googlegcloud auth application-default login
IBMIBM-Cloud/ibmTF_VAR_ibmcloud_api_key env var
OCIoracle/ocioci setup config → ~/.oci/config
VMwarehashicorp/vsphereVSPHERE_USER / VSPHERE_PASSWORD env vars
Kuberneteshashicorp/kubernetesKUBE_CONFIG_PATH or host+token
Alibabaaliyun/alicloudALICLOUD_ACCESS_KEY / ALICLOUD_SECRET_KEY
✨ Advanced Features
Power tools for professional infrastructure teams
🗂️
Config as Code (CaC)
Side-by-side table for dev / stage / prod .tfvars values, with secret masking, drift detection, environment cloning, auto-detect from canvas, and one-click ZIP export of all environments.
Toolbar → Config
🛡️
Policy as Code (PaC)
Automated compliance scanning against CIS (AWS/Azure/GCP), PCI-DSS v4, HIPAA/HITECH, and SOC 2. Includes an OPA/Rego policy editor and Sentinel policy templates.
Toolbar → Policy
🔄
Pipeline as Code (PiC)
Generates complete CI/CD pipeline files for GitHub Actions, GitLab CI, Azure DevOps, Jenkins, CircleCI, and AWS CodePipeline — auto-configured for the clouds on your canvas.
Toolbar → Pipeline
📊
Data as Code (DaC)
Generates dbt project files, schema SQL (BigQuery/Synapse/PostgreSQL), data catalog YAML, quality contracts, visual lineage diagrams, and pipeline Terraform IaC.
Toolbar → Data
🔍
Security Scanning
Instant analysis against Terraform security best practices — exposed ports, missing encryption, IAM over-permissions, public S3 buckets, missing audit logging, and CIS rule violations.
Toolbar → Scan
💰
Cost Estimation
Approximate monthly cloud cost based on resources on the canvas. Helps compare instance types, service tiers, and regional pricing before committing to a design.
Toolbar → Cost
⌨️ Keyboard Shortcuts
Speed up your workflow with these shortcuts
Canvas
Undo last action
Ctrl+Z
Redo
Ctrl+Y
Select all resources
Ctrl+A
Delete selected
Delete
Zoom in
Ctrl+=
Zoom out
Ctrl+-
Reset zoom to 100%
Ctrl+0
Deselect / close panel
Escape
Actions
Generate Terraform code
Ctrl+Enter
Force save to localStorage
Ctrl+S
Copy output (output focused)
Ctrl+C
Switch output format
Tab
Mac users: Replace Ctrl with ⌘ Cmd for all shortcuts.
🎬 Tutorials
Step-by-step walkthroughs — click any card to ask the bot to guide you through it
🏗️
3-Tier AWS Architecture
⏱ 5 min · VPC, EC2, RDS, Load Balancer
Beginner
☸️
EKS Kubernetes Cluster
⏱ 8 min · Node groups, RBAC, Helm
Intermediate
🌐
Multi-Cloud Hybrid Network
⏱ 10 min · AWS TGW + Azure ExpressRoute
Advanced
🛡️
Security-First Infrastructure
⏱ 6 min · PCI-DSS rules, remediation
Intermediate
🔄
CI/CD Pipeline for Terraform
⏱ 7 min · GitHub Actions, multi-env
Intermediate
📊
Data Lake on GCP
⏱ 9 min · BigQuery, Dataflow, Vertex AI
Advanced
Serverless API on AWS
⏱ 5 min · API Gateway, Lambda, DynamoDB
Beginner
🌩️
Alibaba E-Commerce Stack
⏱ 8 min · ECS, OSS, AliKafka, ApsaraDB
Intermediate
💡 Tips & Tricks
Power-user techniques to get more from CloudFormation
🎯
Start with templates
Click Templates in the toolbar to start from a pre-built architecture pattern. Templates cover 20+ common designs and are much faster than building from scratch. They also demonstrate how to wire resources together correctly.
🔍
Search across all components by resource type
The palette search box searches by both display name and Terraform resource type. Try searching aws_s3, azurerm_virtual, or google_compute to find exact resources by their Terraform identifier.
📋
Export early and often
Click the ZIP button frequently to save your complete Terraform project. The ZIP includes all 12 output files (main.tf, variables, outputs, provider, backend, tfvars, README, and all four deploy scripts) ready to commit to version control.
🔗
Let connections generate references automatically
Drawing connection lines between resources does more than look good — it causes the code generator to produce correct Terraform resource references (vpc_id, subnet_ids, security_group_ids, etc.) in the generated code instead of placeholder values.
🌍
Always configure a Terraform backend
Add a Terraform Backend from the Multi-Cloud palette to configure remote state storage (S3, Azure Blob, or GCS). Remote state is essential for team collaboration and prevents accidental state loss.
Fill in all environments with Config as Code
Before deploying, open the Config panel and fill in variable values for dev, stage, and prod environments simultaneously. The side-by-side view makes it easy to spot inconsistencies, and the ZIP export creates one .tfvars file per environment.
🛡️
Run Policy scan before every export
Make it a habit to click Policy and run a scan before downloading your ZIP. The scanner catches many common Terraform misconfigurations — exposed SSH ports, missing encryption, overly permissive IAM — before they reach your cloud account.
📊
Generate the CI/CD pipeline first
Use the Pipeline button to generate your CI/CD configuration first, commit it to your repository, then let the pipeline run terraform apply for every future change. This avoids "works on my machine" issues and builds a proper audit trail.
❓ Frequently Asked Questions
Quick answers to the most common questions

CloudFormation is a self-hosted tool and the application itself is free. Your cloud provider costs (AWS, Azure, GCP, etc.) depend entirely on what infrastructure you choose to deploy using the generated Terraform code. CloudFormation never charges you for cloud resources — those charges come directly from your cloud accounts.

No. CloudFormation only generates Terraform HCL code and related files. You must run terraform init, terraform plan, and terraform apply yourself — either manually or via the generated CI/CD pipeline — using your own cloud credentials. CloudFormation never touches your cloud accounts.

First, review the resource property values in the Properties panel and make sure all required fields are filled in. Run the Security Scan (Scan button) which highlights missing required configurations. Remember that generated code is a starting point — some manual editing is normal, particularly for resource dependencies and interpolation between modules.

CloudFormation auto-saves your canvas to browser localStorage every few seconds. You'll see "All changes saved" in the footer status bar. To create a portable backup you can share, use File → Export to download a .tforge file. You can also use the ZIP button in the output panel to download the complete Terraform project at any time.

This was a CSS layout bug in the output panel where the code area had zero height on desktop. It was fixed in v2.1 by switching from height: calc(100%) to flex: 1 sizing. If you're still seeing the issue: hard-refresh the page with Ctrl+Shift+R, then click the Output tab explicitly after clicking Generate.

The canvas and all code generation work fully offline once the page has loaded. The AI assistant, Security Scan API calls, and Cost Estimation may require a network connection depending on your deployment configuration. The help bot on this page works entirely offline using a built-in knowledge base.

The recommended approach is to export your design as a ZIP, commit the Terraform files to a shared Git repository, and use a shared Terraform backend (add one from the Multi-Cloud palette) so your team shares state. Use the Pipeline button to generate a CI/CD pipeline that runs terraform apply on merge to main.

You can paste a terraform plan JSON output using the diff visualiser in the Output panel to see a visual representation of planned changes. Full reverse-engineering from HCL files into canvas nodes is on the product roadmap.

Generated code targets Terraform ≥ 1.5 with the HCL2 syntax. Provider version minimums: AWS ≥ 5.0, Azure ≥ 3.90, GCP ≥ 5.0, IBM ≥ 1.60, OCI ≥ 5.30, Kubernetes ≥ 2.25. These are declared in the required_providers block inside the generated provider.tf.

Not through the UI yet — this is planned for a future release. For self-hosted deployments, you can add custom components by editing the component extension files (components-*-ext.js). Follow the same defComp(cloud, category, [...]) pattern used in the existing files.

🤖

Hi! I'm the CloudFormation Help Bot.

I can answer questions about using the platform, explain features, walk you through tutorials, and help troubleshoot issues. What would you like to know?