Cloud Resume Challenge AWS
Tags: cloudresumechallenge, aws, cloud
Published: 2022-01-27 20:19:13

## Background 
I was introduced to the [Cloud Resume Challenge](https://cloudresumechallenge.dev/docs/the-challenge/aws/) while interviewing for a position in October of 2021. I was looking for a change in direction in my IT career and the cloud struck my interest. Over the past couple of months, I have been slowly working on this challenge. With many late nights in the books, I have completed the challenge. Although frustrating at times I would recommend anyone interested to take this challenge. The rewarding feeling after every completed step makes you want to come back for more. 

## Challenge Instructions

  **Certification** AWS certified Cloud Practitioner(In Progress) 
✔️ **HTML** [Check out my HTML code](https://github.com/joshb8/cloud-resume/blob/main/resume-site/index.html)
✔️**CSS** [Check out my CSS code](https://github.com/joshb8/cloud-resume/blob/main/resume-site/styles.css)
✔️**Static Website**  [Used AWS SAM template](https://github.com/joshb8/cloud-resume/blob/main/template.yaml)
✔️**HTTPS** This was made easy by AWS CloudFront
✔️**DNS** Used AWS Route [joshscloudresume.net](joshscloudresume.net)
✔️**Javascript** There is a script at the end of my [HTML File](https://github.com/joshb8/cloud-resume/blob/main/resume-site/index.html)
✔️**Database** Used AWS DynamoDB 
✔️**API** Created and deployed with AWS SAM 
✔️**Python** Lambda Functions [Get Function](https://github.com/joshb8/cloud-resume/blob/main/get-function/app.py) [Put Function](https://github.com/joshb8/cloud-resume/blob/main/put-function/app.py)
✔️**Tests** Integration and upload test using [GitHub Actions](https://github.com/joshb8/cloud-resume/actions/runs/1752827599)
✔️**Infrastructure as Code** AWS SAM [template.yaml](https://github.com/joshb8/cloud-resume/blob/main/template.yaml)
✔️**CI/CD** [GitHub Actions](https://github.com/joshb8/cloud-resume/actions)
✔️**Blog Post** Here we are

**My thoughts on the challenge**
Looking back on the challenge I should have been writing this blog post along the way. It is impossible to remember all of the struggles and AH-HA! moments involved in the learning process. With that being said I will go over the main struggles that took up most of my time. 

Although the instructions from [The cloud resume challenge](https://cloudresumechallenge.dev/) give great instructions and excellent resources to start the journey there were many hours spent on stack overflow figuring out the finer details. 

**How I approached the challenge**

**1. HTML/CSS/JS** I first simply coded my resume in HTML and added a little CSS to meet that requirement. I would later dive deeper into creating an actual website once I realized that I enjoyed the design aspect of this.  

**2. Host website** I used the AWS SAM template to host a static website in an S3 bucket. I originally used google DNS to purchase a domain name however after hours of troubleshooting I simply could not get it to resolve. I purchased another domain through AWS Route 53 and it worked instantly. 

**3. CloudFont/HTTPS** At first, I had some issues implementing HTTPS for security because the rules had changed about the target origin ID name and I was going off an old version. After some stack overflow searching, I corrected the issue. 

**4. API/DYNAMODB/LAMBDA** Steps 7 through 12 were the most difficult but rewarding challenges yet. Creating the API and database on DynamoDB was easy enough. Linking them together through Lambda functions was another story. Once I found the right docs and templates for boto3 SDK to access the database Things started to come together nicely. 
 
**5. Deploying with CI/DI** Deploying with CI/DI was a learning experience. I had not created a GitHub account at this point and it was a learning curve pushing my folders to GitHub using git. One problem I ran into with GitHub actions is that it was blocking my user account while updating the get/put lambda functions. I solved this by adding my user to the policy statements on each of the lambda functions. Another useful feature that I learned was the secrets function in GitHub. I used this to hide my user access key and secret key in my .yml file to be able to build and deploy my site as well as upload my site to s3 through the actions feature. 

**6. Certification** I am pending certification, giving myself a week to study up and pass the exam.

I am proud of myself for completing this challenge and hope to pursue my newfound interest in all things cloud. 

**Thanks for reading about my journey**