The full details of the challenge can be found in the link below:
https://cloudresumechallenge.dev/
This is a summary of the actual code related tasks I had to complete for the Cloud Resume Challenge:
-
HTML
- Create a resume site written in HTML
-
CSS
- The resume site should be styled with CSS
-
Static S3 Website
- Deploy as a static S3 website
-
HTTPS
- Make the site secure with HTTPS via an Amazon Cloudfront distribution
-
DNS
- Point a custom DNS domain to the Cloudfront distribution
- Amazon Route53 was used in my case
-
JavaScript
- Add a visitor counter to the site using JavaScript
-
Database
- The visitor counter should have it's count retrieved and updated in a database
- Amazon DynamoDB was the database of choice
-
API
- Communicate with datbase via an API rather than the JavaScript code itself
- Amazon API Gateway was used to create the service that triggered an Amazon Lambda function that retrieved and updated the database
-
Python
- Create an Amazon Lambda function using Python that retrieved the count from and updated the count in the database
-
Tests
- Test the code to make sure it is functioning properly
- A PyTest unit test was used to test the python code for the lambda function
- A Cypress end-to-end test was used to test the API created
-
Infrastructure as Code
- Provision the API Gateway, Lambda function, and DynamoDB using IaC
- Terraform was the tool of choice in my case, not only to deploy the API resources, but to also deploy the resume website resources and a custom API domain name as well (Route53, Cloudfront distributions, S3 buckets)
-
Source Control
- Updates should be made automatically rather than through calls from your laptop
- GitHub was the obvious tool of choice in my case
-
CI/CD Backend
- Any updates to the infrastructure or Python code pushed should automatically be packaged and deployed onto AWS as long as it passes testing
- GitHub Actions was used to handle this process
-
CI/CD Frontend
- Any new website code pushed would automatically update the S3 bucket with the new code as long as it passes testing
- A Cloudfront invalidation was also triggered after a successful upload to the S3 bucket in order to publish the changes immediately
- GitHub Actions was also used to handle this process