// portfolio.infra

Krish Srivastava

This page is a running piece of AWS infrastructure, not a mockup of one. Everything below — the CDN, the database, the function answering the counter — is live right now.

Serving over CloudFront
Deployed via AWS CDK
ARCHITECTURE — live traffic + monitoring path
Visitor CloudFront S3 bucket GET /count API Gateway Lambda DynamoDB CloudWatch Alarm SNS → Email static assets serverless request on error
Static content is edge-cached through CloudFront. The visitor counter hits a separate serverless path — API Gateway → Lambda → DynamoDB. A CloudWatch alarm watches the Lambda's error rate and emails an alert via SNS if anything fails.
STACK
Amazon S3Origin storage for site files
CloudFrontCDN + HTTPS, OAC-secured origin
API Gateway (HTTP API)Public endpoint for the counter
Lambda (Python 3.12)Self-initializing counter logic
DynamoDBOn-demand, single-item table
CloudWatch + SNSAlarm on Lambda errors, emailed on trigger
AWS CDK (Python)Whole stack, one command
GitHub ActionsTests + cdk synth on every push
Every load of this page calls the live API above and increments a real row in DynamoDB. No mock data.
—visitors served
BUILD LOG
✓Static hosting on S3
✓CDN + HTTPS via CloudFront
✓Serverless counter — Lambda, API Gateway, DynamoDB
✓Rebuilt as Infrastructure as Code — AWS CDK
✓Real unit tests against deployed resources
✓CloudWatch alarm + SNS email alerts on errors
✓CI via GitHub Actions — tests + cdk synth on push
○CD — automated deploy on merge to main