Getting Wet Falling Through a Cloud 
Tags: aws, codenewbie
Published: 2020-07-05 16:45:08

As a clinical laboratory technician trying to pivot into a new career in Cloud and software development, I have often found it difficult to turn theoretical knowledge into real meaningful experience. The suggestion from those with experience is typically, "do some projects" but this is always easier said than done. There are only so many "Hello world" applications you can write before you start losing focus revert back to watching the world burn. 

![Everything is fine](https://media.giphy.com/media/eIfYQTaK3148kmMCxT/giphy.gif)

When I learned about the [Cloud Resume Challenge](https://cloudresumechallenge.dev/), created by [Forrest Brazeal](https://forrestbrazeal.com/), I realized it was the perfect project for diving in to the Cloud field. If you haven't heard of the challenge, it is quite simple on its face. You need to make a simple website that will display your resume and a visitor count (there is also a requirement to pass the AWS Certified Cloud Practitioner exam but that's kind of adjacent to the development of the website).

Sounds simple right? I did that easily back in the anglefire.com days. 

![But Wait...](https://media.giphy.com/media/9V1F9o1pBjsxFzHzBr/giphy.gif)

But it is in the way that you need to do these tasks that makes the Cloud Resume Challenge such a great project that forces the challenger to not just get their feet wet, but fully submerged. 

![awesome. Wow. ](https://media1.tenor.com/images/22f3dd76540c6fc05fab7d0452ab1e0f/tenor.gif?itemid=5720844)

First, your website needs to be written in HTML and javascript and styled with CSS. It should use HTTPS for security and have a custom domain name pointing to an S3 bucket. The page's code should be kept in a Github repository that, when updated, will push the changes to the website. 

This means that the challenger will need to learn how to use Route53 to register a website, use S3 to set up a bucket properly for static hosting, use Cloudfront and Amazon Certificate Manager to secure communication in transit, use HTML/CSS/Javascript to make their resume beautiful(ish), use Git and Github to set up and maintain a repository, and use Github actions (or CodePipeline in my case) to automatically update your site. In case you stopped reading, that is a lot of exposure to a number of services and techniques for a Cloud newbie like me. And that is just the front end. 

![Work](https://media.giphy.com/media/2ALDqAc6hjDGPlOxqp/giphy.gif)

Second, the website contains a visit counter that is supported by a serverless back-end. The javascript on the front end must call an API that calls a lambda function written in python that updates a DynamoDB table and delivers a visitor count to the front end. All of this should also be kept in a repository that will run a Github action on a push to master that uses a SAM template and the AWS CLI to package, test, and deploy the updates to AWS.

This means that the challenger will need to use the AWS SAM CLI and learn how to properly write .YAML templates to automate the creation (or update) of serverless resources like permissions and APIs and DynamoDB tables, use python to make functions to update the DynamoDB table, use Github actions to automate the process of packaging and deploying of the serverless components, and using CLI commands to make sure that the virtual machine running the jobs in your Github actions have the resources to complete your tests and deployments. 

![Time for a nap](https://media.giphy.com/media/JstFYY8FwlBm48n7De/giphy.gif)

Speaking on all of this in one post would be exhausting to both read and write, so I will be following up this post with additional posts outlining the challenges and revelations that went into my completions of each step (like how it took an entire day of troubleshooting to realize that my spacing was wrong in a SAM template.yaml file or how long it took me to realize where I had to look to find errors in my Github actions jobs). 

![Frustration](https://media.giphy.com/media/xiAqCzbB3eZvG/giphy.gif)

So I will be back with more! But with this post, I complete the challenge!

-Jakob 
[JakobOndrey.com](https://www.jakobondrey.com)

**The "more" that was promised**
[.1 The Site](https://dev.to/misterjacko/1-the-site-253f)