AWS deployment architecture
Place an API cluster and PostgreSQL databases inside account, VPC and subnet boundaries.

A deployment review needs to show which subnet contains each service and how requests reach the database. This fictional freight platform groups AWS resources inside an account and region, with separate application and data subnets.
Adapt the deployment
Change the account label, region and subnet names first. Each cloud-resource uses a cloudKey for its AWS service icon. Nested children place resources inside containers, and relationships connect resource IDs across those boundaries.
The instance sizes and resource properties are example configuration. Replace them with your deployment's values. This YAML draws a diagram; it does not provision AWS resources or inspect an account. Cloud import (Beta) is a separate workflow.
Template YAML
apiVersion: archdocs/v1
title: Production on AWS
layout:
algorithm: layered
direction: right
nodes:
- id: cdn
type: cloud-resource
cloudKey: aws-cloudfront-distribution
label: app.lanefold.example
displayMode: card
at:
x: -380
y: 112
properties:
- key: origin
value: api-alb
- key: WAF
value: managed rules
- key: TLS
value: "1.3"
- id: account
at:
x: 0
y: 0
type: cloud-container
containerKind: account
label: lanefold-prod (AWS account)
children:
- id: region
type: cloud-container
containerKind: region
label: us-east-1
children:
- id: vpc
type: cloud-container
containerKind: vpc
label: vpc-prod 10.20.0.0/16
children:
- id: pubA
type: cloud-container
containerKind: subnet
label: public-1a
children:
- id: alb
type: cloud-resource
cloudKey: aws-elb-loadbalancer
label: api-alb
displayMode: card
properties:
- key: scheme
value: internet-facing
- key: listener
value: HTTPS 443
- key: zones
value: 1a + 1b
- key: health
value: /healthz
- id: appA
type: cloud-container
containerKind: subnet
label: app-1a
children:
- id: eks
type: cloud-resource
cloudKey: aws-eks-cluster
label: core-api
displayMode: card
properties:
- key: version
value: "1.30"
- key: nodes
value: 6 x m6i.large
- key: pods
value: "42"
- key: scaling
value: Karpenter
- id: dataA
type: cloud-container
containerKind: subnet
label: data-1a
children:
- id: dbPrimary
type: cloud-resource
cloudKey: aws-rds-instance
label: bookings-db
displayMode: card
properties:
- key: engine
value: PostgreSQL 16
- key: class
value: db.r6g.xlarge
- key: role
value: primary
- key: storage
value: 500 GiB gp3
- id: pubB
type: cloud-container
containerKind: subnet
label: public-1b
children:
- id: bastion
type: cloud-resource
cloudKey: aws-ec2-instance
label: ops-bastion
displayMode: card
properties:
- key: type
value: t4g.small
- key: access
value: SSM only
- key: ingress
value: none
- key: AMI
value: AL2023
- id: appB
type: cloud-container
containerKind: subnet
label: app-1b
children:
- id: gateway
type: cloud-resource
cloudKey: aws-ecs-service
label: carrier-gateway
displayMode: card
properties:
- key: launch
value: Fargate
- key: tasks
value: "4"
- key: protocol
value: EDI over AS2
- key: size
value: 1 vCPU / 2 GB
- id: dataB
type: cloud-container
containerKind: subnet
label: data-1b
children:
- id: dbStandby
type: cloud-resource
cloudKey: aws-rds-instance
label: bookings-db
displayMode: card
properties:
- key: engine
value: PostgreSQL 16
- key: class
value: db.r6g.xlarge
- key: role
value: standby
- key: storage
value: 500 GiB gp3
relationships:
- from: cdn
to: alb
label: /api/*
- from: alb
to: eks
- from: eks
to: dbPrimary
label: SQL
- from: dbPrimary
to: dbStandby
label: Sync replica
style: dashed
- from: gateway
to: eks
label: gRPC