Cloud Resume Challenge Journey
Design



Deployment Details (https://cloudresumechallenge.dev
- Certification - I received my AWS Certified Cloud Practitioner certification using Linux Academy, A Cloud Guru, and AWS Training.
- HTML (Stored in AWS S3) - Used mostly basic list item tags.
- CSS (Stored in AWS S3) - Used a simple CSS I found online and customized it with colors and fonts that I like.
- Static S3 Website - HTML files and images are stored in an AWS S3 bucket configured to host a static website. Additionally, I used AWS Pipeline to monitor a GitHub repository for changes. As soon as I push an update to my GitHub repository, AWS Pipeline copies the changes to the AWS S3 bucket. Here is the direct URL for the site: http://johnkoenig.ninja.s3-website.us-east-2.amazonaws.com/
- HTTPS - Used Amazon CloudFront and AWS Certificate Manager to create an issue a certificate. Here is the URL for the CloudFront site using the registered DNS name: http://johnkoenig.ninja
- DNS (Route 53) - Registered the domain johnkoenig.ninja using AWS Route 53. Then I created a Route 53 hosted zone to maintain records for my new domain and to direct traffic to my static website hosted in AWS S3.
- Javascript - Used JavaScript to get a visitor counter for the main page. The JavaScript calls an API and receives a JSON response. It then formates the response to only pass the numeric count back to the website.
- Database - Create a DynamoDB table with one record to maintain the visitor count for my website.
- API - Created an API using AWS's API Gateway and Lambda functions. The Lambda function is written in Python.
- Python - Use Python for the Lambda function to increment the count value in the DynamoDB table and then return the updated count.
- Tests - I included basic tests that are executed in the GitHub repository on push events.
- Infrastructure as Code - Used the AWS Serverless Application Model (SAM) to deploy the API Gateway, Lambda Function, and DynamoDB table using the AWS SAM CLI.
- Source Control - I created four GitHub repositories for my code (Frontend/HTML, API Gateway, Lambda, DynamoDB). At first, I tried to consolidate all backend repositories, but then I remembered the benefits of loosely coupled applications. In my specific implementation, separating each component helped me to think about simple tests for each component.
- CI/CD (Back end) - Set up a GitHub Action to perform basic tests for my backend repositories, then deploy the code via SAM.
- CI/CD (Front end) - To leverage another AWS feature, I configured frontend changes to be deployed from GitHub via AWS Pipeline.
- Blog post - I used WordPress
Other AWS Services Used
- Budgets (For monitoring AWS expense)
- Simple Notification Service (For AWS spending alerts)
- CodePipeline (Pipeline from GitHub to AWS S3)
Other Sites Used