A production-style static website delivery platform built on AWS using CloudFront CDN, a private S3 origin, and automated CI/CD with GitHub Actions.
This project demonstrates real DevOps practices including secure infrastructure design, automated deployments, and global content delivery through a CDN.
This project implements a secure and automated static website hosting architecture.
Developers push code to GitHub → GitHub Actions triggers a CI/CD pipeline → files are deployed to a private S3 bucket → CloudFront CDN distributes the website globally with HTTPS.
The system ensures:
• automated deployments
• secure private origin access
• global content delivery
• cache invalidation after updates
• zero manual deployment steps
- User visits the website through a browser
- DNS resolves the domain via Hostinger DNS
- Traffic is routed to AWS CloudFront CDN
- CloudFront securely retrieves content from private S3 origin (OAC restricted)
- Website is delivered globally with HTTPS
- Developers push updates to GitHub repository
- GitHub Actions CI/CD pipeline deploys changes automatically
- Pipeline uploads updated files to S3 bucket
- CloudFront cache invalidation refreshes the CDN
GitHub Actions automatically deploys new changes whenever code is pushed to the repository.
The S3 bucket is private and accessible only through CloudFront Origin Access Control (OAC).
CloudFront distributes the website through AWS edge locations worldwide.
TLS certificates are managed through AWS Certificate Manager (ACM).
CloudFront cache is automatically invalidated after deployment to ensure users always see the latest version.
- AWS S3
- AWS CloudFront
- AWS Certificate Manager (ACM)
- AWS IAM
- GitHub Actions
- HTML / CSS
- DNS (Hostinger)
.
├── .github
│ └── workflows
│ └── deploy.yml
│
├── architecture
│ └── aws-static-website-cicd-architecture.png
│
├── screenshots
│ ├── 01-cloudfront-distribution.png
│ ├── 02-s3-private-bucket.png
│ ├── 03-github-actions-success.png
│ ├── 04-cloudfront-invalidation.png
│ └── 05-live-website.png
│
├── index.html
├── style.css
└── README.md
Through this project I practiced:
- designing secure AWS architectures
- implementing CI/CD pipelines
- automating deployments with GitHub Actions
- configuring CloudFront CDN
- securing S3 origins using OAC
- managing cache invalidation for production deployments
After configuring the custom domain and requesting an ACM certificate, the HTTPS certificate was not issued immediately.
Investigation revealed that the DNS provider did not initially allow the required CAA record for Amazon Certificate Authority.
Resolution
- Added the appropriate CAA record allowing
amazon.comto issue certificates - Waited for DNS propagation
- ACM certificate validation completed successfully
This type of issue commonly occurs when integrating external DNS providers with AWS services such as ACM and CloudFront.
Deployment note: This project was successfully deployed and tested on a custom domain. The live environment was later decommissioned to avoid unnecessary AWS costs, while the full implementation and workflow remain documented in this repository.
Ikechukwu Elizabeth Nkwo
Cloud / DevOps Engineer (AWS)





