DEV Community

M. Maxwell
M. Maxwell

Posted on

Cloud Resume Challenge - Trials & Tribulations

Image description


I guess I should begin by introducing myself. My name is Maurice Maxwell. I'm currently studying towards a degree in Cloud Computing at Western Governors University. I've always been interested in technology and IT since a young age, from disassembling electronics (including my Xbox back in high school, of course my mom was not too happy...), building/deploying custom desktops for work and gaming, and building my own in house server from spare parts for multimedia and learning purposes. Later I started moving away from the hardware side of IT to software, learning some python and golang along the way, learning a bit on docker and deployed an install on my local server, doing all that on a linux install using a Centos distribution though I have some experience with Ubuntu and Arch. The latter of which I sometimes use as a daily driver.

I've been interested in starting a career in cloud computing but didn't know where to start. So many resources on what to learn but didn't know how I can implement it to show my skills. So I was recommended to try the Cloud Resume Challenge in order to get some experience and hopefully land my next job in my career. It's broken down into several steps and in each step I'd like to describe my process and what I learned.

#1. Certification
The first step in the challenge was to get certified, and unfortunately this is the only step that hasn't been completed (it's a work in progress!) Though instead of getting the Cloud Practitioner, I'm jumping to the AWS Solutions Architect instead. I'm hoping to get that done in a few weeks time, but I was able to complete this challenge from what I did learn from both my studying and using googlefu.

#2. HTML
Second step, HTML. I wanted to build the site from scratch instead of just grabbing an HTML/CSS file and editing the fields that I wanted. I have some previous experience when I was younger since I was a huge fan of a certain blue bomber so I made a fan site. So most of this was review for me, making classes, using separators, breaks, and making headings but since its been a while I made it pretty simple. Eventually I plan to update it to be more modern looking. For my review/learning resource I used WebDev Simplified since his videos are short and to the point

#3. CSS
Again was pretty much review for me but I made it pretty simple. Pretty fun messing with colors, changing the backgrounds, etc. Used the same resource as above but plan to update it later.

#4. Static Website
Part of the challenge was to make a static website using the html and CSS files I created using one of the three cloud providers. I went with AWS for this challenge but who knows I may end up doing the challenge again with Azure or Google Cloud. Or maybe even another project. Anyway, I logged into the AWS console, made an IAM administrator account with the least privileges needed, made an S3 bucket in my region, and uploaded my files. Wow that was simple...but then I couldn't access the contents of the webpage. WHAT? Using googlefu I realized that I had to enable/disable certain options and update some policies for the S3 to be publicly accessible.

#4. & 5. HTTPS & DNS
I'm putting these together since they go hand-in-hand. I bought the domain from namecheap. Of course I could've bought it through Route53...but its, y'know, cheaper on NameCheap. Though through 53 had to get an SSL certificate. Then used CloudFront to redirect all http traffic to https using the SSL certificate. The SSL certificate process was irritating as far as the verification process goes since NameCheap is finicky with how you enter the CNAMES into the host records. Eventually I figured out the issue and was verified. I then had to go back into 53 to add some more settings so everything redirected like it should.

#6-10 Backend - The Nightmare Begins
These parts of the challenge, Javascript, DynamoDB, setting up the API, and Python were the most difficult part of the challenge since it was foreign territory (though Python less so, it was mostly just getting my code to work). I started with setting up DynamoDB and creating a lambda function using python. I created a table and gave the table some items to store data that would be delivered from the lambda function. I wrote the lambda function, saved it, created an API and tried to run it but I kept getting errors like it wasn't running at all. I found out that I had to click deploy in the lambda function before the API could run it! Of course it didn't work on the first try so I had to modify and test the code several times before it was able to increment by one successfully. Of course I still had to invoke it in my HTML file which is where the Javascript came in. I then ran into another wasn't updating on the webpage!

I banged my head against the desk for a while wondering what was going on, I saw I was able to see it was incrementing like it should but it kept saying undefined on the webpage so what was wrong? Luckily I was in the discord for the challenge, I searched and found out about the CORS issue...and sure enough I had that error. I had to update my lambda function and enable CORS and was finally able to get the counter to display correctly. This was probably the most frustrating part of the challenge but at the same time I learned a lot and still had fun.

#11-15 The Finish Line
So for the last portion of the challenge, I had to implement a test against my python code to make sure that it works as it should every time I update it. I then realized I wish I had started here first since I'd need to use IaC to deploy and configure all my resources. Reading I found that I could use SAM but instead I used Terraform/Terraform Cloud since I remember that's what many people use. I tore down almost everything that I did in the AWS console and redid everything using Terraform. I had to setup the API tokens, make a variable set using my AWS credentials and followed the tutorial on how to setup github actions and then I applied it to this challenge. I also used this resource to make a simple test. After that it was just setting up repositories for both my back end and front end.

#16 Closing Thoughts
And here is my final result. I had a great time completing this challenge and I learned quite a bit. This was completed over two months, admittedly there were times I was irritated and gave up but I'm glad I didn't and persevered. My next goal is to learn up more on Terraform and make another project with Kubernetes

Top comments (0)