Cloud Resume Challenge Journey


Design

My CRC AWS Deployment

My CRC AWS Frontend Build

My CRC AWS Backend Build


Deployment Details (https://cloudresumechallenge.dev

  1. Certification - I received my AWS Certified Cloud Practitioner certification using Linux Academy, A Cloud Guru, and AWS Training.
  2. HTML (Stored in AWS S3) - Used mostly basic list item tags.
  3. CSS (Stored in AWS S3) - Used a simple CSS I found online and customized it with colors and fonts that I like.
  4. 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/
  5. 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
  6. 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.
  7. 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.
  8. Database - Create a DynamoDB table with one record to maintain the visitor count for my website.
  9. API - Created an API using AWS's API Gateway and Lambda functions. The Lambda function is written in Python.
  10. Python - Use Python for the Lambda function to increment the count value in the DynamoDB table and then return the updated count.
  11. Tests - I included basic tests that are executed in the GitHub repository on push events.
  12. 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.
  13. 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.
  14. CI/CD (Back end) - Set up a GitHub Action to perform basic tests for my backend repositories, then deploy the code via SAM.
  15. CI/CD (Front end) - To leverage another AWS feature, I configured frontend changes to be deployed from GitHub via AWS Pipeline.
  16. Blog post - I used WordPress

Other AWS Services Used


Other Sites Used