AWS Cloud Resume Challenge
Published: 2022-04-24 01:57:39

_How do clouds store water?
Cloud storage._

## The Challenge!
Hey I'm Betty! I like frogs, cybersecurity, black labs and the cloud? Today I'm going to share with you my journey with the Cloud Resume Challenge by @forrestbrazeal! 

---

## Overview
In this challenge, you're expected to build a static and serverless website hosted in an Amazon Web Service (AWS) S3 bucket. Using AWS provided services such as Route53 for DNS and content delivery network, CloudFront. After we build our API Gateway and Lambda function and then use Infrastructure-as-Code (IaC) for the backend. Finally we implement GitHub Actions for continuous integration/continuous deployment (CI/CD).

---

<img width="100%" style="width:100%" src="https://media.giphy.com/media/NEvPzZ8bd1V4Y/giphy.gif">

## Front-End
Going into the challenge I swore I was ready! We started with the front-end, endless nights of coding for a week resulted in a minimalist, crisp website I was proud of. I created a cool landing page that users could interact with and find my resume. 
I had previous experience with HTML, somewhat CSS but absolutely no JavaScript. However the challenge doesn't require that you have previous knowledge. You can simply find templates online. I wanted to practice the knowledge I gained from [Colt Steele](https://www.linkedin.com/in/coltsteele).

The content of the website was then uploaded in a S3 bucket, with public access. Secured by HTTPS. 
Using Route 53 for DNS resolution to reach the nearest CloudFront CDN edge location. Then it started slowly heading down hill...
CloudFront really does a great job at caching, during several tests and design changes I started to realize my new uploads to the S3 bucket wouldn't populate even when I refreshed my website. Surely I thought I broke it but no! Invalidating the data... ALL of the data would clear the cache and your newly uploaded items would appear right away! 

## Back-End
I created my DynamoDB table next, super easy took maybe 5-10 minutes. Then I wrote my Lambda function in Python, this was pretty simple and there are tons of resources online!

<img width="100%" style="width:100%" src="https://media.giphy.com/media/9d6v8k7pdMnjq/giphy.gif">

Remember I stated it started heading down hill? Yeah that ever so slightly got worst. It was my first time really working with API Gateway and that took a couple YouTube videos to figure out. After multiple test and getting that ARN, it was time to really get into writing the code using JavaScript to send GET and POST requests to retrieve data and store it in the DynamoDB table I created. It took 5 hours and 7 lines of code to actually work! My fully functional, serverless website was complete and I felt like a real engineer! 

Not for long though, next I had to learn how to do everything I did in the dashboard through the AWS SAM CLI as Infrastructure-as-Code! This required attention to detail while creating the templates you'll use to create tables, allow permissions, setup you API call and Lambda function. AWS Whitepapers really guided me through these steps, it took time and multiple tries and really humbled me as I though "Oh, I already did this, I can do this with my eyes shut". No, it took time and effort and precision. 

Lastly I had to do source control and CI/CD through GitHub actions. These tasks used .yml for automation to build, test and deploy code.  It consists of yml files which are used to automate the build, test and deploy phases of the development process.

This challenge really opened my eyes as to truly how powerful cloud computing is. I used minimum, dare I say "basic" services to build a powerful, useful website using mainly free service. I can see why businesses, at every size and budget are moving toward the cloud and using benefits like scalability, security and more at a cost effective price!