OpsRunway Talk to an engineer

AWS for startups: the setup we'd pick, and the checklist to go with it.

Most AWS advice for startups is either a sales page for credits or a reference architecture built for a bank. This is the middle: the accounts, services and guardrails a typical SaaS team needs in its first two years, what each one costs, and what to leave for later.

Prices and service status checked: 22 Oct 2026, us-east-1

01The short version

The default AWS setup for a startup, in one paragraph.

Three AWS accounts under AWS Organizations (management, staging, production). People sign in through IAM Identity Center, never as root. One region, close to your customers. Containers on ECS with Fargate, Postgres on RDS, files in S3, CloudFront in front. Secrets in Secrets Manager or Parameter Store. CloudTrail, GuardDuty and a budget alert switched on in the first week. Everything written in Terraform from day one.

That's it. Nothing on that list needs a platform team, and none of it has to be thrown away when you grow. The rest of this guide explains each choice, the traps that cost money, and a checklist by stage you can work through.

Account structure: separate prod from everything else.

The single most useful thing you can do on AWS costs nothing. AWS Organizations is offered at no additional charge, and it lets you put production in its own account. A mistake in staging then can't delete a production database, and a leaked staging key can't read customer data.

A layout that fits a team of two to twenty:

  • Management account. Billing, Organizations, Identity Center. No workloads, ever.
  • Production account. Customer data lives here and only here.
  • Staging account. Staging, previews, experiments. Developers get broad access.
  • Later, a log archive and a security tooling account, when a SOC 2 audit or an enterprise customer asks where logs go.

IAM Identity Center is free and replaces IAM users for people. Everyone gets one login with MFA and picks the account and role they need. Leavers are removed in one place. If you already use Google Workspace or Microsoft Entra, connect it as the identity source.

Lock the root user away. Give it MFA, delete any access keys, and point its email at a shared inbox rather than a founder's personal address. Once you have Organizations, turn on centralised root access: AWS then lets you remove root credentials from member accounts entirely, and new member accounts are created without them.

03Region

Region choice: pick one and stay there.

Choose the region closest to most of your users, unless a customer contract or data residency rule says otherwise. EU customers asking about GDPR will be happier with Frankfurt, Ireland or Stockholm than with Virginia. If you have no preference, us-east-1 gets new services first and is among the cheapest regions.

Then stay in one region. Multi-region adds data transfer, replication and a second copy of everything to patch, and very few startups need it before they have a contract that demands it. Spread across Availability Zones inside your region instead. That covers most outages a small company will ever see.

A default AWS architecture for a typical SaaS.

A web app, an API, a background worker, a Postgres database and some file uploads. That covers most B2B SaaS products we see at seed and Series A. Here's what we'd run it on.

LayerDefault pickWhy, and the catch
ComputeECS on FargateNo servers or cluster to patch, and no control plane fee. Fargate on Linux/x86 is $0.04048 per vCPU-hour and $0.004445 per GB-hour; Arm (Graviton) is about 20% cheaper if your images build for it.
Simpler computeECS Express ModeGive it an image and two roles; it sets up the Fargate service, a load balancer with TLS, scaling and logs. No extra charge beyond those resources, and it shares one load balancer across services.
Spiky or event workLambdaGood for webhooks, queues and cron jobs. A poor fit for a busy, always-on API.
Load balancerOne Application Load Balancer per environment$0.0225 an hour plus usage, about $16 a month before traffic. Route several services through one with host or path rules.
DatabaseRDS for PostgreSQLManaged backups, patching and failover. Multi-AZ in production only. Aurora can wait until you have a reason.
FilesS3, private bucketsServe uploads through signed URLs or CloudFront, not public buckets.
CDNCloudFrontFlat-rate plans now exist: a $0 Free plan and a $15 a month Pro plan per distribution, with no overage charges. Check the allowances against your traffic.
SecretsSecrets Manager or Parameter StoreSecrets Manager is $0.40 per secret a month and handles rotation. Parameter Store standard parameters are free. Either beats environment variables in a CI tool.
Infrastructure as codeTerraformEverything above in code, reviewed like code. Rebuilding staging should be a command, not a week.

