Best CMS Platforms For Websites Hosted on AWS

5/5 - (6 votes)

For most websites hosted on AWS, WordPress on an Amazon Lightsail blueprint is the fastest way to a working site, and it starts at $7 a month for a 1 GB server. Teams with developers usually do better with a headless CMS, either Strapi, Payload or Directus on their own AWS servers, or Contentful or Sanity feeding a front end that AWS Amplify Hosting builds and serves. Drupal fits sites with many editors and strict roles, Ghost fits publishers, and Wagtail fits teams that already write Python.

The real question is who will patch the server at 2 a.m. A Lightsail blueprint gives you a running CMS in minutes, but you own every update after that, while a SaaS CMS with Amplify moves most of that work off your plate and charges you for it in API limits and seat prices.

Eight CMS Options Matched to an AWS Hosting Path

The table pairs each CMS with the AWS service it most often runs on and the lowest published price for the CMS itself. AWS charges for the servers sit on top of the CMS price, and we work those out further down.

CMSTypeUsual AWS homeOne-click on AWSCMS price to start
WordPressTraditional, PHPLightsail or EC2Yes, Lightsail blueprint (two versions plus Multisite)Free software
DrupalTraditional, PHPLightsail or EC2 with RDSYes, Lightsail blueprint by BitnamiFree software
GhostPublishing, Node.jsLightsail or EC2Yes, Lightsail blueprint by BitnamiFree to self-host
WagtailTraditional, Python/DjangoEC2 or Lightsail with S3 for mediaNo blueprint; Django blueprint as a baseFree software
StrapiHeadless, Node.jsEC2 with RDS and S3NoOpen source (MIT); Strapi Cloud from $35
PayloadHeadless, Next.jsAny Node host; Amplify supports Next.jsNoOpen source (MIT)
DirectusHeadless, database-firstEC2 or Lightsail with RDSNoFree self-host under $5M revenue; Cloud from $99
Contentful / SanityHeadless SaaSFront end on Amplify HostingNot needed (SaaS)Free plans; Contentful Basic $300, Sanity Growth $15 per seat

Server CMS or Headless CMS: The First AWS Decision

A traditional CMS such as WordPress, Drupal or Ghost stores content and renders pages on the same server. On AWS, that server is usually a Lightsail instance or an EC2 instance, and you patch the operating system, the runtime and the CMS yourself. Backups are your job too, unless you pay for a managed database that takes snapshots for you.

A headless CMS only stores content and serves it through an API, so the pages come from a separate front end, often built with Next.js, Nuxt, Astro or Gatsby. Amplify Hosting builds that front end from a Git branch and serves it on the AWS content delivery network. It supports server-side rendering for Next.js and Nuxt, Astro and SvelteKit run through community adapters, and static generators such as Hugo, Jekyll, Gatsby and Eleventy work as well.

The link between the two halves is a webhook. Amplify can create an incoming webhook URL for any branch, and once you paste that URL into Contentful, Sanity or any other CMS, every publish event starts a fresh build without a Git commit.

Smiling web team planning a CMS setup for an AWS-hosted website
Photo: Pexels

WordPress on Lightsail, the Default for Most Business Sites

Amazon Lightsail offers four WordPress blueprints: AWS builds WordPress and WordPress Multisite, and Bitnami packages the other two. The AWS-built WordPress blueprint ships with PHP, MariaDB, phpMyAdmin and WordPress, and its built-in Lightsail setup adds a Let’s Encrypt HTTPS certificate in a few clicks.

Amazon Lightsail home page with WordPress and other blueprints
Screenshot: aws.amazon.com

The blueprint also pre-installs a batch of plugins: Jetpack, All in One SEO, WP Mail, Google Analytics for WordPress, All-in-One WP Migration and Backup, AMP and W3 Total Cache. Remove the ones you will not use before launch, because every idle plugin is one more thing to update and one more door for an attacker.

Multisite is the blueprint to pick when one team runs many sites. One install hosts several sites on their own domains, shares themes and plugins across them, and pushes updates to all of them at once, which suits agencies and universities. Our list of SEO-friendly hosting services compares Lightsail with managed WordPress hosts if you are still weighing a non-AWS option.

Lightsail prices are flat. The smallest Linux bundle with a public IPv4 address costs $5 a month for 0.5 GB of memory and 20 GB of SSD storage with 1 TB of transfer, and the $7 bundle doubles the memory to 1 GB and the storage to 40 GB. The $12 bundle gives 2 GB of memory and 60 GB of storage with 3 TB of transfer. IPv6-only bundles cost less, starting at $3.50, but some visitors and outside services still need IPv4.

