A few weeks ago I got my AWS Solutions Architect Associate cert. I've been working in tech for about 10 years now, but didn't have much to show as far as cloud experience.
A few years ago a friend of mine showed me his cloud resume from the cloud resume challenge after he got his cert, and I thought it was one of the coolest things. So, I figured it would be a good starting place to show off what I can do and test out my new knowledge.
A few days later and this is what I have to show for it.
A complete portfolio site hosted on AWS serverless architecture. I have to say it was some of the most fun I've had in a long time working on something.
Frontend
HTML/CSS
For me, this was absolutely the most difficult part of the challenge. I'm not a designer and I don't have an artistic bone in my body. I burned through the free HTML/CSS courses on Codecademy to get a better idea on how to start this section. Even after that, I was still struggling to make things look nice. I'm not ashamed to say that I did leverage Claude to spit me out a quick template to work with using Bootstrap.
From there I started to see some progress, but it was a hilariously uphill battle to play around with things and get them to look how I wanted.
Infrastructure
The site is hosted as a static site using S3. I have this being served using CloudFront, secured using Amazon Certificate Manager. I had my domain name reserved through Route53 prior to completing my AWS exam, so I was all set to have it point to my CloudFront distribution at the start of this project.
Backend
The backend of the site is an API Gateway that triggers a Lambda function to update my DynamoDB table's visitor count using Python and the boto3 library.
I felt pretty strong going into this section, as I often work with REST APIs in my spare time, and have been programming in Python for a few years.
Connecting the frontend to the backend was a small hiccup. I've never used JavaScript before professionally or recreationally. Writing the POST request wasn't too bad, but I did have to do some reading on how to display the returned count. Also, I fell victim to CORS, which had me doubling back to update my Lambda function.
Though an issue did arise that we'll touch on later!
Automation
Going into this project I was most excited for this section. I adore automating things at work. I've been reading into IaC for a long time, but never had a chance to work with it. I chose Terraform for this, as being cloud agnostic seemed like the smarter path. Holy cow, this was fun. A lot of reading went on in the AWS provider registry on Terraform.
Terraform
I decided to work smarter rather than harder, and chose to import my existing infrastructure. Then ran some cleanup on the code to strip it down to what I needed.
That's when I paused for a moment... everything was hardcoded. From my understanding, IaC was all about scalability and easy changes. Welp, I found I had skipped over the attribute reference section on my initial reading of the documents in the AWS registry. It took a little bit, but I got everything that needed to be configured with a reference cleaned up.
This is where my little issue with API Gateway pops back up! Since I was calling this with JavaScript on my site page, I ended up needing to make a new record in Route53 so that I could account for the changing API Gateway name for my POST request. I gotta say, it felt really good seeing everything starting to come together.
CI/CD
Finally, I needed an easy way to continue work and update my site as I made changes (boy were there a lot). I chose to use GitHub Actions for this.
The OIDC trust for GitHub had a lot fewer moving parts than I thought it would. The YAML made me a little bit nervous, as it was something else new I touched on in this project. This was another thing that just... made sense to me. I was pleasantly surprised at how easy this pipeline was to set up.
Final thoughts
After finally deciding to push myself to start working with cloud tools, I have realized this is what I want to do with my career. It was such a fresh learning experience with so many interesting tools. The entire time I was working on this project it just felt right. I'm already thinking about what my next project is because I just want to have more fun with my new skill set!

Top comments (0)