An AWS cost optimisation checklist for teams with no FinOps person

The short answer

Start with cost attribution, because you cannot cut what you cannot assign to a team. Then remove idle resources, put non-production environments on a schedule, clean up orphaned storage, and only then look at commitment purchases like Savings Plans. Buying commitments before removing waste locks in the waste.

Most AWS cost advice is a list of every possible action, which is useless when nobody on the team owns this full time. What follows is an order of work.

1. Make the bill attributable

Until spend can be assigned to a team or a service, every conversation about cost is an argument about opinions. Get a tag policy agreed — owner, team, environment, cost centre — then apply it to the resources driving most of the spend first.

2. Remove what is doing nothing

Idle compute, databases nothing connects to, load balancers with no targets, unattached addresses. This is the fastest money on the list and it carries almost no risk, because you are switching off things nothing is using.

3. Stop paying for nights and weekends

Non-production on a schedule. See shutting down dev and test out of hours.

4. Clean up storage

Unattached volumes, snapshots of systems that no longer exist, images nothing references, buckets with no lifecycle rule. Individually small, collectively not.

5. Right-size what remains

Now that only useful things are running, look at whether they are the right size and the right generation. Graviton and gp3 migrations belong here.

6. Only now, buy commitments

Savings Plans and Reserved Instances are the step most teams do first, because it feels like the responsible thing and requires no engineering. Doing it first is expensive: a one-year commitment on an estate you have not cleaned up locks in the waste for a year at a discount.

TODO — expand each step with the specific checks you run, and add a short section on what to ignore entirely until the estate is above a certain size.

The part a checklist cannot do

Every item above is a thing you do once. Each one comes back — new resources arrive untagged, new environments run all weekend, new volumes are left behind. The work that lasts is the guardrail that makes each item stop recurring, which is a different job from the cleanup itself.