Skip to content

Costs and limits

Progress checklist

Do not hardcode per-GB or hourly rates — they age. Link pricing pages. The usual surprise is an m7g.large left running; objects and public IPv4 also bill until cleaned up.

ResourceStops billing when
EC2 m7g.largeTerminated (main hourly cost)
Public IPv4 on the instanceInstance terminated (or address released)
EBS root volumeDeleted with the instance (or separately)
Standard + Express objectsDeleted
Directory / Standard bucketsDeleted after empty
Gateway VPC endpointsDeleted (no NAT in this lab)
IAM roles / instance profilesFree — delete to avoid leftover permissions
ECR images / CodeBuildNot removed by demo.sh down — run image.sh down too (Tear down)

See S3 pricing and EC2 On-Demand pricing.

Lab default opens TCP 8080 to 0.0.0.0/0. Prefer SSM port-forward for local viewing when you do not need a public dash.

S3 Express One Zone
Amazon S3 Express One Zone — single-AZ storage class optimized for consistent single-digit millisecond latency, used only with directory buckets.
S3 Express One Zone
stores data redundantly within one Availability Zone. That is by design for latency — not multi-AZ durability like Standard. Use it for regenerable or explicitly single-AZ hot data, not as a sole copy of irreplaceable archives. See Where Express fits.

ConstraintDetail
Namingbase--zone-id--x-s3 (lab: --apse2-az1--x-s3)
LocationSingle AZ; Sydney Express AZ ID is apse2-az1 only
Auth for zonal opsCreateSession
s3express:CreateSession — session-based auth for zonal (object-level) operations on a directory bucket. The SDK or CLI obtains temporary credentials scoped to that bucket before GET/PUT/LIST.
NetworkingSame-AZ compute + gateway endpoints s3 and s3express
Taggings3control TagResource (not s3api put-bucket-tagging)
Syncaws s3 sync is rejected — use aws s3 cp --recursive
Feature parityNot every general-purpose S3 feature applies

Exact request-rate and quota numbers belong on the AWS docs — re-read them rather than copying numbers that may change.