Payload CMS 3.x on AWS ECS Fargate
The Complete Production Guide
A 5-part series documenting every undocumented problem we solved deploying Payload CMS 3.x to AWS — discovered while building a live RFP demo for Chippewa County, Michigan before any contract existed.
8 Undocumented Problems Solved
- importMap population
- rsc exports
- RichTextCell removal
- Root layout restriction
- serverFunction vs serverFunctions
- ALB rule priority ordering
- WHERE bracket notation
- Health check matcher 200-404
Why This Series Exists
While building a production-ready demo platform for the Chippewa County, Michigan RFP evaluation — a fully functional municipal CMS deployed to AWS in 5 days from a public RFP document alone, before any contract existed — we ran into eight problems that were not documented anywhere. The admin UI broke silently. Rich text fields disappeared without an error. The importMap required manual population in CI/CD — something not mentioned in the official docs.
We solved every one of them in production. This series documents exactly what we found and how we fixed it — so you don't spend the hours we did.
Read the Chippewa County Case StudyThe Full Series
Five posts, one per week starting April 6. Each part builds on the previous one. Start at Part 1 and work through in order.
Part 1: Architecture Overview
Every AWS service, why it exists, and what it costs
Before touching the AWS console, understand the full architecture — ECS Fargate, ALB, Aurora PostgreSQL, Secrets Manager, CloudFront, WAF, S3, and IAM. The mental model that prevents deployment failures.
Read Part 1: Architecture OverviewPart 2: RDS Aurora PostgreSQL and Secrets Manager
Security groups, dedicated database user, encrypted credentials
Set up the data layer correctly. Security groups with source-group rules, Aurora PostgreSQL cluster, a dedicated application user, and all credentials stored in Secrets Manager — never in environment variables.
Publishing April 14, 2026Part 3: Dockerizing Payload CMS and the importMap Problem
The most common silent failure in containerized Payload deployments
The Docker build succeeds. The container starts. Rich text fields silently disappear in the admin UI. This part documents exactly why that happens and how to fix it — plus the root layout restriction that causes hydration error #418.
Publishing April 21, 2026Part 4: ALB Path-Based Routing
One load balancer, two containers, correct rule priority order
Route traffic between Payload CMS and your Astro frontend using a single ALB. The rule priority ordering that breaks the admin UI if wrong, the internal URL pattern that avoids external DNS round-trips, and the health check configuration that prevents false unhealthy states.
Publishing April 28, 2026Part 5: Lexical Rich Text on the Frontend
Complete JSON-to-HTML renderer, WHERE query format, reusable query builder
Lexical stores content as a JSON tree, not HTML. This part gives you the complete production-ready renderer for Astro, the text format bitmask explained, the WHERE query format that returns empty results silently if wrong, and a reusable query builder that handles all the edge cases.
Publishing May 5, 2026The 8 Undocumented Problems
These are the specific issues that were not documented in the official Payload CMS, Next.js, or AWS documentation. All solved in production.
Need a Team That Has Already Solved These Problems?
WAM DevTech deploys Payload CMS on AWS ECS Fargate in production. The architecture documented in this series is what we deliver — at fixed price, confirmed within 48 hours.