Skip to content

Project that involved creating a resume website, deploying AWS resources (S3 buckets, Cloudfront distributions, an API Gateway, a Lambda function, and a DynamoDB table) via IaC using Terraform, Unit Test via PyTest, End to End Test via Cypress, and CI/CD via GitHub Actions

Notifications You must be signed in to change notification settings

agruezo/CloudResumeChallenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI/CD


☁️ Cloud Resume Challenge ☁️

📓 Requirements


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:


  1. HTML

    • Create a resume site written in HTML
  2. CSS

    • The resume site should be styled with CSS
  3. Static S3 Website

    • Deploy as a static S3 website
  4. HTTPS

    • Make the site secure with HTTPS via an Amazon Cloudfront distribution
  5. DNS

    • Point a custom DNS domain to the Cloudfront distribution
    • Amazon Route53 was used in my case
  6. JavaScript

    • Add a visitor counter to the site using JavaScript
  7. Database

    • The visitor counter should have it's count retrieved and updated in a database
    • Amazon DynamoDB was the database of choice
  8. 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
  9. Python

    • Create an Amazon Lambda function using Python that retrieved the count from and updated the count in the database
  10. 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
  11. 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)
  12. Source Control

    • Updates should be made automatically rather than through calls from your laptop
    • GitHub was the obvious tool of choice in my case
  13. 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
  14. 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

About

Project that involved creating a resume website, deploying AWS resources (S3 buckets, Cloudfront distributions, an API Gateway, a Lambda function, and a DynamoDB table) via IaC using Terraform, Unit Test via PyTest, End to End Test via Cypress, and CI/CD via GitHub Actions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published