digraph G { newrank=true; rankdir=LR; compound=true; graph [fontname = "Handlee"]; node [fontname = "Handlee"]; edge [fontname = "Handlee"]; bgcolor=transparent; { rank=same; route53; lambda_edge; invis; acm; } lambda_edge -> apigw [ltail=cluster_cloudfront]; apigw -> mangum; mangum -> cloudwatch [ ltail=cluster_lambda; ]; s3 -> datasette [ dir=back; lhead=cluster_lambda; style=dotted; ]; lambda_edge -> route53 [ style=dotted; dir=back; label=" "; ltail=cluster_cloudfront; ]; invis [ shape=none; label=""; height=0; ]; acm -> invis [ style=dotted; arrowhead=none; ]; invis -> lambda_edge [ style=dotted; lhead=cluster_cloudfront; label=""; ]; acm [ label="AWS Cert.\nManager"; ]; route53 [ label = "Route 53"; ]; apigw [ label="API\nGateway"; ]; s3 [ shape=cylinder; label="S3"; ]; cloudwatch [ label="CloudWatch\nLogs"; ]; subgraph cluster_cloudfront { label="CloudFront"; lambda_edge [ label="Lambda@Edge\nAdd X-Forwarded-Host"; shape=none; fontsize=8; ]; }; subgraph cluster_lambda { label=Lambda; { rank=same; mangum; datasette; } mangum -> datasette; }; }