Gnomon › Templates › AWS architecture diagramsAWS architecture diagrams Official AWS icons, rendered offline.
AWS architecture diagrams using the official icon set, resolved from a bundled copy rather than fetched at render time. That matters more than it sounds: the usual failure mode for these diagrams is an icon URL that 404s two years later and takes the diagram with it.
When to use these Communicating a cloud design to people who recognise the icons faster than the words. Any diagram where "which managed service" is the point. When not to Logical architecture. If the design would survive a move to another cloud, draw it without vendor icons. Common mistakes Icon-heavy diagrams flatter the design. It is easy to produce something that looks considered and says nothing about failure, scaling or cost. Pair one of these with a sequence diagram of the unhappy path.
The 6 templates The starting point: a handful of services and the traffic between them.
Show the source @startuml
!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/main/dist
!include AWSPuml/AWSCommon.puml
!include AWSPuml/Compute/EC2.puml
!include AWSPuml/Database/RDS.puml
!include AWSPuml/Storage/SimpleStorageService.puml
!include AWSPuml/NetworkingContentDelivery/ElasticLoadBalancing.puml
title AWS Simple Architecture
EC2(webServer, "Web Server", "t3.medium")
RDS(database, "Database", "PostgreSQL")
SimpleStorageService(storage, "Static Assets", "S3 Bucket")
ElasticLoadBalancing(elb, "Load Balancer", "ALB")
elb --> webServer
webServer --> database
webServer --> storage
@endumlNotes and a copy button for this template
Subnets, availability zones and what is actually reachable from where.
Show the source @startuml
!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/main/dist
!include AWSPuml/AWSCommon.puml
!include AWSPuml/Groups/VPC.puml
!include AWSPuml/Groups/AvailabilityZone.puml
!include AWSPuml/Groups/PublicSubnet.puml
!include AWSPuml/Groups/PrivateSubnet.puml
!include AWSPuml/Compute/EC2.puml
!include AWSPuml/Database/RDS.puml
!include AWSPuml/NetworkingContentDelivery/ElasticLoadBalancing.puml
!include AWSPuml/NetworkingContentDelivery/VPCNATGateway.puml
title AWS VPC Architecture
VPCGroup(vpc, "Production VPC") {
AvailabilityZoneGroup(az1, "AZ-1") {
PublicSubnetGroup(public1, "Public Subnet") {
ElasticLoadBalancing(alb, "ALB", "")
VPCNATGateway(nat1, "NAT Gateway", "")
}
PrivateSubnetGroup(private1, "Private Subnet") {
EC2(app1, "App Server", "")
RDS(db1, "Primary DB", "")
}The rest of this template, and how to use it
API Gateway, Lambda, DynamoDB: the pattern most greenfield work starts from.
Show the source @startuml
!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/main/dist
!include AWSPuml/AWSCommon.puml
!include AWSPuml/Compute/Lambda.puml
!include AWSPuml/NetworkingContentDelivery/APIGateway.puml
!include AWSPuml/Database/DynamoDB.puml
!include AWSPuml/Storage/SimpleStorageService.puml
!include AWSPuml/ApplicationIntegration/SimpleQueueService.puml
!include AWSPuml/ApplicationIntegration/SimpleNotificationService.puml
!include AWSPuml/NetworkingContentDelivery/CloudFront.puml
!include AWSPuml/SecurityIdentityCompliance/Cognito.puml
title AWS Serverless Architecture
actor User as user
CloudFront(cdn, "CloudFront", "CDN")
SimpleStorageService(staticSite, "Static Website", "S3")
Cognito(auth, "Cognito", "Auth")
APIGateway(api, "API Gateway", "REST API")
Lambda(getFunc, "GET Handler", "Node.js")
Lambda(postFunc, "POST Handler", "Node.js")
Lambda(processFunc, "Processor", "Python")The rest of this template, and how to use it
Service-per-container with the plumbing between them.
Show the source @startuml
!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/main/dist
!include AWSPuml/AWSCommon.puml
!include AWSPuml/Containers/ElasticContainerService.puml
!include AWSPuml/Containers/ElasticContainerRegistry.puml
!include AWSPuml/Containers/ElasticKubernetesService.puml
!include AWSPuml/NetworkingContentDelivery/APIGateway.puml
!include AWSPuml/ApplicationIntegration/SimpleQueueService.puml
!include AWSPuml/Database/RDS.puml
!include AWSPuml/Database/ElastiCache.puml
!include AWSPuml/NetworkingContentDelivery/ElasticLoadBalancing.puml
!include AWSPuml/ManagementGovernance/CloudWatch.puml
title AWS Microservices Architecture
APIGateway(api, "API Gateway", "")
ElasticLoadBalancing(alb, "ALB", "")
ElasticKubernetesService(eks, "EKS Cluster", "") {
ElasticContainerService(userSvc, "User Service", "")
ElasticContainerService(orderSvc, "Order Service", "")
ElasticContainerService(productSvc, "Product Service", "")
ElasticContainerService(notifySvc, "Notification Service", "")
}The rest of this template, and how to use it
Ingest, store, catalogue, query.
Show the source @startuml
!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/main/dist
!include AWSPuml/AWSCommon.puml
!include AWSPuml/Storage/SimpleStorageService.puml
!include AWSPuml/Analytics/Glue.puml
!include AWSPuml/Analytics/Athena.puml
!include AWSPuml/Analytics/Redshift.puml
!include AWSPuml/Analytics/QuickSight.puml
!include AWSPuml/Analytics/KinesisDataStreams.puml
!include AWSPuml/Analytics/LakeFormation.puml
!include AWSPuml/Database/RDS.puml
title AWS Data Lake Architecture
' Data Sources
RDS(sourceDb, "Source Database", "")
KinesisDataStreams(stream, "Kinesis Stream", "Real-time")
' Data Lake
LakeFormation(lakeFormation, "Lake Formation", "Governance")
SimpleStorageService(rawZone, "Raw Zone", "Landing")
SimpleStorageService(cleanZone, "Clean Zone", "Processed")
SimpleStorageService(curatedZone, "Curated Zone", "Analytics")
The rest of this template, and how to use it
CodePipeline and friends, end to end.
Show the source @startuml
!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/main/dist
!include AWSPuml/AWSCommon.puml
!include AWSPuml/DeveloperTools/CodeCommit.puml
!include AWSPuml/DeveloperTools/CodeBuild.puml
!include AWSPuml/DeveloperTools/CodeDeploy.puml
!include AWSPuml/DeveloperTools/CodePipeline.puml
!include AWSPuml/Containers/ElasticContainerRegistry.puml
!include AWSPuml/Containers/ElasticContainerService.puml
!include AWSPuml/Storage/SimpleStorageService.puml
!include AWSPuml/ApplicationIntegration/SimpleNotificationService.puml
title AWS CI/CD Pipeline
actor Developer as dev
CodeCommit(repo, "CodeCommit", "Source")
CodePipeline(pipeline, "CodePipeline", "Orchestration")
CodeBuild(build, "CodeBuild", "Build & Test")
ElasticContainerRegistry(registry, "ECR", "Container Registry")
SimpleStorageService(artifacts, "S3", "Artifacts")
CodeDeploy(deploy, "CodeDeploy", "Deployment")
ElasticContainerService(staging, "Staging", "ECS")
ElasticContainerService(production, "Production", "ECS")The rest of this template, and how to use it
Render these offline Every template here ships in Gnomon and renders on your machine, with no account and nothing sent to a server. The browser editor is free and needs no install.
Get Gnomon Open the browser editor