# How I Built a Serverless Resume on AWS (The Cloud Resume Challenge)
The Cloud Resume Challenge is a practical way to move beyond tutorials and build a real, production-style cloud project. It forces you to design, deploy, and connect multiple AWS services into a working system.
This post breaks down the architecture, implementation, and key issues I ran into while building a fully serverless resume website on AWS.
---
## 🏗️ Architecture
The system is fully serverless and designed for low cost and scalability:
S3 (Frontend) → CloudFront → API Gateway → Lambda → DynamoDB
### Components
1. **Frontend (S3)**
- Static resume site built with HTML/CSS
- Hosted in an Amazon S3 bucket
2. **CDN (CloudFront)**
- Distributes content globally
- Provides HTTPS and caching for performance
3. **Database (DynamoDB)**
- Stores a single visitor counter item
- Enables persistent, atomic updates
4. **Backend (Lambda)**
- Python function using `boto3`
- Reads, increments, and returns visitor count
5. **API Layer (API Gateway)**
- Exposes `/getcount` endpoint
- Connects frontend requests to Lambda
6. **CI/CD (GitHub Actions)**
- Automatically deploys frontend updates to S3
- Invalidates CloudFront cache after deployment
---
## 🧠 What I Learned / Challenges
### 1. CORS Configuration Issues
The browser initially blocked API requests due to CORS restrictions.
**Fix:**
Configured API Gateway to allow:
- Origins
- Methods (`GET`, `OPTIONS`)
- Headers
This allowed the frontend to securely call the backend API.
---
### 2. Git History Conflicts
Changes made locally and via GitHub web editor caused non-fast-forward errors.
**Fix:**
```bash
git pull origin main --rebase
This aligned commit history and resolved the conflict cleanly.
3. CloudFront Caching Delays
Frontend updates were not visible immediately due to cached CloudFront content.
Fix:
Added a GitHub Actions step:
aws cloudfront create-invalidation --distribution-id <ID> --paths "/*"
💡 Key Takeaways
-
IAM least-privilege design
- Lambda only accesses required DynamoDB resources
-
Serverless architecture design
- No servers to manage, only managed services
-
Frontend-backend integration
- Static site enhanced using API calls
-
Automation-first mindset
- Deployments handled entirely through CI/CD pipelines
🔗 Project Links
- 🌐 Live Website: https://d1l6jcvu4zf64q.cloudfront.net/
- ⚙️ API Endpoint: https://25ktpno81j.execute-api.eu-north-1.amazonaws.com/getcount
- 💻 GitHub Repository: https://github.com/waisyrr/cloud-resum
📌 Closing
This project demonstrates how multiple AWS services can be combined into a simple but production-style serverless application. It was less about building a resume site and more about learning how real cloud systems are structured.
Top comments (0)