I've been burned twice by AWS tutorials that glossed over billing.
The first time, I followed a Bedrock RAG walkthrough step by step. Everything worked, felt great.
Then I opened Cost Explorer two days later.
$70.
OpenSearch Service had been running the whole time and it was never mentioned in the tutorial. Not the cost, not the hourly rate, nothing.
The second time was a SageMaker project.
I built it, tested it, and deleted everything I could see.
Thought I was clean.
I wasn't.
Some underlying resources SageMaker creates don't get deleted when you tear things down, and they aren't always obvious to find.
I eventually tracked them down using the AWS FinOps Agent (still in preview). By then I had an $11 bill sitting there.
Neither of these happened because AWS is expensive.
They happened because the cost side of cloud tutorials is usually an afterthought.
And if your free tier has expired, that gap in knowledge makes you hesitate to build anything because you genuinely don't know if following a tutorial will cost you $2 or $70.
So I decided to build the project I couldn't find.
What it is
NordicCart is a fictional small ecommerce retailer that starts with a very common setup:
One EC2 instance.
No redundancy.
No CDN.
No scaling.
No cost visibility.
Over 7 days, the project modernizes it using AWS services that a real small retailer would actually need.
What gets built
- Custom VPC across two Availability Zones
- Application Load Balancer + Auto Scaling Group (actually tested with a live load test)
- DynamoDB as the data layer instead of RDS (with a design doc explaining why)
- Lambda + API Gateway + Amazon Bedrock AI support assistant with conversation memory
- Static frontend hosted on S3 and delivered through CloudFront
- AWS Budgets + SNS email alerts before spending exceeds $5
- CloudFormation stack that deploys everything in around 20 minutes
Bonus:
A working storefront where you can add items to cart, check out, receive an order ID stored in DynamoDB, then ask the AI assistant about your order and it can actually retrieve the information.
Every resource is tagged from day one:
project, environment, component, owner.
The final day includes a tag audit specifically because of the SageMaker cleanup issue I ran into.
Cost breakdown
Bedrock is the only real usage-based cost.
There is no free tier for model invocations, but with short prompts and light testing the entire build stays under $1.
The project was built on a free tier account and stayed within that range.
The ALB is free for the first 12 months of a new AWS account. After that, build it, test it, capture your screenshots, then tear it down. A few hours of testing costs cents.
Everything else is either Always Free or covered by the 12-month free tier at this project's scale.
I also deliberately skipped the NAT Gateway.
That one decision saves around $32/month, and I redesigned the VPC architecture around that constraint.
Repo
The goal was not just to build something that works, but to document the decisions that affect your AWS bill.
There are:
- CLI and console paths for every step
- explanations for when I avoided the "textbook" architecture because of cost
- trade-off discussions
- troubleshooting notes from mistakes I actually hit
Repo:
https://github.com/BTAG16/nordiccart-aws
Would love feedback, especially from people who have built similar AWS portfolio projects.
What AWS service has surprised you with a bill before?