← All projects

01 / CLOUD & DEVOPS / CASE STUDY

AWS Portfolio & Serverless Contact

A public portfolio with private-origin delivery and an AWS contact integration.

Deployed portfolio Inspect source on GitHub ↗
Architecture schematic: Browser / HTTPS to CloudFront / S3 to API Gateway to Lambda / SES
Architecture schematic based on reviewed source. No live system data.

Architecture

Browser / HTTPS → CloudFront / S3 → API Gateway → Lambda / SES

Problem & context

A static website needs HTTPS delivery, controlled origin access and a contact channel without a dedicated application server.

Objectives

Publish the portfolio through a custom-domain AWS delivery path and connect the browser contact form to an AWS endpoint.

My role & project work

Built the static application and contact integration; documented private S3/CloudFront hosting and the Lambda/SES backend during Cloud and DevOps practical work.

Technical implementation

The browser sends bounded JSON contact requests to API Gateway. The documented hosting design uses a private S3 origin, CloudFront OAC, Route 53 and ACM. The GitHub workflow builds and validates the site, packages public assets and has a main-branch S3 deployment stage.

Engineering decisions

Keep source templates and tests outside the public upload package. Serve content through the existing HTTPS distribution and use an API endpoint for contact requests rather than adding a web server.

Challenges & solutions

Resolved origin-access and CORS configuration issues in the documented project. The latest automated deployment was blocked by invalid stored AWS credentials; the current version was subsequently uploaded manually to S3 by the owner.

Testing & verification

Reviewed application source, deployment workflow and packaging checks. Verified the production-origin CORS preflight. The owner confirmed the manual S3 upload worked. Lambda source, IAM policies, email delivery and current CloudFront configuration were not independently inspected.

Current status

Public portfolio. Manual S3 upload confirmed by the owner; GitHub deployment credentials still require repair. No availability or email-delivery guarantee is claimed.

Lessons & next steps

An upload must include CSS, JavaScript, case studies and assets together. Validation and an explicit deployment package help prevent incomplete releases.

Discuss this work → View resume