March 31, 2020

Hosting Ghost (blog) using AWS ECS, EFS, RDS, CF & More

Deploy a highly available, high traffic ready Ghost blog to AWS!

Hosting Ghost (blog) using AWS ECS, EFS, RDS, CF & More

In this multi-post article, we will be covering how to deploy Ghost using highly available AWS components.

First you may ask, what is Ghost?

Ghost is a free and open source blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications.

As you read this article, it is hosted via Ghost running on an EC2 instance.

What we'll be building

The following AWS services will be utilized to deploy an auto-scaled, highly available and redundant Ghost installation:

  • EC2 (launch configurations, auto scaling groups)
  • EC2 (application load balancer)
  • ECS (container definition, service, task)
  • ECR (storing our desired Ghost version)
  • CloudFront (content delivery)
  • Route53 (forward zone to point to CloudFront)
  • S3 (storage of multimedia from blog, optional)
  • EFS (persistent storage for the docker containers)
  • RDS (MySQL, multi-AZ optional)

On full deployment, it will resemble this:

AWS Deployment

In our next installment, we will begin by pulling down the latest Ghost Image from DockerHub along with creating our AWS ECS Task Definition. Stay Tuned!