Jeff Sherard

AWS Inventory

AWS • us-east-1

All resources powering jsherard.net, .com, and .org

37 Managed Resources • 10 Services

All infrastructure is defined in Terraform and deployed via GitHub Actions. Last scanned April 2026.

Estimated Monthly Cost

S3 (storage + requests) $0.01
CloudFront (CDN + SSL termination) $1.00 – $3.00
ACM (SSL certificate) $0.00
Route 53 (3 hosted zones + queries) $1.50
Lambda (movie API) $0.00 – $0.10
API Gateway (HTTP API) $0.00 – $0.05
IAM (role + policies) $0.00
CloudWatch Logs (14-day retention) $0.00
S3 (Terraform state bucket) $0.00
DynamoDB (Terraform state locking) $0.00
Total ~$2.50 – $4.65 / month

Estimates assume low traffic for a personal site. Lambda and API Gateway include AWS Free Tier (1M requests/month). CloudFront costs vary by traffic volume and geographic distribution. Route 53 is the only fixed cost at $0.50/hosted zone/month.

S3

Static Site Bucket

Amazon S3 • Static site storage
~$0.01/mo
Regionus-east-1
Objects6 files • 92.2 KB total
EncryptionSSE-S3 (AES-256)
VersioningDisabled
Public AccessBlocked (OAC only)
LoggingNot configured

OBJECTS
index.html1.6 KB resume.html7.7 KB ai-build.html22.7 KB movies.html3.1 KB css/style.css9.7 KB img/headshot.jpg47.5 KB
CF

CDN Distribution

Amazon CloudFront • CDN + SSL termination
$1–3/mo
StatusDeployed • Enabled
Price ClassPriceClass_All (all edge locations)
HTTP VersionHTTP/2
IPv6Enabled
CompressionEnabled
Default Rootindex.html
Min TLSTLSv1.2_2021

ALIASES (6)
jsherard.net www.jsherard.net jsherard.com www.jsherard.com jsherard.org www.jsherard.org

ORIGINS (2)
S3 Regional S3 endpoint
Access: Origin Access Control (OAC)
API Gateway HTTP API endpoint
Access: Direct (HTTPS-only)

CACHE BEHAVIORS (2)
Default (*)S3 origin • GET, HEAD • TTL 0/3600/86400s
/api/*API Gateway origin • GET, HEAD, OPTIONS • TTL 0/300/600s
SSL

SAN Certificate (6 domains)

AWS Certificate Manager • TLS termination
$0.00/mo
StatusIssued • Auto-renewal eligible
ExpiresOctober 17, 2026
ValidationDNS (6 CNAME records in Route 53)
Used ByCloudFront distribution

COVERED DOMAINS (6)
jsherard.net www.jsherard.net jsherard.com www.jsherard.com jsherard.org www.jsherard.org
R53

3 Hosted Zones • 21 Records

Amazon Route 53 • DNS management
$1.50/mo
jsherard.net Primary hosted zone • 7 records
jsherard.com Alias hosted zone • 7 records
jsherard.org Alias hosted zone • 7 records

RECORD TYPES PER ZONE
NS + SOAAuto-created by AWS (2 records)
A (alias)Apex + www → CloudFront
AAAA (alias)Apex IPv6 → CloudFront
CNAMEACM DNS validation (2 records)

Registrar: GoDaddy (all 3 domains) • NS records delegated to Route 53

λ

Movie Showtimes Function

AWS Lambda • Movie showtimes API
~$0.00/mo
RuntimePython 3.12
Handlerapp.handler
Architecturex86_64
Memory256 MB
Timeout30 seconds
Code Size3.2 MB (zip)
Ephemeral Storage512 MB
FrameworkFlask + apig-wsgi

Scrapes Cinemark Century Boulder showtimes and returns JSON at /api/movies. Invoked via API Gateway HTTP API. Free tier covers 1M requests and 400,000 GB-seconds/month.
API

Movie API Endpoint

Amazon API Gateway • HTTP API (v2)
~$0.00/mo
ProtocolHTTP (v2)
Stage$default (auto-deploy)
IntegrationAWS_PROXY → Lambda (payload v2.0)
RoutingDefault route catches all requests

HTTP APIs cost $1.00 per million requests. Free tier covers first 1M requests/month for 12 months. Traffic routed through CloudFront at /api/*.
IAM

Lambda Execution Role

AWS IAM • Lambda execution role
$0.00/mo
TypeService role (lambda.amazonaws.com)
Managed PoliciesAWSLambdaBasicExecutionRole
Inline PoliciesNone
PermissionsCloudWatch Logs: CreateLogGroup, CreateLogStream, PutLogEvents
CW

Lambda Log Group

Amazon CloudWatch • Lambda logs
$0.00/mo
Retention14 days
Stored Data~0 bytes (minimal traffic)
Ingestion Cost$0.50/GB (negligible at this scale)
S3

Terraform State Bucket

Amazon S3 • Terraform remote state
~$0.00/mo
Regionus-east-1
VersioningEnabled (state history)
EncryptionSSE-S3 (AES-256)
Public AccessFully blocked

Stores Terraform state remotely instead of in git. Versioning provides state rollback. Cost is negligible for a single ~70 KB state file.
DDB

Terraform Lock Table

Amazon DynamoDB • State locking
$0.00/mo
Regionus-east-1
Billing ModePay-per-request (on-demand)
Partition KeyLockID (String)

Prevents concurrent Terraform operations from corrupting state. Pay-per-request billing means zero cost at this usage level.

Terraform State

Providerhashicorp/aws v5.100.0
Terraform>= 1.5 (using 1.14.3)
State BackendS3 + DynamoDB locking
Modulesmodules/static-sitemodules/movie-app
Resources37 managed
Data Sources1 (IAM policy document)

Optimization Opportunities

  • SAVE Switch CloudFront from PriceClass_All to PriceClass_100 (US/Canada/Europe). Audience is North America; no need for Asia/Pacific edge locations.
  • SAVE Reduce Lambda memory from 256 MB to 128 MB. A lightweight Flask scraper doesn't need the extra headroom.
  • SECURITY Disable the API Gateway execute-api endpoint to force all traffic through CloudFront, preventing direct access bypass.
  • IMPROVE Enable S3 versioning for rollback capability on site content.
  • IMPROVE Enable CloudFront access logging to an S3 bucket for traffic analytics.