The AWS Cloud Resume Challenge Project

Bill Salvaggio
4 min readDec 13, 2023

Level Up the Resume: PART I

Project Goals

To develop further my understanding in:

  • Full-stack software development (the static website and Python pieces)
  • Version control (the Github piece)
  • Infrastructure as code (the Terraform piece)
  • Continuous integration and delivery (connecting GitHub Actions and AWS)
  • Cloud services & serverless (Lambda, API Gateway, DynamoDB, Route53, CloudFront, Application security (IAM, S3 policies, CORS, API authentication/authorization)
  • Networking, as in the way computers talk to each other (DNS, CDNs, the whole “cloud” thing)
  • Documentation (this blog post)
  • To demonstrate the ability to learn fast and google well. To pick up new things quickly, in a self-motivated way

THE CHALLENGE

PREREQUISITES

This challenge was completed primarily in AWS, using a combination of VSCode and vue to build my cloud resume website

1. CERTIFICATION

First up was to obtain an AWS Certification. I completed this part prior to the resume challenge and began my learning of the AWS fundamentals through earning my AWS Certified Developer Associate Certification, which can be viewed at the following link:

AWS CDA VERIFICATION

Earners of this certification have a comprehensive understanding of application life-cycle management. They demonstrated proficiency in writing applications with AWS service APIs, AWS CLI, and SDKs; using containers; and deploying with a CI/CD pipeline. Badge owners are able to develop, deploy, and debug cloud-based applications that follow AWS best practices.

I have also obtained my Hashicorp Terraform Associate Certification. This provided the groundwork for my work in automation and my journey into Infrastructure as Code:

HASHICORP TERRAFORM ASSOCIATE VERIFICATION

Earners of the HashiCorp Certified: Terraform Associate certification know the basic concepts, skills, and use cases associated with open source HashiCorp Terraform. They understand and can utilize Terraform according to the certification objectives. Additionally, they understand why enterprises choose to extend Terraform Open Source with Terraform Enterprise to solve business critical objectives.

Going forward, I am currently preparing for the AWS Solutions Architect Associate Certification to further develop my knowledge and skills in working with AWS cloud infrastructure and to learn how these technologies integrate on a deeper level.

2. HTML

Next, my resume was to be written in HTML. (Not a word doc, not a PDF). This was my first foray into HTML and after a bit of a learning curve.

3. CSS

The net step was to style the resume with CSS. This was also my first experience in using CSS. I have a background in general design and aesthetics through my years working in the print industry producing and installing large format signage, and vinyl graphics. It was a valuable experience to learn CSS and styling my resume website was the perfect introduction to this.

The current website design and layout is a work in progress as I continue to refine it. I focused first on getting it functional with a simple design that can be modified.

4. STATIC WEBSITE

I deployed my HTML resume online as an AWS S3 static website.

Relevant helpful resources:

Static site setup

Cloudfront setup

Alternate domain names and HTTPS

HTTPS for Cloudfront

5. HTTPS

I then used Amazon Cloudfront to use HTTPS for security.

6. DNS

I then pointed a custom DNS domain name to my cloudfront distribution. I utilized Amazon Route 53 as my DNS provider.

I chose as my domain salvagg.io as I thought this was a memorable way to use my name as the full domain

I decided to build the front end using the Vue Javascript framework. This made it easier to build and maintain, as well as allowing myself a more manageable file to update in my S3 bucket instead of a giant HTML file

7. JAVASCRIPT

The next addition to the website was a visitor counter that would display how many people have visited the site. This proved to be the biggest challenge of the entire process up to this point, as it involved the integration of several technologies which will be outlined below.

I hit the most roadblocks during this section of the challenge and it required a great deal of troubleshooting. It took many nights to first identify and then sort out CORS issues and get the counter to properly update and display on the website. Once corrected though it was an incredibly rewarding feeling.

8. DATABASE

The visitor counter needed to retrieve and update its count in a database. I chose to use DynamoDB for this.

9. API — PYTHON & LAMBDA

I created a cloud based API that would accept requests from the web app and communicate with the database. I used AWS API Gateway and Lambda for this.

I wrote the Lambda function in Python, as I had some experience using Python in Lambda functions in previous projects.

First the Python Lambda function was set up using the AWS web console, and once successfully tested from the console I then triggered it externally from my terminal command line and then finally from my website.

I built the API on the “AWS serverless stack” of Lambda, API Gateway, and DynamoDB for several reasons. The ease of use of a serverless API allows us to focus on writing the code and properly configuring the managed services. The cost efficiency of the lambda function allows us to be charged only during response to an event that triggers the function. This type of set up has wide ranging applications.

11. INFRASTRUCTURE AS CODE

I used Infrastructure as code to redefine my entire website in Terraform. This was a significant bit of work but I used the knowledge I gained from my Terraform Associate Certification preparation as well as previous Terraform projects.

I converted my S3, Route53, and Cloudfront resources to Infrastructure as Code using Terraform. This was a challenging undertaking and a bit nerve wracking but once successful and I was able to fully break down and rebuild the infrastructure through Terraform it proved to be a very worthwhile endeavor.

The Website:

www.salvagg.io

to be continued…

--

--

Bill Salvaggio

DevOps | Cloud Engineering | Linux | AWS | Cloud Enthusiast | Level Up In Tech | Find me here! www.linkedin.com/in/billsalvaggio