/laravelaws

A reference architecture to deploy Laravel on a highly available ECS cluster using CloudFormation

Deploying Laravel with Amazon ECS, AWS CloudFormation and an Application Load Balancer

This reference architecture provides a set of YAML templates for deploying a Laravel application (with its crons and workers) to Amazon EC2 Container Service (Amazon ECS) with AWS CloudFormation.

The architecture features high security and high availability, and can be adjusted based on your hosting budget. All details on Medium here

Overview

infrastructure-overview

The repository consists of a set of nested templates that deploy the following:

  • A tiered VPC with public and private subnets, spanning an AWS region.
  • A highly available ECS cluster deployed across two Availability Zones in an Auto Scaling group.
  • (optional) A pair of NAT gateways (one in each zone) to handle outbound traffic.
  • The Laravel application and its crons and workers deployed as ECS services (Dockerfiles for Laravel and Nginx provided).
  • An Application Load Balancer (ALB) to the public subnets to handle inbound traffic.
  • A S3 Bucket and a corresponding CloudFront distribution
  • SSL certificates for the CloudFront Distribution and the ALB
  • SSL offloading on the ALB so you don't have to manage certificates in your Nginx containers
  • All traffic is forced to HTTPS, and traffic to the www subdomain is redirected to the apex domain.
  • Centralized container logging with Amazon CloudWatch Logs.
  • CloudWatch monitoring alarms for the database and web instances