Building a Static Website on AWS

Context

This project was built to host a fast, secure and globally distributed static website on AWS. It is used in production to serve this website.

Key constraints:

  • Keep the architecture simple and low cost
  • Serve the site securely over HTTPS
  • Minimal maintenance overhead

Architecture

High-level architecture diagram showing user traffic flowing through Route 53 to CloudFront, with S3 as the origin and ACM providing the SSL certificate

User requests are routed through Route 53 to a CloudFront distribution, which serves cached content from an S3 bucket. ACM provides the SSL certificate used for HTTPS delivery via CloudFront.

This setup keeps the architecture simple while using managed services for storage, delivery and DNS, reducing operational overhead compared to managing a server.

Key Decisions

Use CloudFront in front of S3

Why: This improves performance through caching, enables HTTPS delivery, and allows the S3 origin to remain private instead of exposing a public bucket.

Trade-off: It adds another layer to configure compared with serving directly from S3.

Use Route 53 for DNS

Why: It integrates cleanly with AWS resources and makes domain routing straightforward.

Trade-off: It keeps DNS management inside AWS rather than using an external provider.

Challenges

S3 access and CloudFront permissions

Resolving 403 Access Denied errors caused by misaligned bucket policy and CloudFront Origin Access Control configuration

HTTPS and custom domain setup

Configuring ACM, CloudFront and Route 53 in the correct order to enable certificate validation and domain routing

Cost

Estimated monthly infrastructure cost: ~$0.50 USD (excluding taxes, based on AWS Pricing Calculator and current usage)

  • Route 53: ~$0.50 USD fixed monthly cost (hosted zone)
  • CloudFront: within free tier at current usage (~1GB/month), scales with traffic
  • S3: negligible storage and request costs (<50 MB)

Additional cost:

  • Domain registration: ~£15/year (excluding VAT, purchased via Route 53)

Outcome

The result is a production-ready static website hosted on AWS with secure HTTPS delivery and global content distribution.

  • The site is simple, fast and low maintenance
  • The project gave me hands-on experience connecting core AWS networking and hosting services

Next Steps

Expand the site with additional project pages, refine the design, and continue building and documenting real AWS systems with clear architecture diagrams.