Skip to content

Instantly share code, notes, and snippets.

@monkut
Created March 12, 2026 02:56
Show Gist options
  • Select an option

  • Save monkut/c8f148099cfc97345bc8990d59f8cb7a to your computer and use it in GitHub Desktop.

Select an option

Save monkut/c8f148099cfc97345bc8990d59f8cb7a to your computer and use it in GitHub Desktop.
AWS Architecture Diagrams — Graphviz DOT source (editable)
digraph {
graph [bb="0,0,1280,1020",
bgcolor=white,
dpi=200,
fontcolor="#2D3436",
fontname="Noto Sans JP",
fontsize=18,
label="",
nodesep=0.6,
pad=0.8,
rankdir=LR,
ranksep=0.9,
splines=ortho
];
node [fixedsize=true,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
height=1.4,
imagescale=true,
label="\N",
labelloc=b,
shape=box,
style=rounded,
width=1.4
];
edge [color="#7B8894"];
subgraph "cluster_AWS Cloud" {
graph [bb="183,8,1272,1012",
bgcolor="#fef9ef",
fontcolor="#232f3e",
fontname="Noto Sans JP Bold",
fontsize=16,
label="AWS Cloud",
labeljust=l,
lheight=0.25,
lp="234.5,999",
lwidth=1.21,
pencolor="#ff9900",
penwidth=2.5,
rankdir=LR,
shape=box,
style=rounded
];
subgraph "cluster_VPC (10.10.0.0/16)" {
graph [bb="191,16,936,978",
bgcolor="#e8f5e9",
fontcolor="#2e7d32",
fontname="Noto Sans JP",
fontsize=13,
label="VPC (10.10.0.0/16)",
labeljust=l,
lheight=0.19,
lp="254.5,967",
lwidth=1.54,
pencolor="#2e7d32",
penwidth=2,
rankdir=LR,
shape=box,
style=rounded
];
subgraph "cluster_Private Subnets (AZ0/AZ1)" {
graph [bb="782,537,928,948",
bgcolor="#e3f2fd50",
fontcolor="#1565c0",
fontname="Noto Sans JP",
fontsize=11,
label="Private Subnets (AZ0/AZ1)",
labeljust=l,
lheight=0.17,
lp="855,938",
lwidth=1.81,
pencolor="#1565c0",
penwidth=1.5,
rankdir=LR,
shape=box,
style="dashed,rounded"
];
f71fee4d6cb74c5aa8a0ae52102d86ae [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/network/vpc.png",
label="S3 Gateway
Endpoint",
pos="854.5,628",
shape=none,
width=1.4028];
"54b55e915d9c48c5b499de6587586795" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/network/vpc.png",
label="Bedrock Runtime
Interface Endpoint",
pos="854.5,837",
shape=none,
width=1.4028];
}
subgraph "cluster_Public Subnet (AZ0)" {
graph [bb="199,24,921,529",
bgcolor="#e8f5e950",
fontcolor="#43a047",
fontname="Noto Sans JP",
fontsize=11,
label="Public Subnet (AZ0)",
labeljust=l,
lheight=0.17,
lp="256.5,519",
lwidth=1.38,
pencolor="#43a047",
penwidth=1.5,
rankdir=LR,
shape=box,
style="dashed,rounded"
];
subgraph "cluster_Docker Compose" {
graph [bb="367,32,913,501",
bgcolor="#e3f2fd",
fontcolor="#0288d1",
fontname="Noto Sans JP Bold",
fontsize=13,
label="Docker Compose",
labeljust=l,
lheight=0.19,
lp="430.5,490",
lwidth=1.54,
pencolor="#0288d1",
penwidth=2,
rankdir=LR,
shape=box,
style=rounded
];
"051e820b5aae49a8a79a2cddc9128c9a" [height=2.6944,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/onprem/network/nginx.png",
label="Nginx + React Frontend
(Dockerfile.frontend)
HTTPS:443",
pos="425.5,255",
shape=none,
width=1.4028];
"06b79064d9034ca88b0752f16ddedeb3" [height=2.6944,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/onprem/container/docker.png",
label="Django Backend
(Dockerfile.backend)
Gunicorn :8000",
pos="593.5,137",
shape=none,
width=1.4028];
"051e820b5aae49a8a79a2cddc9128c9a" -> "06b79064d9034ca88b0752f16ddedeb3" [color="#0288d1",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,542.81,196 476.36,196 476.36,196 532.81,196 532.81,196"];
"165374dfc8a84bedb14ad2b65e75a71b" [height=2.6944,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/onprem/container/docker.png",
label="WebSocket Server
(ws-server.py)
asyncio :8001",
pos="593.5,374",
shape=none,
width=1.4028];
"051e820b5aae49a8a79a2cddc9128c9a" -> "165374dfc8a84bedb14ad2b65e75a71b" [color="#0288d1",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,542.81,314.5 476.36,314.5 476.36,314.5 532.81,314.5 532.81,314.5"];
"1e558bddd4cc4aa588f7ce95f014cbb0" [height=2.6944,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/onprem/database/postgresql.png",
label="PostgreSQL 17 + pgvector
(pgvector/pgvector:pg17)
Port: 5432",
pos="854.5,137",
shape=none,
width=1.4028];
"06b79064d9034ca88b0752f16ddedeb3" -> "1e558bddd4cc4aa588f7ce95f014cbb0" [color="#1565c0",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
label=SQL,
lp="709,144",
pos="e,803.56,137 644.13,137 644.13,137 793.56,137 793.56,137"];
}
"042cdd4a9a48423992423004b085f2a7" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/compute/ec2.png",
label="EC2 (t3.large)
Elastic IP",
pos="257.5,255",
shape=none,
width=1.4028];
"042cdd4a9a48423992423004b085f2a7" -> "051e820b5aae49a8a79a2cddc9128c9a" [color="#0288d1",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,374.81,255 308.36,255 308.36,255 364.81,255 364.81,255"];
}
"165374dfc8a84bedb14ad2b65e75a71b" -> "54b55e915d9c48c5b499de6587586795" [color="#00695c",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
label="Streaming
Chat",
lp="709,619",
pos="e,803.96,837 594,471.06 594,606.83 594,837 594,837 594,837 793.96,837 793.96,837"];
}
subgraph "cluster_AWS Services" {
graph [bb="979,119,1264,741",
bgcolor="#fff3e0",
fontcolor="#e65100",
fontname="Noto Sans JP",
fontsize=13,
label="AWS Services",
labeljust=l,
lheight=0.19,
lp="1027.5,730",
lwidth=1.12,
pencolor="#e65100",
penwidth=1.5,
rankdir=LR,
shape=box,
style=rounded
];
bb47dc27a1534d2ab6cf30a0952d2631 [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/storage/simple-storage-service-s3.png",
label="S3
File Upload Storage",
pos="1037.5,628",
shape=none,
width=1.4028];
f51fce2cfdb642cbaa5c6403d252b54c [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/storage/simple-storage-service-s3.png",
label="S3
KB Documents",
pos="1205.5,419",
shape=none,
width=1.4028];
"3a1719775f64435581363c4426a5c451" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/storage/simple-storage-service-s3.png",
label="S3 Vectors
Vector Store",
pos="1205.5,210",
shape=none,
width=1.4028];
"0b23e3fd80f44d5f829b33e1f957a647" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/ml/bedrock.png",
label="Amazon Bedrock
Knowledge Base",
pos="1037.5,419",
shape=none,
width=1.4028];
"0b23e3fd80f44d5f829b33e1f957a647" -> f51fce2cfdb642cbaa5c6403d252b54c [color="#00695c",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,1154.8,419 1088.4,419 1088.4,419 1144.8,419 1144.8,419",
style=dashed];
"0b23e3fd80f44d5f829b33e1f957a647" -> "3a1719775f64435581363c4426a5c451" [color="#00695c",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,1206,293.1 1038,335.9 1038,323.35 1038,314.5 1038,314.5 1038,314.5 1206,314.5 1206,314.5 1206,314.5 1206,303.1 1206,303.1",
style=dashed];
"412beee3e0de400f989b82ee99191586" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/ml/bedrock.png",
label="Bedrock Runtime
Model Invocation",
pos="1205.5,628",
shape=none,
width=1.4028];
"0b23e3fd80f44d5f829b33e1f957a647" -> "412beee3e0de400f989b82ee99191586" [color="#00695c",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,1223,544.8 1038,502.39 1038,510.81 1038,516.33 1038,516.33 1038,516.33 1223,516.33 1223,516.33 1223,516.33 1223,534.8 1223,534.8",
style=dashed];
acc4a6f2d90c4dc3a737c1c3c354f97a [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/management/cloudwatch.png",
label="CloudWatch
Logs",
pos="1037.5,210",
shape=none,
width=1.4028];
}
f71fee4d6cb74c5aa8a0ae52102d86ae -> bb47dc27a1534d2ab6cf30a0952d2631 [color="#2e7d32",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,986.8,628 905.48,628 905.48,628 976.8,628 976.8,628"];
f71fee4d6cb74c5aa8a0ae52102d86ae -> f51fce2cfdb642cbaa5c6403d252b54c [color="#2e7d32",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,1189,502.2 855,544.61 855,536.19 855,530.67 855,530.67 855,530.67 1189,530.67 1189,530.67 1189,530.67 1189,512.2 1189,512.2"];
"54b55e915d9c48c5b499de6587586795" -> "412beee3e0de400f989b82ee99191586" [color="#00695c",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,1206,711.2 905.24,837 1002.6,837 1206,837 1206,837 1206,837 1206,721.2 1206,721.2"];
}
efdf3b4ea3a3419aa27fb05c29696286 [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/onprem/client/client.png",
label="User
(Browser)",
pos="50.5,255",
shape=none,
width=1.4028];
efdf3b4ea3a3419aa27fb05c29696286 -> "042cdd4a9a48423992423004b085f2a7" [color="#e65100",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
label=HTTPS,
lp="154,262",
pos="e,206.67,255 101.14,255 101.14,255 196.67,255 196.67,255",
style=bold];
}
digraph {
graph [bb="0,0,4282.7,1606",
bgcolor=white,
dpi=200,
fontcolor="#2D3436",
fontname="Noto Sans JP",
fontsize=18,
label="",
nodesep=0.4,
pad=0.8,
rankdir=LR,
ranksep=1.4,
ratio=fill,
size="24,9!",
splines=polyline
];
node [fixedsize=true,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
height=1.4,
imagescale=true,
label="\N",
labelloc=b,
shape=box,
style=rounded,
width=1.4
];
edge [color="#7B8894"];
subgraph "cluster_AWS Cloud" {
graph [bb="940.2,8,4249.5,1598",
bgcolor="#fef9ef",
fontcolor="#232f3e",
fontname="Noto Sans JP Bold",
fontsize=16,
label="AWS Cloud",
labeljust=l,
lheight=0.25,
lp="991.7,1585",
lwidth=1.21,
pencolor="#ff9900",
penwidth=2.5,
rankdir=LR,
shape=box,
style=rounded
];
subgraph "cluster_ECS / Batch Compute" {
graph [bb="973.33,16,3371.5,247",
bgcolor="#e8eaf6",
fontcolor="#1a237e",
fontname="Noto Sans JP Bold",
fontsize=12,
label="ECS / Batch Compute",
labeljust=l,
lheight=0.18,
lp="1044.3,236.5",
lwidth=1.75,
pencolor="#3949ab",
penwidth=2,
rankdir=LR,
shape=box,
style="dashed,rounded"
];
a1c2e8c8696940a881db6c476f116e8a [height=2.6944,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/network/elastic-load-balancing.png",
label="ALB
HTTP + WebSocket
(persistent)",
pos="1215.5,121",
shape=none,
width=1.4028];
a54cf6a4bc704170b5cfb4343323c737 [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/compute/elastic-container-service.png",
label="Fargate (ECS)
Django Backend",
pos="2060.5,135",
shape=none,
width=1.4028];
a1c2e8c8696940a881db6c476f116e8a -> a54cf6a4bc704170b5cfb4343323c737 [color="#1a237e",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,2010,134.18 1266.1,121.82 1412.4,124.25 1841.6,131.38 2000,134.01"];
b4348aa2670b41f48c8f77b58c0a305d [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/compute/batch.png",
label="AWS Batch
Heavy Tasks",
pos="3129.5,135",
shape=none,
width=1.4028];
a54cf6a4bc704170b5cfb4343323c737 -> b4348aa2670b41f48c8f77b58c0a305d [color="#1a237e",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,3078.9,135 2111.2,135 2286.8,135 2878.1,135 3068.8,135",
style=dashed];
}
subgraph "cluster_VPC — Private Subnets (Multi-AZ)" {
graph [bb="2886.9,255,4216.4,516",
bgcolor="#e8f5e9",
fontcolor="#2e7d32",
fontname="Noto Sans JP",
fontsize=13,
label="VPC — Private Subnets (Multi-AZ)",
labeljust=l,
lheight=0.19,
lp="2995.9,505",
lwidth=2.81,
pencolor="#2e7d32",
penwidth=2,
rankdir=LR,
shape=box,
style=rounded
];
"2290ab945d3448fa800bb4e2fd81f3b5" [height=3.0972,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/database/aurora.png",
label="Aurora PostgreSQL
Serverless v2
pgvector + Apache AGE
0.5-128 ACU | Multi-AZ",
pos="3129.5,374",
shape=none,
width=1.4028];
"06532e1cb7e54768bbf330bbbff2a02f" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/security/secrets-manager.png",
label="Secrets Manager
KMS Encryption",
pos="3974.5,374",
shape=none,
width=1.4028];
"2290ab945d3448fa800bb4e2fd81f3b5" -> "06532e1cb7e54768bbf330bbbff2a02f" [color="#ad1457",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,3924,374 3180.1,374 3326.4,374 3755.6,374 3914,374"];
}
subgraph "cluster_AWS Managed Services" {
graph [bb="2886.9,524,4216.4,1508",
bgcolor="#fff3e0",
fontcolor="#e65100",
fontname="Noto Sans JP",
fontsize=13,
label="AWS Managed Services",
labeljust=l,
lheight=0.19,
lp="2966.9,1497",
lwidth=2.00,
pencolor="#e65100",
penwidth=1.5,
rankdir=LR,
shape=box,
style=rounded
];
"3a75142d0ead4755b83a89c313a31e74" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/storage/simple-storage-service-s3.png",
label="S3
File Upload",
pos="3129.5,1395",
shape=none,
width=1.4028];
"59ba3828ea35449eb1e9f2b16bab6636" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/storage/simple-storage-service-s3.png",
label="S3
KB Documents",
pos="3974.5,936",
shape=none,
width=1.4028];
"62c72b01cc4b477f9b8737bf32836bb2" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/storage/simple-storage-service-s3.png",
label="S3
App Source (zip)",
pos="3129.5,1200",
shape=none,
width=1.4028];
"9e5bc7e699534d09bb77300451635489" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/ml/bedrock.png",
label="Bedrock KB
(pgvector in RDS)",
pos="3129.5,1005",
shape=none,
width=1.4028];
"9e5bc7e699534d09bb77300451635489" -> "59ba3828ea35449eb1e9f2b16bab6636" [color="#00695c",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,3924,940.05 3180.1,1000.9 3326.4,988.97 3755.6,953.83 3914,940.87",
style=dashed];
"01a96b0e31eb45d990cbd9743783afbe" [height=1.9028,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/ml/bedrock.png",
label="Bedrock Runtime",
pos="3974.5,1117",
shape=none,
width=1.4028];
"9e5bc7e699534d09bb77300451635489" -> "01a96b0e31eb45d990cbd9743783afbe" [color="#00695c",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,3924,1110.4 3180.1,1011.6 3326.4,1031 3755.6,1088.1 3914,1109.1",
style=dashed];
af7618fe8f604ebcbb68c7f2db48821e [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/integration/eventbridge.png",
label="EventBridge
Scheduler",
pos="3129.5,810",
shape=none,
width=1.4028];
dc68f25e338744b196bc78d255a7e412 [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/aws/management/cloudwatch.png",
label="CloudWatch
Logs (14d)",
pos="3129.5,615",
shape=none,
width=1.4028];
}
a54cf6a4bc704170b5cfb4343323c737 -> "2290ab945d3448fa800bb4e2fd81f3b5" [color="#1565c0",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
label=SQL,
lp="2594.5,261",
pos="e,3078.9,362.87 2111.2,146.13 2286.9,185.49 2878.7,318.04 3069,360.67"];
a54cf6a4bc704170b5cfb4343323c737 -> "3a75142d0ead4755b83a89c313a31e74" [color="#2e7d32",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,3078.8,1321.7 2111.3,180.53 2248.4,306.08 2622,648 2622,648 2622,648 2941.6,1119.3 3073.1,1313.2"];
"59ba3828ea35449eb1e9f2b16bab6636" -> a54cf6a4bc704170b5cfb4343323c737 [color="#2e7d32",
constraint=false,
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
label="S3 event
auto-sync",
lp="3129.5,1507",
pos="e,2111.4,184.21 3923.8,971.27 3751.1,1093.7 3188,1493 3188,1493 3188,1493 3071,1493 3071,1493 3071,1493 2622,661 2622,661 2622,661 \
2567,634 2567,634 2567,634 2251,322.01 2118.7,191.42",
style=dashed];
"9e5bc7e699534d09bb77300451635489" -> "2290ab945d3448fa800bb4e2fd81f3b5" [color="#00695c",
constraint=false,
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
pos="e,3078.9,388.82 3078.9,994.51 2944.8,966.75 2591,893.5 2591,893.5 2591,893.5 2591,531.5 2591,531.5 2591,531.5 2928.4,432.82 3069.1,\
391.68",
style=dashed];
af7618fe8f604ebcbb68c7f2db48821e -> a54cf6a4bc704170b5cfb4343323c737 [color="#e65100",
constraint=false,
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
label=schedule,
lp="2594.5,479",
pos="e,2111.2,166.43 3078.9,778.58 2902.8,667.21 2309,291.57 2119.9,171.93",
style=dashed];
}
"67dfc58e9e054df8b6abdde6abda69e3" [height=2.3056,
image="/home/shane/.pyenv/versions/3.14.2/lib/python3.14/site-packages/resources/onprem/client/client.png",
label="User
(Browser)",
pos="209.53,121",
shape=none,
width=1.4028];
"67dfc58e9e054df8b6abdde6abda69e3" -> a1c2e8c8696940a881db6c476f116e8a [color="#1a237e",
dir=forward,
fontcolor="#2D3436",
fontname="Sans-Serif",
fontsize=13,
label=HTTPS,
lp="712.53,128",
pos="e,1164.7,121 260.32,121 428.09,121 972.43,121 1154.5,121",
style=bold];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment