Deploying a Personal CV Website with S3 and CloudFront

Building and deploying a scalable personal portfolio website using Amazon S3 and CloudFront.

S3CloudFrontStatic WebsiteCDN

Introduction

In this project I deployed a personal CV website using Amazon S3 for static hosting and Amazon CloudFront for global content delivery.

The objective was to understand:

  • static website hosting
  • content delivery networks
  • secure public access
  • performance optimization
  • website scalability
  • cloud architecture design

This project is especially useful for:

  • portfolio deployment
  • frontend hosting
  • cloud architecture learning
  • highly available environments

Services Used

The project uses the following AWS services:

  • Amazon S3
  • Amazon CloudFront
  • Amazon Route 53 (Optional)
  • AWS Certificate Manager (Optional)
  • Amazon CloudWatch (Optional)
  • AWS WAF (Optional)
  • AWS Shield (Optional)

Architecture

The architecture consists of:

User

CloudFront

S3 Static Website

Optional services:

Route53

CloudFront

S3

Additional security and monitoring can be integrated using CloudWatch, WAF and Shield.

Configuration

The solution was configured using:

  • S3 static hosting
  • CloudFront distribution
  • Origin Access Control (OAC)
  • bucket policies
  • cache optimization

Additional concepts explored:

  • DNS management
  • HTTPS certificates
  • monitoring
  • DDoS protection

Important Considerations

Some important architecture concepts:

S3 bucket should not be publicly exposed

Best practices:

  • use CloudFront OAC
  • enable HTTPS
  • monitor traffic
  • protect against attacks
  • use DNS abstraction

Optional improvements:

  • Route 53
  • CloudWatch
  • WAF
  • Shield

Lessons Learned

This project helped reinforce:

  • static website deployment
  • CDN concepts
  • content caching
  • web security
  • scalable architectures
  • AWS managed services

References

Final Result

Below is the final deployed architecture.

Output

Project Code

You can find the Terraform code used in this project in the following GitHub directory.


© 2026 Antonio Valero
Built with Astro • Based on Astrofy