New Feature

CloudFormation Diagram Generator — Visualize AWS Templates Instantly

By Raghvendra Pandey · April 2026 · 6 min read

InfraSketch now supports CloudFormation. Paste a CloudFormation YAML or JSON template — including all the !Ref, !GetAtt, and !Sub shorthand you're used to writing — and get a clean architecture diagram in seconds. No login, no backend, everything runs in your browser.

Try it now

Paste your CloudFormation template and see the diagram instantly.

Open InfraSketch →

Why CloudFormation support matters

CloudFormation is still the most widely deployed IaC tool in AWS-heavy organizations. It ships with every AWS account, it integrates natively with CDK, SAM, and AWS Service Catalog, and most platform teams have years of existing templates they maintain. But CloudFormation has always been terrible at communicating what it actually does. A 400-line YAML file is not an architecture — it's a specification. Turning it into a diagram has always meant manual work in draw.io or Lucidchart.

InfraSketch eliminates that step. Paste the template, click Generate, get a diagram you can share or export.

How it works

CloudFormation templates use YAML shorthand tags like !Ref and !GetAtt that are not standard YAML — most parsers choke on them. InfraSketch registers custom YAML types for all CloudFormation intrinsic functions before parsing, so your templates load cleanly without any preprocessing.

Once parsed, the engine walks every resource's Properties block and:

The result is the same zoned layout InfraSketch uses for Terraform — Internet zone at the top, ingress layer, VPC with subnets, data zone, messaging zone, security zone — all inferred automatically from your template.

Quick start

  1. Open infrasketch.cloud
  2. Click the CloudFormation tab
  3. Paste your template (YAML or JSON) and click Generate Diagram
  4. Export as PNG, SVG, or draw.io XML — or click Share to copy a shareable URL

The parser auto-detects YAML vs JSON based on whether the template starts with {.

Example: a minimal web stack

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16

  PublicSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: 10.0.1.0/24

  AppLoadBalancer:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Subnets:
        - !Ref PublicSubnet

  AppFunction:
    Type: AWS::Lambda::Function
    Properties:
      Role: !GetAtt LambdaRole.Arn
      Environment:
        Variables:
          QUEUE_URL: !Ref AppQueue

  AppQueue:
    Type: AWS::SQS::Queue

  LambdaRole:
    Type: AWS::IAM::Role

This produces a diagram with the VPC container, PublicSubnet with the ALB inside, Lambda connecting to SQS and IAM Role, and the messaging zone for the queue — all from the references in the template.

Supported resource types

CategoryCloudFormation types
NetworkingAWS::EC2::VPC, AWS::EC2::Subnet, AWS::EC2::InternetGateway, AWS::EC2::NatGateway, AWS::EC2::EIP, AWS::EC2::RouteTable, AWS::EC2::TransitGateway, AWS::EC2::VPNGateway, AWS::EC2::NetworkInterface
ComputeAWS::EC2::Instance, AWS::EC2::LaunchTemplate, AWS::AutoScaling::AutoScalingGroup, AWS::EKS::Cluster, AWS::EKS::Nodegroup, AWS::ECS::Cluster, AWS::ECS::Service, AWS::ECS::TaskDefinition, AWS::Lambda::Function
DataAWS::RDS::DBInstance, AWS::RDS::DBCluster, AWS::DynamoDB::Table, AWS::ElastiCache::CacheCluster, AWS::ElastiCache::ReplicationGroup
StorageAWS::S3::Bucket
Load balancingAWS::ElasticLoadBalancingV2::LoadBalancer (ALB/NLB auto-detected), AWS::ElasticLoadBalancingV2::TargetGroup, AWS::ElasticLoadBalancing::LoadBalancer
SecurityAWS::EC2::SecurityGroup, AWS::IAM::Role, AWS::KMS::Key, AWS::WAFv2::WebACL
Edge / DNSAWS::CloudFront::Distribution, AWS::Route53::HostedZone, AWS::Route53::RecordSet, AWS::Route53::RecordSetGroup
MessagingAWS::SQS::Queue, AWS::SNS::Topic
ContainersAWS::ECR::Repository
ObservabilityAWS::CloudWatch::Alarm, AWS::Logs::LogGroup

What gets inferred automatically

VPC containment

Any resource with VpcId: !Ref X is drawn inside the VPC box for resource X.

Subnet placement

SubnetId, SubnetIds, and Subnets properties place resources in the correct subnet lane.

ALB vs NLB

Type: network on a load balancer property selects the NLB icon; anything else is ALB.

Connection arrows

Every !Ref and !GetAtt between supported resources that isn't a VPC/subnet reference becomes a directed arrow.

Intrinsic functions supported

The YAML parser handles all standard CloudFormation shorthand tags without requiring you to expand them to long form:

JSON templates are also supported — { "Ref": "MyVPC" } and { "Fn::GetAtt": ["MyRole", "Arn"] } both work exactly the same way.

What's still Terraform-only

A few features remain Terraform-specific for now: module expansion (ZIP upload and registry auto-fetch), and the plan JSON workflow. CloudFormation doesn't have an equivalent to terraform show -json, but the template itself is already the resolved source of truth — there's no variable evaluation step needed.

Use cases

Try CloudFormation diagrams now

Paste your template and get a diagram in seconds. Free, no login, nothing leaves your browser.

Open InfraSketch →