Welcome to my first AWS deployment project! In this case study, I walk through how I built and deployed my personal portfolio site using AWS services like S3, Route 53, CloudFront, ACM, and GitHub Actions for CI/CD.
π Live Website: https://urigakuru.uriroots.com
π GitHub Repo: github.com/GakuruUri/portfolio
π― Project Goal
To build, deploy, and host a professional static portfolio website using AWS services, GitHub Actions for CI/CD, and a custom domain.
π§° Tools & AWS Services Used
- Frontend: HTML, CSS, JS (static site)
- Storage: Amazon S3 (static hosting)
- DNS: Route 53
- CDN: CloudFront
- SSL: AWS Certificate Manager (ACM)
- Automation: GitHub Actions
- Version Control: Git + GitHub
π Architecture Diagram
π οΈ Step-by-Step Implementation
1. Build Static Website
- Developed my portfolio using basic HTML/CSS/JS.
- Tested it locally before deployment.
2. Create & Configure an S3 Bucket
- Created a bucket with the name matching my domain:
urigakuru.uriroots.com. - Enabled static website hosting.
- Set index to default root object
index.html.
3. Configure Custom Domain with Route 53
- Registered domain:
uriroots.com. - Created a hosted zone and set up records to point to CloudFront.
4. Provision SSL Certificate with ACM
- Requested a public certificate for
*.uriroots.comanduriroots.com. - Validated it using Route 53 DNS.
5. Set Up CloudFront
- Configured a CloudFront distribution pointing to the S3 bucket.
- Enabled redirect HTTP to HTTPS.
- Attached the custom SSL certificate.
- Set the origin domain to S3 bucket endpoint, not the static website hosting URL.
6. Configure GitHub Actions for CI/CD
- Created a
.github/workflows/cicd.ymlfile for automated deployments. - Used
aws-actions/configure-aws-credentialsto deploy to AWS. - Fixed two issues:
- β
SOURCE_DIRmis-indentation β β Corrected line 22 - β Invalid
AWS_S3_BUCKETsecret reference β β Used correct syntax for accessing secrets
- β
7. Trigger Deployment
- Pushed code to GitHub.
- GitHub Actions triggered and deployed the site to S3.
- Confirmed deployment worked by checking the CloudFront URL and custom domain.
β οΈ Challenges Faced
- Misconfiguration in GitHub Actions YAML (
SOURCE_DIRindentation). - Incorrect reference to
AWS_S3_BUCKETsecret in the CI/CD workflow. - Learning curve around setting up CloudFront properly with HTTPS.
β Results
- π» Live Website: https://urigakuru.uriroots.com
- π HTTPS-secured, fast-loading static portfolio site
- π€ Fully automated CI/CD pipeline from GitHub to AWS
π± What I Learned
- How to serve static sites on AWS using S3 and CloudFront
- How to configure Route 53 and SSL certificates with ACM
- GitHub Actions workflow creation and debugging
- Importance of architecture planning and secrets management
π‘ Future Improvements
- Add a blog section (Markdown-based)
- Integrate analytics (e.g., AWS Pinpoint or Google Analytics)
- Implement deployment notifications via SNS
- Extend CI/CD to include staging/preview environments
π§ Final Thoughts
This project helped me tie together several AWS services and sharpen my DevOps skills. Itβs a strong foundation for more complex cloud-native projects.
If you're a recruiter or hiring manager β Iβd love to chat about cloud roles!

Top comments (0)