Amazon Lightsail Linux bundle prices with IPv4 and IPv6-only addresses

We would not run a business WordPress site on the 0.5 GB bundle, since PHP and MariaDB have to share that memory. The 2 GB bundle at $12 leaves room for WooCommerce or a heavier theme. A Lightsail managed database starts at $15 a month for 1 GB of memory and 40 GB of storage, and moving MySQL there lets you resize or replace the web server without touching your content.

When WordPress Belongs on EC2

EC2 gives you more control and more chores, and installing WordPress by hand on Amazon Linux 2023 takes the following steps.

  1. Launch an AL2023 instance and attach an Elastic IP, because without one the public DNS name changes when the instance restarts and the blog breaks.
  2. Install Apache, PHP and the MariaDB 10.5 server with dnf, then secure the database before anything else.
  3. Create a WordPress database and user, copy wp-config-sample.php to wp-config.php, and replace every authentication key and salt with fresh values.
  4. Set AllowOverride All in httpd.conf so permalinks work, then fix file ownership for the apache user.
  5. Stop Apache if you pause before running the installer, since anyone who finds the URL can claim the site until setup finishes.

Create an AMI backup before adding themes or plugins, and move the database to Amazon RDS as the site grows. Security patches for the operating system and for WordPress stay your job for as long as the instance runs. Choose EC2 when you need autoscaling groups, private subnets or a custom PHP build, and choose Lightsail when you need a site live this week.

WordPress Images in AWS Marketplace

AWS Marketplace lists ready-made WordPress machine images, and the best known is WordPress Certified by Bitnami and Automattic. A Marketplace image launches on EC2 with the whole stack already installed. Read the listing’s pricing tab before you launch, because some images add a software fee to the EC2 hourly rate, and confirm how the vendor ships security updates.

Whichever route you take, keep the SEO layer light. Our guide to WordPress AI SEO plugins shows which plugins earn their place on a lean server.

WordPress.org home page
Screenshot: wordpress.org

The software itself is a free download from WordPress.org, so your real costs are the AWS bundle, any premium plugins and the hours your team spends on updates.

Headless CMS Choices You Run on Your Own AWS Servers

The next three are open source or source-available, so you host them on EC2, Lightsail or a container service and you choose the database. They suit teams with at least one developer who is happy to run Node.js in production and answer the pager when it breaks.

Strapi on EC2, RDS and S3

Strapi is an MIT-licensed headless CMS built on Node.js, and its standard AWS setup is well documented. EC2 runs the Strapi server while Amazon RDS holds the data in PostgreSQL or MySQL. Uploaded media goes to S3 through the official @strapi/provider-upload-aws-s3 package, and Strapi’s demo blog puts CloudFront in front of that bucket to serve images worldwide.

Keep the database off the EC2 instance. If the instance dies, you replace it and point the new one at RDS, and your content survives untouched. Strapi Cloud is the hosted alternative, with Starter at $35 a month per project, Pro at $90 and Business at $450, so teams that want Strapi without running servers can start there and move to AWS later.

Payload Inside a Next.js App

Payload CMS home page
Screenshot: payloadcms.com

Payload is an MIT-licensed headless CMS with a React admin panel. Payload says it is the first Next.js-native CMS and that it installs directly in your existing /app folder. It officially supports MongoDB through Mongoose, while Postgres and SQLite run through Drizzle.

On AWS, that design means your CMS and your site can ship as one Next.js app. Amplify Hosting supports Next.js server-side rendering, which makes it a natural target to test, and Postgres on Amazon RDS is the safer database there because a serverless host cannot keep a local SQLite file between requests. Teams that prefer long-running servers can deploy the same app to EC2 or Lightsail behind NGINX.

Directus on Top of an Existing Database

Directus data platform home page
Screenshot: directus.com

Directus wraps a SQL database with an admin app and APIs, which makes it useful when the data already lives in an RDS database and editors need a clean screen to manage it. Self-hosting is free for organizations with under $5 million in yearly revenue and fewer than 50 employees.

Directus Cloud Core costs $99 billed monthly or $89 a month billed yearly, and it includes 3 seats and 25 collections plus up to 5 flows. The Team plan costs more and adds 10 SSO seats. Larger firms that self-host on AWS should ask Directus which paid license applies to them before they go live.

Contentful or Sanity With a Front End on AWS Amplify

