Cloud Resume Challenge - My Experience
Published: 2022-11-04 14:49:29

I recently completed Forest Breazeal’s Cloud Resume Challenge. The challenge is designed to help create a serverless website with a built-in view counter. It covers a wide array of AWS technologies and resources. 


<u>What is the Cloud Resume Challenge?</u>

The Cloud Resume Challenge was created by Forrest Breazeal to help people build a serverless website that includes a view counter. The challenge consists of 16 steps and covers a wide array of AWS Technologies and resources. These steps include: Certification, HTML, CSS, Static Website, HTTPS, DNS, JavaScript, Database, API, Python,  Infrastructure as Code (IaC), Source Control using GitHub Actions, CI/CD Continuous Integration / Continuous Delivery (Back End), and CI/CD (Front End). 

<u>Certifications</u>

Before beginning this project towards the end of the year, I have passed my AWS Cloud Practitioner Exam in April 2022 and my AWS Solutions Architect Associate in August 2022. The challenge only outlines to complete 1 certification before attempting the challenge, but well an extra certification and some learning never hurt anyone :)


1.	The first task which was to create my resume page using HTML, CSS and JavaScript was quite straight forwards. I got a resume template and was able to tweak it to my liking. Next steps involved JavaScript and making an API call to my API gateway with fetch to get and display the visitors count. 


2.	Next task was uploading resume to an Amazon S3 bucket. I was using the amazon console to host a static website on S3 and using CloudFront for content distribution

3.	The second task was uploading resume to S3 bucket and allowing bucket to use HTTPS for security using CloudFront and point the CloudFront distribution to a custom domain. I obtained a domain name through Route53, created an SSL certificate using AWS Certificate Manager and pointed this to my CloudFront distribution.

4.	Next was to carry over the visitor's count to a database. DynamoDB was used to accomplish this section. I was able to use the update item query command that would update before getting the item. This would save cost in the sense that a single DynamoDB query and API endpoint was enough to Update and Get the visitor's count.

5.	Fifth task was to create a lambda function that would communicate with my DynamoDB. I had to use Python for this since it was part of the challenge requirements. Python was quite easy to grasp and, in few hours, I was able to create a Lambda function with proper IAM roles/policies to access DynamoDB.


6.	This step involved setting up the SAM (serverless application model) template to handle creating the DynamoDB, Lambda function and tests, and API gateway integration. I used the AWS CLI for this and I was able to test my functions locally using docker. I wrote unit tests for my lambda function and I was able to test that they work locally with the DynamoDB using moto from AWS.

7.	GitHub Actions was used to automate the process of building and testing my SAM template after each push to my private backend repository. If the build and test were successful, it goes ahead and deploys the SAM template on AWS.

8.	I repeated the same process to automate uploading my static Frontend code to my AWS bucket. I used Github actions for this and also invalidated my CloudFront Cache in the workflow. I made sure I stored my AWS credentials in Github Secrets for security reasons.

Through my experience with this project and getting a hands-on feel with resources and environment my understanding of cloud technologies and troubleshooting have vastly improved. I look forward to completing more hands-on projects with other cloud resources and programs and continue to document my learnings. 

Overall, I would recommend the challenge to anyone who wants to gain experience with AWS services or improve their website development skills. The challenge is well designed and provides a good overview of many different aspects of cloud computing. In addition, it is a great way to build your resume and show potential employers your skills in action. Thanks Forrest!

Check out my Resume Site – https://satnamkambo.xyz
Try the challenge yourself! - https://cloudresumechallenge.dev/docs/the-challenge/aws/