App Runner is closed to new customers. AWS has closed App Runner to new customers. Existing services keep running, but AWS says it won't add new features and points people to ECS Express Mode instead. Plenty of "AWS for startups" articles still recommend App Runner; if you're starting now, you can't sign up for it.

Why not Kubernetes? For most teams under 15 engineers it costs more in control plane fees and in people than it gives back. The numbers are in ECS vs EKS for startups. Coming from Heroku? The same stack is what we use on Heroku to AWS moves. Next.js on Vercel moves behind CloudFront the same way (Vercel to AWS), and a Supabase database onto RDS (Supabase to AWS).

05Networking

Sources: VPC pricing, NAT gateway pricing guide.

Networking without over-engineering, and the NAT gateway trap.

You need one VPC per account, public subnets for load balancers, private subnets for tasks and databases, across two or three Availability Zones. That's the whole design for a long time. Transit gateways, hub-and-spoke networks and custom firewalls are for companies with many accounts and a network team.

The trap is the NAT gateway. Private subnets need one to reach the internet, and most templates create one per Availability Zone, in every environment. In US East each costs $0.045 an hour plus $0.045 for every GB it processes.

  • One NAT gateway, a month, idle$32.85
  • Three AZs, one environment$98.55
  • Three AZs, three environments$295.65
  • Plus processing, per 100 GB through it+ $4.50

Illustrative: hourly charges for 730 hours, before any data processing.

That's often more than the containers it serves. What to do instead:

  • Production: one NAT per AZ is reasonable if you need the availability. Many seed-stage apps are fine with one.
  • Staging and dev: one NAT gateway, full stop.
  • Add a gateway VPC endpoint for S3 (and DynamoDB if you use it). They have no hourly or data processing charge, and S3 traffic stops going through the NAT.
  • Watch public IPv4 addresses. Every public IPv4 address costs $0.005 an hour, about $3.65 a month, whether in use or idle. Tasks in public subnets with public IPs add up.
06Cost alarms

Sources: Budgets pricing, Cost Anomaly Detection.

Budgets and cost alarms: set them before the first deploy.

AWS doesn't stop spending when you run out of money. It sends a bill. So set up the alarms on day one:

  • An AWS Budget on the monthly total, alerting at 50%, 80% and 100% of what you expect to spend. Budget monitoring and notifications are free.
  • A budget on gross cost, before credits. If credits cover the bill, the net figure stays at zero and tells you nothing until the month they run out.
  • Cost Anomaly Detection, emailing a shared address. It catches the runaway Lambda loop or the forgotten GPU instance within a day or so.
  • Cost allocation tags for environment and service, so the bill can be split by what caused it.

Send alerts to a channel people actually read. An alert that lands in a former employee's inbox is no alert. Our AWS cost guide for startups goes further into where the money goes once you're running.

AWS credits for startups, briefly.

AWS Activate gives self-funded startups $1,000 (up to $5,000 for some) through Founders, and backed startups up to $200,000 through Portfolio, via an accelerator or investor. Separately, new AWS accounts get $100 in Free Tier credits, with up to $100 more for trying services, for up to six months. To use Activate credits the account must be on a paid plan.

We cover tiers, eligibility and rejection reasons in AWS Activate credits. The thing to plan for is the end. Credits hide the real bill, so architecture choices made while AWS is "free" show up all at once. Model the date with the AWS credits runway calculator, and if it's close, read what to do when credits are ending.

The security baseline: small, and switched on early.

You don't need a security team to get the basics right. You need these, in every account:

  • MFA for every human, enforced through Identity Center. No IAM users with long-lived access keys for people.
  • A CloudTrail trail for the whole organisation, writing to an S3 bucket nobody can delete from. The first copy of management events delivered to S3 is free, and the console keeps 90 days of event history at no charge.
  • GuardDuty in every account and region you use. New accounts get a 30-day free trial, after which you pay by volume of logs and events analysed. The trial tells you what it will cost before you commit.
  • S3 Block Public Access at the account level, and encryption on RDS and EBS.
  • CI deploys through OIDC roles, not access keys pasted into GitHub secrets. Most CI platforms support this; compare CI/CD tools on OIDC to AWS.
  • A guardrail policy in Organizations that stops anyone disabling CloudTrail or leaving the organisation.

This list is also most of the infrastructure half of a SOC 2 readiness project. If enterprise customers are already asking for a report, see SOC 2 for startups.

09Backups

Source: RDS automated backups.

Backups: the restore is the part that matters.

RDS automated backups let you restore to any point in the retention period. Set retention to at least 7 days in production, and longer if you can afford it. Read the fine print on deletion: unless you choose to retain automated backups, they are deleted along with the database. Manual and final snapshots survive.

Three habits cover most of the risk:

  • Turn on deletion protection for the production database.
  • Copy snapshots to a separate account, so a compromised production account can't wipe its own backups.
  • Restore into staging once a quarter and time it. An untested backup is a hope, not a plan.

Turn on versioning for S3 buckets that hold anything customers uploaded, with a lifecycle rule that expires old versions so storage doesn't grow forever.

To write down RTO and RPO and price the recovery options, use our disaster recovery plan template.

10Not yet

What to avoid early.

  • Kubernetes without a one-sentence reason and someone to own upgrades.
  • Multi-region before a contract requires it.
  • Microservices for a team of four. One deployable app and one worker is fine.
  • Hand-built resources in the console. Whatever you click together today, someone has to reverse-engineer at Series A.
  • Savings Plans or Reserved Instances while the architecture is still changing, or while credits pay the bill.
  • Logs kept forever. CloudWatch log groups default to never expiring. Set retention in weeks.
  • One shared AWS account for everything, including a co-founder's side project.
  • Services closed to new customers. Check a service's status page before building on it; App Runner is the recent example.

Not sure when this stops being a side job for your CTO? Our DevOps for startups guide and when to hire a DevOps engineer cover that.

11Checklist

A longer version, with 46 checks: production readiness checklist.

AWS architecture checklist for startups, by stage.

AreaBefore launchBefore Series ALater
AccountsOrganizations on; prod separate from staging; root has MFA and no keysCentralised root access; guardrail policiesLog archive and security accounts
AccessIdentity Center with MFA for everyoneRoles per job, not admin for all; CI via OIDCQuarterly access review, written down
ComputeECS on Fargate (or Express Mode); health checksAutoscaling; Arm images where they buildRevisit EKS only with a concrete reason
DataRDS automated backups, 7+ days; deletion protectionMulti-AZ in prod; tested restoreSnapshots copied to another account
NetworkPrivate subnets for tasks and DB; S3 gateway endpointOne NAT in non-prod; review public IPv4Network segmentation if a customer asks
SecretsSecrets Manager or Parameter Store; nothing in gitRotation for database credentialsPer-service KMS keys if required
SecurityCloudTrail; GuardDuty; Block Public AccessFindings routed to a person, not a folderSOC 2 controls and evidence
CostBudget alerts on gross cost; anomaly detectionTags by environment and service; cost per customerSavings Plans on the steady baseline
CodeTerraform for everything newConsole-built resources importedShared modules across teams

Stages are a guide, not a rule. A startup selling to banks will need the "later" column sooner.

12Questions

AWS for startups: common questions.

Is AWS a good choice for an early-stage startup?

Yes, if you keep to managed services and don't build for scale you don't have. The credits help, and the services above are the ones investors' technical reviewers expect to see. The risk isn't AWS itself; it's building a complicated setup that one person understands.

Should we use App Runner?

Only if your account already uses it. AWS has closed App Runner to new customers. New teams should look at ECS Express Mode, which AWS recommends as the replacement.

Do we really need separate AWS accounts for staging and production?

Yes, and the earlier the cheaper. Organizations is free, and splitting accounts later means moving databases and rewriting permissions. Starting split takes an afternoon.

How much should AWS cost a seed-stage SaaS?

It depends on the product, so we won't give a single number. For a small app on the stack above, the fixed items are the load balancers, NAT gateways and databases. Price those per environment first; they often outweigh the containers.

Can you check our current setup against this list?

That's what the AWS production readiness review is: a fixed $1,900 review with a written report.

13Next step

Already on AWS and unsure how much of this checklist you pass? We'll review your accounts and send back a written list of what to fix first.

StripREVIEW-01
TypeFixed price
Duration5 working days
AccessRead-only
OutWritten report + 60-min call
Price$1,900
NextAWS readiness review
Talk to an engineer