The Cloud Resume Challenge
Tags: aws, serverless, codepen, sql
Published: 2020-05-21 17:49:28

I started the cloud resume challenge as a recommendation by friends on Reddit. I'm aspiring to be an AWS cloud engineer and needed more hands on experience. After 14 years of healthcare management and working the frontlines of the hospital setting to treat patients, I am excited to pursue a new challenge in life with this career move into the world of cloud. I currently have obtained 4 AWS certifications and greatly enjoy learning more about AWS tech. This resume challenge, presented by Forrest Brazeal, took me days to accomplish and after several trial and error setups I finally completed the challenge. Here were my steps and findings along the way:

1. First I created a simple html resume and included my certifications and experience. I created a Github repository and added my assets, css and index.html file. I used Atom to write the code and push it to my Github repository.
2. The next step of the challenge was to upload these files to my newly created S3 bucket. I also setup my bucket to host a static website.
3. Next I obtained a domain name through Route53, created an SSL certificate through AWS Certificate Manager and finally tied this all together with a CloudFront distribution. Once these steps were completed I could visit my newly created site and noticed that it was indeed secured through SSL.
4. I skipped around the challenge somewhat and went ahead and created my website counter and javascript. I added these files to both my repository and S3 bucket. One challenge I wasn't prepared for was having to invalidate my CloudFront distributions once I made changes to files in my S3 bucket. Finally my website counter is on my static website and working properly.
5. The next step was to build a DynamoDB table and format it to count visits made to my site. Creating this database was simple but the steps following provided me great challenges.
6. I created a Lambda function with proper IAM roles/policies to access DyanmoDB. I setup the Lambda function to send data to the database once triggered. One of the requirements of this challenge was to use Python. This was slightly difficult for me as I've never used python before and was struggling finding the correct code to actually send the data to the db in the correct structure and increment. 
7. At this point I configured API with both GET and PUT methods. I deployed and tested these successfully in the console. I also used Postman to run GET and PUT tests as well. Once this was completed, I deployed my prod API and attached my invoke url to my website counter javascript code. I attached my Lambda function to the PUT method and my website counter api url as an http endpoint for the GET method. This would pull the current website count, trigger the Lambda function to put the updated number onto my DynamoDB table. Tested and working appropriately.
8. Finally, I used AWS CodePipeline to configure my deployment to my S3 bucket. I connected this with my Github repository so that code/documentation changes made going forward would be reflected in my bucket. I will be attaching this short write-up to my Github repository code and if all goes well it will be displayed on my static website.

Finished product: https://www.jcmresume.com

This was a great learning experience and I'm incredibly excited about making a career change into the world of Cloud. 

Jerry C. Mullis