Loading...
Blog Series

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 Study

The 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.

1
Part 1 April 7, 2026 20 min read

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 Overview
2
Part 2 April 14, 2026 45 min Coming Soon

Part 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, 2026
3
Part 3 April 21, 2026 60 to 90 min Coming Soon

Part 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, 2026
4
Part 4 April 28, 2026 45 min Coming Soon

Part 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, 2026
5
Part 5 May 5, 2026 30 to 45 min Coming Soon

Part 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, 2026

The 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.

1
importMap population — no official docs on manual population for CI/CD environments
2
rsc exports — RscEntryLexicalField requirement not in Payload docs
3
RichTextCell removal — breaking change with no migration guide
4
Root layout restriction — the html/body hydration error mentioned nowhere
5
serverFunction vs serverFunctions — prop name mismatch between versions
6
ALB rule priority ordering — /_next/* must precede the default rule
7
WHERE bracket notation — REST API docs don't warn about JSON encoding failures
8
Health check matcher 200-404 — needed during Payload startup, not documented for ECS

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.