Visit ofsener.com
Cloud Resume Challenge is a hands-on project designed to showcase your cloud skills by building a modern, serverless resume website using AWS services. This project leverages AWS Lambda, API Gateway, DynamoDB, S3, CloudFront, and CloudFormation (via SAM) to create a fully automated, scalable, and secure solution. Whether you're looking to demonstrate your technical expertise or learn cutting-edge cloud deployment techniques, this challenge is a great way to enhance your portfolio.
- Installation Guide
- Usage Instructions
- Features
- Configuration & Customization
- Contribution Guidelines
- Roadmap
- Troubleshooting & FAQs
- License
- Credits & Acknowledgments
- Contact Information
- AWS Account: An active AWS account with the necessary permissions.
- Git: Installed on your local machine.
- AWS CLI & SAM CLI: Installed and configured.
- Python 3.9+: For backend (Lambda) development.
- Node.js (optional): For additional tooling if needed.
-
Clone the Repository
git clone https://github.com/your-username/cloud-resume-challenge.git cd cloud-resume-challenge -
Set Up Environment Variables & GitHub Secrets
In your GitHub repository settings, create the following secrets:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYDEPLOYMENT_ARTIFACTS_BUCKET(a unique S3 bucket for SAM artifacts)S3_BUCKET_NAME(for your static website files)CF_DISTRIBUTION_ID(CloudFront Distribution ID for your website)CERTIFICATE_ARN(ACM certificate ARN in us-east-1)HOSTED_ZONE_ID(for your custom domain)
-
Project Structure
cloud-resume-challenge/ ├─ backend/ │ ├─ lambda_function.py │ ├─ requirements.txt │ └─ test_lambda_function.py ├─ website/ │ ├─ index.html │ └─ (other static assets) ├─ iac/ │ └─ template.yaml # Backend SAM template └─ .github/ └─ workflows/ ├─ backend-deploy.yml └─ website-deploy.yml -
Deploy the Backend
cd iac sam package --template-file template.yaml --s3-bucket $DEPLOYMENT_ARTIFACTS_BUCKET --output-template-file packaged.yaml sam deploy --template-file packaged.yaml --stack-name cloud-resume-backend-stack --capabilities CAPABILITY_NAMED_IAM --parameter-overrides TableName="ZiyaretciSayaci" AllowedOrigin="https://yourdomain.com"
Alternatively, push your changes and let the GitHub Actions workflow (
backend-deploy.yml) handle the deployment. -
Deploy the Website
aws s3 sync website/ s3://$S3_BUCKET_NAME --delete aws cloudfront create-invalidation --distribution-id $CF_DISTRIBUTION_ID --paths "/*"
Or use the GitHub Actions workflow (
website-deploy.yml) for automated deployment.
-
Accessing the API:
After a successful backend deployment, retrieve your API endpoint from the CloudFormation stack outputs. For example:curl https://your-api-id.execute-api.region.amazonaws.com/Prod/visitorcount
-
Viewing Your Resume Website:
Visit your custom domain or the CloudFront distribution URL to see your resume website. -
Updating the Website:
Any changes pushed to thewebsite/folder will trigger the website deployment workflow, automatically updating your S3 bucket and invalidating the CloudFront cache.
- Serverless Architecture:
Leverages AWS Lambda, API Gateway, and DynamoDB for a robust backend. - Automated Deployment:
Continuous integration and deployment via GitHub Actions. - Infrastructure as Code:
Manage AWS resources with a SAM template. - Custom Domain & SSL:
Secure your site with ACM certificates and Route53 integration. - Scalability:
Built on AWS’s scalable, pay-as-you-go infrastructure.
- Backend:
- Modify
TABLE_NAMEandALLOWED_ORIGINin the SAM template or during deployment. - Update
lambda_function.pyin thebackend/directory to change API logic.
- Modify
- Website:
- Update your static assets in the
website/folder. - Customize CloudFront and S3 settings via the AWS console if needed.
- Update your static assets in the
- Environment Variables:
Use GitHub Secrets and deployment parameters to configure your project securely.
Contributions are welcome! Please follow these guidelines:
- Fork the Repository and create a feature branch.
- Coding Standards: Adhere to PEP8 for Python code.
- Pull Requests: Provide clear descriptions and reference related issues.
- Issue Reporting: Use GitHub Issues to report bugs or suggest features.
- Documentation: Update this README and code comments as needed.
- Backend Enhancements:
- Add additional API endpoints for enhanced interactivity.
- Optimize Lambda performance and integrate monitoring.
- Frontend Improvements:
- Enhance the UI/UX with dynamic content and responsive design.
- Security:
- Strengthen authentication and authorization for API endpoints.
- CI/CD:
- Improve deployment automation and add more comprehensive tests.
This project is licensed under the MIT License.