AWS Cloud Resume Challenge

Lanre Borishade
4 min readNov 13, 2022

--

Lessons, lessons, lessons. Learning practical skills on AWS

What I imagine my cloud infra looks like…
Photo by Wolf Zimmermann on Unsplash

AWS Certified Cloud Practitioner Exam

Earlier this year (around July) I decided to start self-studying AWS and cloud then began preparing for the AWS Certified Cloud Practitioner (CCP) Certification because I believed it would be a great way to measure my progress. Some resources I used to prepare for the exam include:

  1. Official AWS docs/tutorials
  2. AWS workshops — workshops.aws
  3. Cloud developer workbook — https://www.ryanlewis.dev/blog/the-cloud-developer-workbook-is-out-now/
  4. A cloud Guru — AWS Architect learning path
  5. YouTube (obviously!)
  6. Stack Overflow (obviously!)

Cloud Resume Challenge

I came across this challenge on @openupthecloud instagram (https://openupthecloud.com). I took two courses which helped me get a lot of theoretical knowledge in preparation for the exam. Most of the hands-on tutorials I had completed on the AWS website at the time didn’t give me enough of a challenge, like riding a bicycle with training wheels. The AWS Cloud Quest was great but also felt very methodical. So while researching hands-on projects I could use to further my learning I found out about the Cloud Resume Challenge and it felt like perfect timing.

The first step was to take the AWS Cloud Practitioner certification which I did and passed in September. I was quite impressed with my score of 838/1000 (700 is needed for a pass). Over the 2 months I prepared for CCP I became very familiar with carrying out operations using the AWS management console so I decided to challenge myself even further and use an infrastructure as code approach for the challenge.

Infrastructure as Code (IaC) and Benefits

The idea behind IaC is that you write and execute code to define, deploy and update your application infrastructure. Everything can be managed in code including servers, databases, networks, application configuration, automated tests and deployment processes. Terraform and CloudFormation are tools I believe are extremely useful for me now and in the future. Some benefits of IaC include:

  • The consistency it provides as the state of the infrastructure is documented clearly in code. Easy for a newcomer to understand the defined infrastructure.
  • The speed — if the deployment process is automated, it’ll be significantly faster as the computer can carry it out quicker than a person.
  • The safety — an automated process will be more consistent, more repeatable and not prone to manual error.

Knowing this, I was fully convinced. My plan was to do the challenge twice, once with AWS SAM and Cloudformation as I had barely used this service (prior to this I had only used the Python SDK). Once everything was functional, I would then transfer my entire architecture to Terraform and ensure the infrastructure still worked the way I intended.

Taking the challenge

The first 4 parts of the challenge I found quite simple. I already had a simple HTML page with some CSS that I could use for steps 2, 3 and 4 (HTML, CSS and Static Website). I also had some practice with deploying static websites with S3 so this was easy for me to do. I used AWS SAM from the start and my first and probably biggest challenge came when I had to figure out setting up HTTPS as well as a CloudFront distribution. After a few hours reading through the AWS docs and countless posts on Stack Overflow I was able to figure out the missing parts and was on my way. I then bought a custom DNS and attached it to the distribution.

The next step was to include JavaScript in the website in order to implement a visitor counter. With the hint in the cloud resume challenge and my little knowledge of JavaScript I found this very straightforward to implement. Now I could get started with the backend infrastructure. Setting up DynamoDB in CloudFormation was a smooth process. I created a table with a partition key (ID) and attribute (visitorCount).

The AWS SAM Hello World template I started with (which looked totally different at this point) already define an APIGateway and a lambda function connected to it which would be the next two things I had to implement. This was helpful as I only had to tweak the resources and duplicate the lambda functions because I wanted to have a separate lambda function for each action. After this I updated the lambda functions (both written in Python) and everything was working perfectly. After this I implemented unit tests for both lambda functions and that was it for the backend services. The next step was to use IaC but thankfully I could skip this step as I chose to start with this approach.

For source control, my project was already hosted in a Git repository from the beginning of the challenge but I preferred to keep the entire project in one repository as opposed to two (separating the backend and frontend) like the challenge instructions specify. Last step was then to implement a Github Actions workflow to automate the testing, deployment of infrastructure and the deployment of the site. I had some experience with this already and other than a few issues I encountered this was an alright task to complete.

Overall

Verdict: 10/10.

It took me roughly one month to complete the challenge and I know how much I benefited from the hours I spent trawling through AWS documentation trying to fix one error after another. I’d definitely recommend it to anyone that is new to working with cloud services (the challenge can be done using other cloud providers as well). The final (16th) step is to write a blog post and now I can say I have officially completed the Cloud Resume Challenge. Will be back soon… currently rewriting my entire infrastructure in Terraform 👀

Edit from the future:

My Terraform infrastructure is complete. V2.0 is done, check it out in the link below

< My CRC >

< My portfolio >

--

--