The Cloud Resume Challenge consists of the following:
Pass the AWS Certified Cloud Practioner exam
Front-End: Deploy your website to S3 and fronted with DNS / CloudFront
Back-End API: Get the visitor counter saving to the database
Front-End / Back-End Integration: Get the visitor counter displaying on the homepage
Automation & CI/CD: Get your infrastructure automated with SAM and deploying via GitHub Actions
Mods: Repeat the challenge with suggested modifications
AWS Cloud Practioner Cert
A bit challenging since I had zero experience. I used Stephane Maarek's Udemy course to study. Passed the exam with a score of 843.
Deploying Infrastructure
Steps to deploy my infrastructure:
Set up AWS
Deploy S3 using AWS SAM
Deploy HTML & CSS with the AWS SDK
Deploy and configure CloudFront
Configure CloudFront, Route53 and DNS
Set up HTTPS and ACM with CloudFront
Attach a CloudFront Custom Domain
Visitor Counter REST API with Lambda and DynamoDB
Steps to create the webpage visitor counter:
Deploy and configure Lambda and API Gateway
Set up CORS with Lambda and API Gateway
Call the HTTP API using JavaScript
Set up DynamoDB with AWS SAM
Insert data into DynamoDB
Get data from DynamoDB using AWS SDK
CI/CD with GitHub and CodeBuild
Steps to automate CI/CD:
Create GitHub repo for the project
Make first commit to the repo
Create CodeBuild project and connect to GitHub repo
Push changes to GitHub repo and verify CodeBuild project builds successfully
The Finished Project
I made two different versions that acheive the same result:
Version #1: A single API call is made to update and retrieve the count.
Version #2: Two API calls are made - one to update the count and one to retrieve the count.
For Version #1 visit andrzejwsol.com. The visitor counter is at the bottom of the page.
The visitor counter API utilizes a monolithic function to increment and retrieve the count via a single API call.
andrzejwsol.com has been viewed times.
For Version #2 visit super-special-test-domain.com.
The visitor counter API utilizes two single-purposed functions to update and retrieve the count - PUT to increment the count and GET to retreive the count.
super-special-test-domain.com has been viewed times.
Recap
The Cloud Resume Challenge was exciting, difficult and worth the frustration. Here is a list of modifications I would like to implement when I redo the challenge:
JavaScript framework for the front-end
Convert my AWS resources to infrastructure-as-code (IaC) using Terraform
Create GitHub Actions to automatically deploy updates
Integration/End-to-end testing with Cypress
Configure DNSSEC for my site domain name to protect my DNS setup from potential spoofing attacks
CloudWatch and SNS to establish metrics, alarms, and notifications
Create a new API method to only count unique visitors
Clean up the API calls
Secure access to the visitor counter APIs by putting a web application firewall in front, such as AWS WAF