AWS Pricing Calculator EC2 FinOps

The Pricing Calculator Feature I Wish I'd Found Three Years Ago: Bulk Import

Bulk import isn't new — it's been in the AWS Pricing Calculator since 2022. But I only stumbled onto it today, tucked into the redesigned calculator. If you've ever clicked "Add service" forty times to price a migration, this one's for you.

SECTION 01

A confession up front

I've been building AWS estimates for years, and I found this feature today. Turns out bulk import for EC2 has existed since December 2022 — it just never crossed my path, because the old calculator buried it and I'd trained myself to click through the wizard on autopilot.

The Pricing Calculator went generally available inside the AWS console in May 2025, and in the redesigned experience the Bulk import button now sits right on the Add service screen where you can't miss it. So this isn't a launch post. It's a "how did I not know about this" post — and if you price fleets by hand, it might save you the same forty clicks it's about to save me.

calculator.aws
AWS Pricing Calculator landing page
The public calculator at calculator.aws — no sign-in needed for a public estimate.
SECTION 02

The problem it solves

Here's a scene every consultant knows. A client sends over a fleet: 30-odd EC2 instances across a couple of regions, mixed operating systems, some on-demand, some destined for Savings Plans. You open the Pricing Calculator and start the ritual — Add service, pick region, pick OS, pick instance type, set usage, pick pricing model, add storage, save. Then again. And again.

By instance twelve you've lost track of which ones you've done, and by instance thirty you've made at least one silent typo that quietly inflates the estimate. Bulk import kills that ritual: fill one Excel template, upload it, and every row becomes a priced line item. I ran a real fleet through it this week — here's exactly how it works, what tripped me up, and the one error that cost me ten minutes.

SECTION 03

Where to find it

Go to calculator.aws and hit Create estimate (no sign-in needed for a public estimate, though signing in gets you volume-discount-aware pricing). On the Add service screen, look top-right: there's a Bulk import button next to the service search.

add-service.png
Add service screen with Bulk import button top-right
The Add service screen — the "Bulk import" button lives top-right.

Click it and you land on the Bulk import screen, where the first choice is which service to estimate in bulk. Right now the dropdown offers three: EC2 Instances, EC2 Dedicated Hosts, and Elastic Block Store (EBS). I picked EC2 Instances.

choose-service.png
Bulk import service dropdown showing EC2 Instances, Dedicated Hosts, EBS
Three services support bulk import today: EC2 Instances, EC2 Dedicated Hosts, and EBS.
SECTION 04

The three-step flow

The screen lays it out plainly: download the template, fill it, upload it.

instructions-tab.xlsx
Instructions tab of the bulk estimation template
The Instructions tab spells out each step and gives a full column-definition table.

Step 1 — Download the template

Download the EC2 Instances Excel template. The instructions are blunt about one thing, and they're right: download it fresh every time. The template carries dropdown validation lists (regions, OS, purchasing options) that change as AWS adds regions and plans. A stale template from last quarter will fail validation on values that are now valid — or worse, accept values that no longer are.

Step 2 — Fill in your data

Open the workbook and go to the Inputs tab. There's also an Instructions tab with a full column-definition table, which is genuinely useful.

Step 3 — Upload the Excel file

Choose the file, wait for "Loading service," and the calculator parses every row.

upload.png
Step 3 Upload the Excel file, loading service
Step 3 — choose the file and wait for the parse.
SECTION 05

What the template actually looks like

The Inputs sheet is two logical blocks under one banner row — Elastic Cloud Compute (EC2) Specifications and Elastic Block Storage (EBS) — plus an Errors column at the far right that the calculator fills in for you on a failed parse.

