Generate AWS architecture diagrams from infrastructure JSON. Use when user asks to "generate diagram", "create AWS diagram", "visualize infrastructure", or "draw architecture".
This skill inherits all available tools. When active, it can use any tool Claude has access to.
Generate architecture diagrams from aws_infrastructure.json using the Python diagrams library.
Check that aws_infrastructure.json exists in the current directory
Ask user which diagram type they want:
Ask for output format: png (default), svg, or pdf
aws_infrastructure.jsondiagrams librarypython <file>.pyfrom diagrams import Diagram, Cluster, Edge
with Diagram("Title", filename="output_name", outformat="png", show=False):
# Create nodes and connections
Compute:
from diagrams.aws.compute import ECS, Lambda, Fargate, EC2, EKS, Batch, ECR
Database:
from diagrams.aws.database import RDS, Aurora, ElastiCache, Dynamodb, DocumentDB, Neptune, Redshift
Note: Use Dynamodb (not DynamoDB)
Network:
from diagrams.aws.network import ALB, NLB, CloudFront, Route53, VPC, InternetGateway, NATGateway, TransitGateway, Endpoint, APIGateway
Storage:
from diagrams.aws.storage import S3, EFS
Security:
from diagrams.aws.security import WAF, Shield, ACM, Cognito, SecretsManager, KMS, IAM
Integration:
from diagrams.aws.integration import SQS, SNS, Eventbridge, StepFunctions
Note: Use Eventbridge (not EventBridge)
Analytics:
from diagrams.aws.analytics import Kinesis, Athena, Glue, EMR, Quicksight
Management:
from diagrams.aws.management import Cloudwatch, CloudwatchAlarm, Cloudtrail
General (for unknown services):
from diagrams.aws.general import General
External/Users:
from diagrams.onprem.network import Internet
from diagrams.onprem.client import Users
# Left to right flow
node1 >> node2
node1 >> Edge(label="HTTPS") >> node2
# Multiple targets
node1 >> [node2, node3]
with Cluster("VPC"):
with Cluster("Public Subnet"):
alb = ALB("Load Balancer")
with Cluster("Private Subnet"):
app = Fargate("App")
Show overall infrastructure:
Show security controls:
Show network topology:
Show data movement:
Use these filenames:
aws_architecture.pngaws_security.pngaws_network.pngaws_data_flow.pngshow=False in Diagram constructorGeneralfrom diagrams import Diagram, Cluster
from diagrams.aws.compute import Fargate
from diagrams.aws.database import RDS, ElastiCache
from diagrams.aws.network import ALB, InternetGateway
from diagrams.aws.storage import S3
from diagrams.onprem.network import Internet
with Diagram("AWS Architecture - MyProject (PROD)", filename="aws_architecture", outformat="png", show=False):
internet = Internet("Users")
with Cluster("VPC: 10.0.0.0/16"):
igw = InternetGateway("IGW")
with Cluster("Public Subnet"):
alb = ALB("Public ALB")
with Cluster("Private Subnet"):
with Cluster("ECS Cluster"):
svc1 = Fargate("api")
svc2 = Fargate("worker")
db = RDS("Aurora")
cache = ElastiCache("Redis")
s3 = S3("Assets")
internet >> igw >> alb >> [svc1, svc2]
svc1 >> [db, cache, s3]
svc2 >> [db, s3]
Tell the user: