Blog · Infrastructure
☁️ Infrastructure

AWS Deep Dive 2026: What It Is, What You Actually Need, and Why Your Bill Spirals

AWS (Amazon Web Services) is the world's largest cloud platform — the foundation of a meaningful fraction of the internet. It's also the platform that's most associated with "I accidentally spent $5,000 in a weekend." Both characterizations are true. This post is a working developer's tour of what's actually in AWS, what matters for small-to-mid scale projects, and how to use it without an unpleasant credit-card surprise.

What AWS is

AWS is a catalog of around 200 distinct services covering compute, storage, networking, databases, AI, identity, observability, content delivery, and dozens of niches. You pick the services you need, glue them together, and pay for what you use.

The platform launched in 2006 with S3 (object storage) and EC2 (virtual machines). It's now the largest single business unit within Amazon by profit, and the platform of choice for enterprise workloads worldwide. Microsoft Azure and Google Cloud are competitive at the high end; AWS leads on service breadth and ecosystem maturity.

Why AWS is confusing

Three reasons people bounce off AWS:

  1. Service sprawl. ~200 services, many overlapping, many with cryptic names (RDS, ECS, EKS, ECR, EMR, EFS). You're never sure which one is "the right one."
  2. Pricing complexity. Many services have several pricing dimensions (compute time + data transfer + storage + requests + cross-region). The bill is hard to model upfront.
  3. IAM (Identity & Access Management). Granular, powerful, deeply confusing. The "principle of least privilege" is correct security; getting it right takes practice.

The trick to AWS is not learning all of it. The trick is identifying the 8-10 services you actually need and ignoring the rest until proven otherwise.

The services you actually need to know

That's 16 services covering what most serious production workloads need. The other 180+ are for specialized situations.

Compute options compared

"Where does my code run?" has many answers on AWS:

For a solo-dev iOS backend on AWS: Lambda + API Gateway for the API endpoints, or App Runner for a more traditional always-on server. Avoid spinning up EC2 manually unless you have a specific reason.

Storage and databases

S3

Object storage. Drop files in, retrieve them later. Used for: app file uploads, static website assets, backup, ML training data, log archives. Priced per GB stored + per request + per GB transferred out. The transfer-out part is where bills get surprising at scale.

RDS

Managed relational databases. AWS runs your PostgreSQL or MySQL instance, handles backups, patching, replication. Costs are dominated by instance size + storage + I/O.

Aurora

AWS's own MySQL/Postgres-compatible database engine. Faster than vanilla RDS, more expensive. Aurora Serverless v2 scales compute down to near-zero when idle, useful for variable workloads.

DynamoDB

Key-value / document database. Massive scale, predictable single-digit-millisecond latency, pay-per-request pricing available. Steep learning curve if you've only used relational databases — DynamoDB requires you to design access patterns up front.

EFS / EBS

File systems for EC2 instances. EBS = block storage attached to a single instance. EFS = network file system shared across instances. Mostly irrelevant if you're not running EC2.

What to pick

For most apps: PostgreSQL on RDS (or Aurora Serverless v2) + S3 for uploads. DynamoDB only when you have specific scale or access-pattern requirements. Aurora over RDS when the cost difference is justified by performance.

Networking essentials

The minimum networking concepts:

The NAT Gateway is famously where small-team AWS bills surprise people. If you don't need outbound-only private subnets, don't deploy one.

IAM — security that scales

IAM (Identity and Access Management) controls who can do what. Three core entities:

Get the basics right early:

  1. Enable MFA on your root account. Never use the root account for daily work.
  2. Create a personal admin IAM user with MFA, use that.
  3. Give each service a specific role with the minimum permissions it needs. "AdministratorAccess" on a Lambda function is a footgun.
  4. Rotate access keys quarterly.
  5. Use IAM Access Analyzer to find overly-permissive policies.

Bedrock and Claude on AWS

AWS Bedrock is the managed service for accessing large language models, including Anthropic's Claude family, directly through AWS. The Bedrock API gives you Claude (and other models) with AWS billing, AWS-native authentication, and easy integration with other AWS services (Lambda, Step Functions, etc.).

Why use Bedrock vs the Anthropic API directly:

Why use the Anthropic API directly instead:

For your iOS apps (which proxy through Railway), Anthropic API directly is the right call. Bedrock is for AWS-native architectures.

The cost traps that get everyone

The Greatest Hits of unexpected AWS bills:

Mitigations: set a billing alarm on day one ("alert me if monthly spend crosses $50"). Use AWS Cost Explorer weekly. Tag every resource so you can attribute cost. Delete what you don't use.

When AWS is the right choice

AWS is the right choice when:

AWS is the wrong first choice for a solo developer shipping an iOS app to the App Store. Railway / Vercel / Firebase will get you there faster with less risk. Migrate to AWS later if you outgrow the simpler platforms.

A pragmatic AWS starter stack

If you've decided AWS is right and want a minimal, sane setup:

That's enough to ship a real product. Add complexity only as specific problems require it.


See also: Backend Servers Explained, Railway vs AWS, Azure Deep Dive, GCP Deep Dive.

Sources & References
  1. AWS — Documentation
  2. AWS — Bedrock
  3. AWS — Pricing