At the end of April 2020, Forrest Brazeal posted a challenge on his blog to help anyone who completes the challenge get a job in the cloud. As I was wrapping up the final tasks this week, I was promoted to a DevOps Engineer where I will be working a lot more in the cloud 🥳
I still wanted to complete the challenge as I learned quite a bit along the way and each task was well thought out in what experience you will take away from it and how the entire project comes together.
Here is my Cloud Resume Challenge: https://vincentdonofr.io.
I have a subscription to Linux Academy (LA) where I have been taking the AWS Certified Solutions Architect – Associate Level Course when I first heard about the challenge. I still have a ways to go in the course as it is 57 hours long, so I wanted to see if I could take the AWS Cloud Practitioner exam. I went in to the Linux Academy CP exam and ended up failing. I realized there was quite a bit that I had missed out on by jumping straight into the Solutions Architect course.
I took the LA AWS Cloud Practitioner Course (on double speed in the parts that were review 🙃) and took the practice exam until I got 90% or higher three times. I scheduled my exam and after quite a bit of back and forth with the exam proctors because I took it at home, I was able to start. The LA course was a great preparation and I passed without too much of an issue. I definitely didn't ace it though!
These sections were more of a review as I've been working with and building websites for over a decade in some capacity or another.
This was my first time creating a static website in a S3 bucket but it was a pretty quick process due to the great AWS documentation and plenty of other resources just a quick Google away. The main takeaways here for me were learning how to set bucket permissions and which permissions I need for a static website.
I also learned how to use two buckets, one for vincentdonofr.io and one for www.vincentdonofr.io and forward the latter to the former.
Setting up a CloudFront distribution is where things started to get a bit tricky. I ended up having to create a Custom SSL Certificate because I'm using a custom domain. This was completely foreign to me but again the AWS Documentation made it a breeze.
Purchasing a custom domain was the easiest part of all of this 😅 but it all started to make sense if I thought about these steps in reverse. I really needed to have the domain, then create the cloudfront distribution, then crease DNS aliases, then get a certificate, then point to my S3 buckets.
I learned quite a bit about Dynamodb in my Linux Academy courses so that definitely helped speed up this section.
Creating an API Gateway and everything about it was new to me so here and Infrastructure as Code is where I spent most of my time.
I have written some test suites in python over the last few years so this section was more of a review. I created my first Lambda function here which was essentially just pasting in code that I was familiar with and clicking create.
I initially wanted to start here when setting up the DynamoDB table, API Gateway, and Lambda function but I felt it was a lot easier to write the infrastructure code once I knew how all of the AWS services worked. I ended up creating everything manually a couple times, deleting everything, and then ported it over to code to see if I could replicate what I created in the AWS Console. This was also my first time working with AWS SAM and the CLI tool made building and deploying the code as simple as two commands!
I have quite a bit of experience with git and GitHub so this was just a few minutes to setup.
As part of my new role as a DevOps Engineer, I was working with migrating our build and deploy pipeline to GitHub Actions so this was a great way of validating all of the steps I learned at work over the last few months.
I've never published a blog post before so here it is! I really enjoyed this challenge and it feels great to complete the full project. There are a ton of improvements I've been thinking about along the way, so I definitely will be iterating on this over time.