Skip to main content

Service inventory

The Web App Blueprint deploys seventeen AWS services and eight Kubernetes components into each stage, and relies on three more services in the Baseline's shared accounts. Everything below is created by the blueprint's own code unless the table says it comes from the Baseline.

How the pieces group

AWS services

ServiceWhat it does in the blueprint
EKSOne cluster per stage with a managed node group, access entries, managed add-ons and EKS Pod Identity
EC2The node group's instances, the instances Karpenter launches, and the security groups for DocumentDB, Redis and runner access
Elastic Load BalancingAn internet-facing ALB for the API and an internal one for ArgoCD, created from their Kubernetes Ingress resources
DocumentDBThe application database, encrypted, with automated backups and audit log export
ElastiCacheA Redis replication group that caches item reads, encrypted at rest and in transit
CloudFrontServes the React app over HTTPS from the private bucket, with client-side routes answered by index.html
S3A private, versioned bucket per stage for the built front end, readable only by its distribution
ACMWildcard certificates for the stage's public domain (regional and us-east-1) and its internal domain, validated through DNS
Route 53Records for the API, the front end, ArgoCD and certificate validation, written into the Baseline's public and private zones
IAMRoles for the in-cluster controllers and the application, and the cluster's OIDC provider
STSCross-account role assumption for DNS records and for reading shared parameters
SSM Parameter StoreReads the network values the Baseline publishes; publishes data store endpoints, the database password and front end ids for the next layer
Secrets ManagerGenerates the DocumentDB master password without storing it
KMSEncrypts DocumentDB storage and the password parameter
CloudWatch LogsApplication log groups with per-stage retention, EKS control plane logs and DocumentDB audit logs
EventBridgeRoutes EC2 spot interruption, rebalance and instance-state notices to Karpenter's queue
SQSOne queue per cluster, where Karpenter reads those notices and drains the affected node

Used from the Baseline

ServiceWhere it livesUse
ECRArtifacts accountThe API image repository, with immutable tags
GitHub OIDCAutomation accountShort-lived AWS credentials for every workflow, with no stored keys
Firewall ManagerSecurity accountAttaches the web application firewall policy to the API's load balancer

Kubernetes components

ComponentRole
ArgoCDSyncs the application's Helm chart from the GitOps repository into the cluster
KarpenterLaunches and removes EC2 capacity for the application pods
Cluster AutoscalerMoves the managed node group's desired size between its minimum and maximum
AWS Load Balancer ControllerTurns Ingress resources into ALBs
ExternalDNSTwo releases: one for the public zone, one for the private zone
External Secrets OperatorCopies endpoints and the database password from SSM Parameter Store into a Kubernetes Secret
Fluent BitRuns on every node and ships container logs to CloudWatch Logs
VPC CNI network policy agentEnforces the application's default-deny NetworkPolicy

Delivery tooling

The repositories are built with OpenTofu and Terragrunt, the application is packaged as a Docker image and a Helm chart, and every pipeline runs on GitHub Actions. Checkov and Trivy scan the infrastructure code in pre-commit hooks, and Trivy scans every API image before a pull request can merge.

The exact versions of all of these are on the versions page. The full catalog of services across BuiltForProd products is in AWS services used.