Main Domain
Route 53 hosts DNS for bryanweizeang.dev and points the apex domain to CloudFront using an alias record.
AWS Architecture
The main domain is bryanweizeang.dev. The www subdomain redirects to the main domain, while CloudFront serves the site over HTTPS from a private S3 origin through Origin Access Control.
Route 53 hosts DNS for bryanweizeang.dev and points the apex domain to CloudFront using an alias record.
www.bryanweizeang.dev redirects to bryanweizeang.dev so visitors use one canonical domain.
CloudFront uses an ACM certificate created in us-east-1 because CloudFront is a global service.
The main S3 bucket blocks public access and is read only by CloudFront through Origin Access Control.
Serverless Contact Form
Provides the public HTTPS endpoint for form submissions and allows requests only from the portfolio domains through CORS.
Validates the form payload, applies basic spam handling, stores the submission, and calls SES without running a dedicated server.
Stores valid contact submissions with a message ID, timestamp, sender details, message content, source IP, and user agent for backup and review.
Sends email from the verified portfolio domain to the configured inbox, with the visitor email used as the reply-to address.
The Lambda execution role is scoped to write to the contact table and send email from the verified domain to the intended recipient address.
Storage and Logging
Stores HTML, CSS, JavaScript, and static assets for bryanweizeang.dev. Versioning is enabled, and direct public access is blocked.
Supports redirect behavior from www.bryanweizeang.dev to bryanweizeang.dev.
Receives S3 server access logs from the main website bucket and remains separate from website assets.
Lifecycle Rules
Current log object versions transition to S3 Standard-IA after 30 days and expire after 90 days.
The 3 newest noncurrent versions are retained, while older noncurrent versions are permanently deleted.
Future Improvements