A SaaS headless CMS removes the CMS server from your AWS account entirely. Content lives with the vendor and AWS only hosts the website, which is often the calmest setup for a marketing team without a full-time DevOps person.

Contentful Plans and Limits

Contentful has a free plan with 5 users, 4 roles, 2 locales, 10,000 records, 25 content types, 1 million API calls a month and 0.1 TB of CDN bandwidth. The Basic plan costs $300 a month and raises the limits to 20 users, 4 locales, 2 million API calls and 0.75 TB of bandwidth, while Premium is custom-priced and billed yearly.

Watch the API call limit if your front end renders pages on request. A static build calls the API once per page per build, but a server-rendered page can call it on every single visit.

Sanity Plans and Limits

Sanity content operating system home page
Screenshot: sanity.io

Sanity is free for up to 20 seats, 10,000 documents, 250,000 API requests and 1 million API CDN requests a month, with 2 public datasets. Growth costs $15 per seat per month and allows up to 50 seats and 25,000 documents, with private datasets and pay-as-you-go usage above the quotas.

A five-person content team on Growth pays $75 a month, a quarter of the price of Contentful Basic. Contentful’s free plan has more API headroom, though, and some small teams never need to upgrade at all.

Entry paid plan prices for Strapi Cloud, Sanity, Directus Cloud and Contentful

Wiring Content Changes to Amplify Builds

These steps assume the front end already runs on AWS Amplify:

AWS Amplify home page
Screenshot: aws.amazon.com
  1. Open the Amplify console and choose your app.
  2. In the navigation pane, choose Hosting, then Build settings.
  3. Scroll to Incoming webhooks and choose Create webhook.
  4. Name it, pick the branch to build (usually main), and choose Create webhook.
  5. Copy the webhook URL into the webhook settings of Contentful or Sanity, and set it to fire on publish and unpublish.
  6. Publish a test entry and watch a new build start in the Amplify console.

Amplify charges $0.01 per build minute on the standard build instance, $0.15 per GB of data transfer out and $0.023 per GB-month of CDN storage. Server-side rendering adds $0.30 per million requests and $0.20 per GB-hour of request time. The Free Tier covers 1,000 build minutes, 5 GB of storage, 15 GB of transfer and 500,000 SSR requests a month for 12 months. New accounts opened on or after July 15, 2025 can also get up to $200 in Free Tier credits.

Drupal for Large Teams With Strict Permissions

Drupal is the CMS to consider when dozens of editors work through approval steps on content types with many fields. Lightsail offers a Drupal blueprint packaged by Bitnami, and Drupal brings thousands of free add-on modules along with REST, JSON and SOAP integration.

Drupal 11 needs PHP 8.3, and for the database it needs at least MySQL 8.0, MariaDB 10.6, PostgreSQL 16 or SQLite 3.45. On AWS, that maps cleanly to Amazon RDS for MySQL or PostgreSQL. Check the engine version you pick in RDS against those minimums before you migrate an older Drupal site.

Drupal asks more of your developers than WordPress does, so budget for someone who knows Composer and Drupal’s configuration export, because a Lightsail blueprint will not do that work for you.

Ghost for Publishers, Newsletters and Paid Memberships

Ghost publishing platform home page
Screenshot: ghost.org

Ghost is a Node.js publishing platform for blogs and news sites, and Lightsail has a Ghost blueprint packaged by Bitnami. A manual install on EC2 needs Ubuntu 22.04, 24.04 or 26.04, NGINX 1.9.5 or later, a supported Node.js version, MySQL 8.0 or 8.4, systemd and at least 1 GB of memory.

That memory floor rules out the $5 Lightsail bundle and points to the $7 bundle as the smallest fit. Point your domain’s A record at the server before running Ghost-CLI, because the installer sets up SSL during the install. One detail trips people up: Ghost-CLI installs do not support Ghost’s web analytics. For analytics or a fully self-hosted ActivityPub service, use Ghost’s Docker Compose install method.

Wagtail for Python and Django Teams

Wagtail CMS home page
Screenshot: wagtail.org

Wagtail is a CMS built on Django that runs on modern Linux servers using Django’s own deployment setup, so an EC2 instance or a Lightsail Django blueprint makes a fair base. Wagtail fits teams that already run Python services on AWS and want the CMS in the same codebase.

Media storage needs the most care, since Wagtail stores uploads on local disk by default. To move them to S3, you configure django-storages and set AWS_S3_FILE_OVERWRITE to False so duplicate filenames do not overwrite each other. The app server still reads original images from S3 whenever it creates a new rendition, so offloading media does not remove that load from your instance.