inputs-sheet.xlsx
Inputs sheet with EC2 and EBS specification columns
The Inputs tab — EC2 spec columns (blue) and EBS columns (orange), one row per configuration.
ColumnRequired?What goes in it
GroupOptionalA label to organize line items (e.g. Production). No >, <, &.
DescriptionOptionalFree-text note per row. Same character restriction.
AWS RegionRequiredRegion code — us-east-1, ap-south-1. Use the dropdown.
Operating SystemRequiredLinux, Windows Server, RHEL, SUSE, SQL variants — dropdown.
Instance TypeRequiredFree text, family.sizem5.2xlarge, t4g.nano.
TenancyRequiredShared Instances or Dedicated Instances.
Number of InstancesRequiredInteger count.
Assumed UsageConditionalHours value when pricing by hours/week.
Usage TypeRequiredAlways On, or an hours-based utilization option.
Purchasing OptionRequiredOn-Demand, Spot, or a Savings Plan / Reserved term.

The EBS columns (Storage Type, Storage amount, Provisioned IOPS, Throughput, Snapshot Frequency, Snapshot amount) are optional — you can price pure compute, or compute plus storage. IOPS only applies to gp3/io1/io2, throughput only to gp3.

💡

The dropdowns are the quiet hero. Region, OS, Tenancy, and Purchasing Option are validated picklists baked into the sheet — so you're not guessing at the exact label the parser wants.

region.png
AWS Region dropdown in the template
Region picklist — every region code, validated.
os.png
Operating System dropdown
Operating System — Linux, Windows, RHEL, SUSE, and the SQL Server editions.
purchasing.png
Purchasing Option dropdown showing Savings Plan permutations
Purchasing Option spells out every Savings Plan permutation — no guessing the label.
SECTION 06

What broke (learn from my ten minutes)

My first upload failed on a single row, and the Errors column told me exactly why:

Error: Instance type "t4g.nano" not found for region "ap-south-1", OS "t4g.nano", and tenancy "Shared"

Read that carefully — the OS field is echoing back the instance type value. That's the tell. My columns had shifted: I'd pasted a block of data and knocked the Instance Type value into the wrong cell, so the parser was trying to validate t4g.nano as an operating system.

⚠️

This template is positional, and paste is the enemy. Type into the dropdowns, or paste one column at a time and verify alignment before uploading.

A few other things worth knowing before you hit upload:

  • 1,000 rows max per upload. Plenty for most fleets; chunk larger migrations.
  • Instance type is validated against region + OS + tenancy as a combination, not in isolation. A type in us-east-1 may not exist in ap-south-1, and the error only surfaces after upload.
  • Errors are per-row, not fatal. A bad row gets flagged; the good rows still import. Fix and re-upload.
SECTION 07

The payoff

Once it parsed cleanly, every row showed up as a line item under a Bulk Import group, nested under whatever Group names I'd set. Each Config Summary expands to the full spec — tenancy, OS, workload, instance, pricing strategy, EBS — exactly as if I'd clicked through the wizard by hand, minus the clicking.

upload-success.png
Successful upload showing monthly and EBS costs
Parsed cleanly — the calculator breaks out On-Demand instance cost and EBS cost before you save.
estimate-summary.png
Estimate summary showing 12-month total
The fleet as line items — monthly ~$1,137, 12-month total ~$13,638, zero upfront.

One upload, not thirty. A defensible, itemized estimate — and I can hand the client the same spreadsheet I built it from.

SECTION 08

Where this fits in a consulting workflow

This is a small feature with an outsized effect on migration and rightsizing work. The spreadsheet is the artifact: you can version it, diff it, review it with a client, and regenerate the estimate whenever the fleet changes.

It slots neatly ahead of a Compute Optimizer pass — bulk-price the current fleet, then bulk-price the recommended one, and the delta is your rightsizing business case in two uploads. If you price AWS fleets for a living, download the template once and try it on your next estimate. The forty clicks you don't make will pay for the learning curve on the first attempt.

🔗

Pair it: current fleet → Compute Optimizer recommendations → bulk-price both → the delta is your FinOps pitch.