AWS Cloud Resume Challenge
Published: 2024-04-23 21:47:05

Cloud infrastructure was always a field that interested me, even though I didn't fully grasp what it actually is. Currently I am pursuing an associates for network services technology and along the way decided to also pursue a enterprise cloud computing certificate to bolster my knowledge. I started this project on the capstone class already with a cloud practitioner certificate under my belt. In this post I'll describe how each step went for me and troubles I had along the way.

**1. Certification**
Off to a great start! Already completed the first step with my certification in hand.

**2. HTML**
Before this challenge I only vaguely knew HTML commands. After viewing an HTML full course on YouTube, It wasn't that tricky at all to get the bulk of a static resume up and ready to be styled with CSS in the next step. I had to redo the HTML though due to oversimplifying the kind of site I would need.

**3. CSS**
Never even written down one font style in CSS before and another course video helped me with what I needed to get cracking. The biggest issue was centering the website so it wasn't all the way to the left of the browser. I messed with a gradient color scheme but it didn't work out how I wanted to in the end so I decided on a simple Harvard style resume. I am really glad with how it turned out and this was the first time I felt gratification from completing something I thought was daunting a month ago.

**4. Static S3 Website Your HTML**
Finally to the first step in building infrastructure. I completely forgot about AWS best practices when using an S3 bucket as a static website hosting and fixed it later on in the challenge. I configured the bucket to allow all public access at the start then got to implementing an Origin Access Identity(OAI) policy via CloudFront. This step wasn't difficult before the OAI.

**Step 5 & 6/ HTTPS With CloudFront**
As mentioned in the previous step this part was a bit tricky for me. The distribution had to be set up with the domain that I have purchased (albertomestrada.com) on Route53. Luckily YouTube comes to save the day like always. I learned about how a behavior works and setting up DNS records on Route53.

**7. Javascript**
The only thing I knew of Javascript was that it was the hardest part about learning web dev and it isn't a language of choice outside that realm. DOM manipulation had me spinning in circles. The biggest skill I started to exercise was looking at official AWS documentation and from the W3 school for web development. 

**8. Database**
A table with one item of ID 100 and a visitor count field? Easy. Great. Love it.

**9. API**
In this step I had to redo my Javascript since it was only refreshing upon local data. Implementing an API was my entrance to the developer side of things and got me interested in the manipulation of them. After this I will definitely look at open source API's and see what I can build with them. New syntax had to be learned as in to invoke the API endpoint but not too bad this step. Some grey hairs where grown though.

**Steps 10 & 11 Python/Lambda/Tests**
I was pretty excited for this step since I have always wanted to learn Python. As for Lambda, it was my first hands on use of it. After a long free intro course I started hammering on documentation on how to manipulate Lambda handlers and events as well as what to expect on responses and debug my code on Lambda. After so many hours put into this step the function finally was able to call the DynamoDB table and target the single item to increment the counter by 1. I had hope I could finish from here.

**12. Infrastructure as Code(IaaC) **
This was the step that I spent the most time on. The concept of automating deployment in a template was crazy to me. There was so much jargon I had to learn and research online. The concept became clearer to me after testing out the AWS SAM CLI on my local machine. The credentials part was simple to configure and so was building a test template. After that I attempted to state my current project in YAML format. Jeez, how funny how a simplified version of the actual thing can still be daunting and cryptic. I tried to build and deploy my template to another AZ but the tests kept failing and ended up being rolled back. This is a step that I will finish even after my capstone class. This step was not completed at the date of this blog (04/23/24). 

**Steps 13 & 14 & 15 Source Control/GitHub Actions**
Oh boy here we go. This step taught me that using other peoples programs is well and all but a small configuration can complete your goal. I learned how workflows work and how to implement GitHub secrets to be referenced in the file. One step by Jake Jarvis I believe was preventing me from accessing my bucket even though it had the correct bucket policy and IAM role being assumed. A simple argument that was passed that had to have the S3 bucket ACL's enabled was the only thing preventing me from uploading updated code. The relief I felt from that eureka was amazing. Development is a great deal of head scratching and sleepness nights for the smallest of things. The only GitHub actions that was not completed was the SAM build, test and deploy. Sync to S3, update Lambda code were completed.

**Summary & Takeaways:**
This challenge has mainly taught me that to use the AWS cloud or any other provider is a bundle of knowledge that needs to be known to implement your needs to its fullest. There are many fully managed services that can help you along the way but it all comes down to what you make of it and your specific use case. I would love to delve more into the security side of AWS and complete the security focused certification after receiving the Cloud Solutions Architect cert. I will continue to improve upon this project and finish the parts that I haven't completed. Everything is an ongoing process and the small accomplishments along the way will get me closer to really understand the ins and outs of the AWS Cloud.