THE REAL
BILL
Every saving MaxOps quotes starts as a public list price. If you hold Reserved Instances or Savings Plans, that number is wrong — and this is how to fix it.
THE PRICE ON THE
SHELF ISN'T WHAT
YOU PAID
By default I price everything from AWS's public list. It's honest, it needs no extra access, and it's enough to rank what's wasteful. But it's the sticker price — not your receipt.
A Reserved Instance or a Savings Plan can cut what you actually pay for a resource substantially. Price that resource at list and the saving looks larger than it is. Recommend deleting it on that basis and the reasoning was built on a number nobody was ever charged.
So the findings are wrong?
The findings hold — an idle resource is idle whatever it costs. It's the amounts that drift. And amounts are what people take to a budget meeting.
THE COST AND
USAGE REPORT
The Cost and Usage Report — everyone says CUR — is the most detailed billing data AWS produces. Not a monthly total, not a per-service summary: one line per resource, per usage type, per hour, with the discounts already applied.
MaxOps uses net amortized cost. It is the only one of the three that answers "what does keeping this resource actually cost me?"
Unblended reads $0 because the reservation was paid for up front, months ago. Delete the resource on that basis and you would expect to save nothing.
AMORTIZED,
NOT UNBLENDED
If you buy a year of capacity up front, the month you pay looks expensive and the eleven that follow look free. Neither is what the resource costs you.
Amortized cost spreads that up-front payment evenly across the term it bought. So a reserved instance shows a steady monthly figure rather than one spike and eleven zeroes. Net means after discounts. MaxOps reads net amortized cost throughout.
Why does that choice matter to me?
Because it is the number that changes if you act. Delete an unreserved resource and you stop paying. Delete a reserved one and you keep paying until the term ends — amortized cost is what shows you the difference.
The page never remembers which step you are on. It asks AWS and your own machine what is true, every time you open it.
WHAT YOU'RE
ACTUALLY DOING
Because the page detects rather than remembers, it is safe to close the tab, come back tomorrow, or set part of this up by hand. It reflects whatever is actually there.
WHY THIS ASKS FOR
A SECOND SET
OF KEYS
The role I scan with is read-only. It cannot create a bucket, register an export, or run a query. That is not an oversight — it is the promise the role exists to make.
Setting up cost data genuinely needs to create things. Rather than widen the scanning role and quietly break that promise, MaxOps uses a separate profile for setup only. Scans keep using the read-only role no matter what you choose here.
I don't have a profile with those permissions.
Then let me make one. Create role builds MaxOpsCostDataRole scoped to exactly this job — the report bucket, the export, the queries. Nothing else. If your own credentials can't create roles either, download the policy and hand it to someone who can.
COME BACK
TOMORROW
Once the export exists, AWS writes the first file on its own schedule — usually within 24 hours. There is no button for this. The step will read Waiting on AWS, and that is the correct state, not a fault.
It's been a day and it still says waiting.
Then check the export still exists and points at the bucket I manage. If step one has turned red, it will say so — and the button on it will say Repair rather than Create.
Nothing is lost by leaving it. The page is a live view, not a wizard holding your place: reopen it whenever you like and it will tell you where things stand.
Athena bills per terabyte scanned. The estimate is an upper bound — it assumes every query reads the whole export.
Nothing is spent until you press the button. Cancel costs nothing.
TURNING MILLIONS
OF LINES INTO
ONE NUMBER
Your bill is too large to read directly, so I ask Athena to reduce it: for each resource, in each month, the total net amortized cost. That summary lands on your machine as a small file.
This is the one step in MaxOps that spends money, so it is the one step that shows you a bill first. Athena charges for the data each query scans. For most accounts a summary costs a few cents or nothing at all — but you see the estimate before you agree to it.
Do I have to run this every day?
No. Re-run it when you want fresher figures. Only the current month changes; the ones already summarised are settled.
PRICED FROM
THE BILL
The last step is a switch. Once it is on, any resource that appears in your bill is priced from what it actually cost — discounts included. Anything not in the bill keeps its list price, so nothing goes blank.
And it is a switch, not a door. Turn it off and I go back to list prices without losing anything you built.
WHAT THIS
WON'T TELL YOU
Cost data makes the amounts real. It does not make them complete, and it is worth knowing where the edges are.
Where I could not measure something, I say so rather than filling the gap. A number I invented would be worse than an honest absence.
The credentials in use aren't allowed to call bcm-data-exports:ListExports.
Setup is using the read-only scan role, which deliberately cannot do this. Choose an AWS profile under Setup credentials above.
A STEP THAT
TURNS RED
A red step always carries two things: the exact permission or resource at fault, and what to do about it. If a fix exists, the button beside it performs that fix.
FOUR STEPS.
ONE HONEST
NUMBER.
List prices tell you what a resource would cost a stranger. Your bill tells you what it costs you. Once the two are connected, every saving MaxOps quotes is one you could actually bank.