This site: the AWS Cloud Resume Challenge
The page you are reading is a static site in a private S3 bucket, served through CloudFront over HTTPS on a Route 53 domain. The view counter is a Lambda function behind a function URL that reads and updates a DynamoDB table. All of it is defined in Terraform, and GitHub Actions deploys the site and applies the infrastructure on every merge.
I later went back to fix what had drifted. The counter's Lambda and table, first built by hand in the console, are now managed by Terraform. CI signs in to AWS through GitHub OIDC with no stored keys, and can only write from the main branch. The counter now updates atomically, so simultaneous visits are all counted, and a test of 50 concurrent requests has to pass before it can deploy.
- S3
- CloudFront
- Route 53
- Lambda
- DynamoDB
- Terraform
- GitHub Actions
- OIDC
- pytest
- Visitor
- Route 53
- CloudFront
- S3 bucket
- Lambda URL
- DynamoDB