The Cloud Resume Challenge, by Forrest Brazeal, is a hands-on project designed to help you bridge the gap from cloud certification to cloud job. It is a challenge to help people to prepare for a job in the cloud industry.
This is my attempt at the AWS Cloud Resume Challenge, showcasing my journey in building a dynamic cloud-based resume.
Services Used:
- AWS - Amazon S3 | Amazon Route53 | AWS CloudFront | Amazon Certificate Manager | AWS Lambda | DynamoDB | GitHub Actions
- GitHub Actions - For CI/CD
-
Certification: Earned my AWS Cloud Practitioner certification and went the extra mile to achieve the AWS Solution Architect - Associate certification.
-
HTML: Downloaded a resume template instead of creating it from scratch and replaced the pre-filled data with my actual resume information.
-
CSS: Modified the CSS of the downloaded template to match my personal preferences, including changes to primary color, secondary color, text color, size, font, and element resizing.
-
Static Website: Hosted the static website using an Amazon S3 bucket.
-
HTTPS: Ensured that the S3 bucket is blocked for public access and is accessible through my Amazon CloudFront distribution.
-
DNS: Initially considered using the CloudFront URL instead of registering a domain name to save costs but eventually purchased one using Route 53 (karanbhogle.net) to enhance my learning experience.
-
JavaScript: Opted to fetch the profile view count server-side rather than on the client-side. This involved invoking a Lambda function to retrieve the profile view count.
-
Database: Utilized DynamoDB to store the profile view count data.
-
API: Utilized the Lambda function URL to invoke a Python code in the next step. Execution of the Lambda function was allowed only from the origin "https://resume.karanbhogle.net" using the CORS configuration setting of the Lambda Function URL.
-
Python: Created a Lambda function using Python and utilized the
boto3
library for AWS resource access. This Python function retrieved the current profile view count from Amazon DynamoDB, incremented it by 1, updated the value in DynamoDB, and returned the incremented value to the JavaScript function that invoked it. -
Tests: Omitted testing for such a basic Lambda function.
-
Infrastructure as Code: Did not perform Infrastructure as Code using SAM/CloudFormation or Terraform, as it is more of a DevOps operation. However, gathered sufficient knowledge on how to create a CloudFormation or Terraform template.
-
Source Control: Used GitHub to push the static website code to my repository for source control.
-
CI/CD (Back end): Given the absence of significant backend components, no specific actions were taken in this regard.
-
CI/CD (Front end): Created GitHub Actions to automatically update the S3 bucket when new website code is pushed.
-
Blog Post: Here is the associated Medium Blog Post.
It was a fun and educating experience doing this project.
Farewell.