Cloud background

Portfolio Hosting on AWS S3

Deployed a personal portfolio on AWS S3 with GitHub CI/CD, custom domain, and Cloudflare SSL.

Project Overview

Detailed information about the project, its features, and implementation

About This Project

Hosted a complete static portfolio on AWS S3 with public access configured for static website hosting.
Connected a custom domain via Cloudflare and secured it using SSL/TLS.
Implemented a CI/CD pipeline with GitHub Actions, so every code push automatically updates the live site.

Key Features

  • GitHub → S3 CI/CD Pipeline
  • Automatic Live Deployment
  • Custom Domain Integration
  • Cloudflare SSL for HTTPS
  • Cost-effective & Scalable Hosting
  • Zero-downtime updates

Challenges & Solutions

One challenge was setting correct S3 bucket policies and permissions for public access without exposing unnecessary resources. This was resolved by applying least-privilege policies.

Another big headache was the domain and SSL verification process. At first, AWS Certificate Manager required DNS validation records. Since I was using Cloudflare DNS, I had to copy the validation CNAMEs from AWS and add them into Cloudflare. The issue was that AWS sometimes reissued or refreshed the validation records, which meant switching back and forth between Cloudflare and AWS several times until the certificate was finally issued. I solved this by carefully checking propagation, avoiding duplicate entries, and waiting for Cloudflare caches to refresh.

The CI/CD pipeline also failed initially due to incorrect GitHub Action permissions. I fixed it by adding the right AWS credentials and using the aws s3 sync command.

Finally, DNS propagation for the custom domain took longer than expected. To work around this, I tested using Cloudflare tools, verified CNAME/NS records, and used the direct S3 endpoint until the domain was fully active.

Project Details

Duration: 2 Days
Role: Cloud & Web Developer
Team Size: Solo Project
Status: Completed

Technologies Used

AWS S3 GitHub Actions CI/CD Cloudflare HTML CSS JavaScript