The wagtail-storages package from Torchbox covers private documents on S3. It updates S3 object ACLs when a document’s privacy setting changes, sends private files through signed URLs and can purge CloudFront when a file changes, so sites with gated PDFs should add it from day one.

Monthly AWS Bills for Five Common CMS Setups

We priced five setups using AWS list prices with no Free Tier applied, and each line shows the inputs so you can swap in your own numbers.

SetupAWS partsMonthly cost
Ghost or WordPress blogOne Lightsail bundle with 1 GB memory ($7)$7.00
Contentful Free + static site on Amplify300 build minutes ($3.00) + 5 GB storage ($0.115) + 100 GB transfer ($15.00)$18.12
WordPress business siteLightsail 2 GB bundle ($12) + 1 GB managed database ($15)$27.00
Strapi + Amplify front endLightsail 2 GB bundle ($12) + managed database ($15) + the Amplify site above ($18.12)$45.12
WordPress with redundancyTwo Lightsail 4 GB bundles ($48) + load balancer ($18) + 2 GB high-availability database ($60)$126.00
Worked monthly AWS cost for five CMS setups on Lightsail and Amplify

The redundant WordPress setup still needs shared storage for uploads, such as S3 with an offload plugin, and that cost is not in the table. The Amplify figure assumes a static build, and a server-rendered front end adds request and duration charges that grow with traffic.

The domain sits outside all of these bills. Our list of domain name registrars for small businesses covers renewal prices, which often matter more over five years than the server bill.

Five Questions That Point to the Right CMS on AWS

Work through these in order and stop at the first clear yes.

  1. Do you have no developer and need a site this month? Use the WordPress blueprint on a 2 GB Lightsail bundle with a managed database.
  2. Is the site mainly articles, newsletters or paid members? Use Ghost on Lightsail, or Ghost’s Docker install if you need its analytics.
  3. Does your team already ship a Next.js or Nuxt front end? Use Contentful or Sanity with Amplify if you want no CMS server, or Payload or Strapi if the CMS must live inside your own AWS account.
  4. Is your content already in a SQL database on RDS? Put Directus on top of it.
  5. Do you have complex roles, workflows or a Python stack? Use Drupal for the first case and Wagtail for the second.

Content plans matter as much as the platform. Our guide to blogging platforms for businesses and our business blogging statistics cover how often companies publish, which affects build minutes and API calls on a headless setup.

Questions Teams Ask Before Putting a CMS on AWS

Is Lightsail good enough for a WordPress site with real traffic?

Yes, for many business sites. General purpose bundles go up to 8 GB of memory for $44 a month with 5 TB of transfer, and you can add an $18 load balancer and a high-availability database when traffic grows, moving to EC2 only once you need autoscaling or private networking.

Can AWS Amplify host WordPress?

Amplify Hosting is built for JavaScript front ends and static sites, so the usual pattern is a front end on Amplify that pulls content from the WordPress REST API, with WordPress itself running on Lightsail or EC2.

Which headless CMS is cheapest to run on AWS?

Self-hosted Strapi and Payload cost nothing in license fees, and Directus is free for qualifying small firms, so you pay only for AWS servers. Our worked example puts Strapi with an Amplify front end at about $45 a month.

Does the CMS I pick affect SEO on AWS?

The CMS controls titles, URLs, schema and sitemaps, while your AWS setup controls speed and uptime. Our Google AI Overviews SEO guide covers the page-level work that applies to every CMS here.

Do I need a load balancer for a small CMS site?

No. A single Lightsail instance with a static IP serves a small site well, and a load balancer only matters once you run two or more web servers, at $18 a month on Lightsail.

Which CMS I Would Put on AWS for Each Kind of Team

For a small business with no developer, I would launch the WordPress blueprint on the $12 Lightsail bundle and add the $15 managed database on day one, because that extra $15 buys the freedom to rebuild the server without losing a single post.

For a product team that already writes Next.js, I would start with Sanity on the free plan and an Amplify site wired to an incoming webhook. If legal or data rules require content to stay in your own AWS account, switch the CMS to Payload with Postgres on RDS and keep the same front end.

For newsrooms and newsletter writers, Ghost on Lightsail is the cleanest fit. For universities and public bodies with layered permissions, Drupal on EC2 with RDS is worth the extra developer time. If you are still choosing tools around the site, our roundup of free SEO tools is a good next stop.

Add Comment