ArchDocs
Start free
All templates

AWS deployment architecture

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

Cloud architecture canvas with AWS services grouped inside account, region, VPC, and subnet containers.
Reference diagram from Archdocs. See the YAML below for this template's contents.

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