Right, let’s talk about Reserved Instances. This is where you stop paying AWS like it’s a pay-as-you-go utility and start making a commitment. It’s the cloud equivalent of deciding to marry your favorite takeout place. You’re betting that you’ll still love General Tso’s chicken three years from now. It’s a huge money-saver, but only if you’re smart about it.

The core idea is simple: you promise to spend a certain amount of money over 1 or 3 years, and in return, AWS gives you a massive discount—anywhere from 30% to over 60% compared to On-Demand rates. The catch? You’re on the hook for that money whether you use the service or not. It’s a fixed cost. Stop using that m5.large in us-east-1a? Too bad. You’re still paying for it. This is why getting your usage predictions right is the single most important skill here.

The Two Flavors: Standard vs. Convertible

AWS offers two main types of RIs, and the choice between them is a classic trade-off between savings and flexibility.

Standard RIs are your old-school, high-commitment, high-reward option. They offer the highest discount, but they’re the most rigid. When you buy one, you’re locking in almost everything:

  • Instance Type (e.g., m5.large)
  • AZ (e.g., us-west-2a)
  • Tenancy (Shared vs. Host)
  • Platform (Linux/Windows)

The only bit of flexibility you get is Size Flexibility. This is a brilliant feature that often gets missed. If you buy an RI for a m5.large, it can automatically apply to a m5.xlarge (because that’s two large units) or a m5.medium (half a large unit). It applies to any instance in the same family. This is why you should almost always buy RIs in the largest size you need—the discount flows down to the smaller instances.

Convertible RIs are for the indecisive or the strategically agile. You get a smaller discount (typically 5-10% less than a Standard RI), but you can trade it in for a different RI later. Changed your mind and need a c5 instance instead of an m5? Need to move it to a different region? A Convertible RI lets you do that. You can even change the OS platform. The key rule is that the new commitment must have an equal or greater value than the old one. You can’t downgrade your financial obligation, only change its form.

How the Billing Voodoo Actually Works

This is the part that confuses everyone. You aren’t buying a specific instance. You’re buying a discount coupon that applies to any running instance that matches its attributes.

Let’s say you have a Standard RI for a m5.large in us-east-1a running Linux. When the AWS billing system runs, it:

  1. Looks at all your running On-Demand instances.
  2. Finds any m5.large (or smaller, thanks to size flexibility) in us-east-1a running Linux.
  3. Applies the massive RI discount to the bill for that instance.
  4. Bills you the low, pre-negotiated RI rate for it.

If you have more RIs than matching running instances, you’re paying for unused discounts. If you have more running instances than RIs, the extras get billed at the full, painful On-Demand rate.

You can see this magic in action by describing your instances. The ones covered by an RI will be tagged as such.

# Describe your instances to see which are covered by an RI
aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId, InstanceType, Placement.AvailabilityZone, InstanceLifecycle]' --output table
|                                                                        |
|  i-1234567890abcdef0  |  m5.large  |  us-east-1a  |  spot        |
|  i-0987654321abcdef0  |  m5.xlarge |  us-east-1a  |  scheduled   | # This one might get the RI discount due to size flexibility
|  i-abcdef01234567890  |  m5.large  |  us-east-1a  |  None (On-Demand covered by RI) |

The Gotchas and How to Avoid Them

  1. The Region Lock: This is the big one. An RI purchased in us-east-1 is useless for instances in eu-west-1. They are not global. You must buy RIs in each region where you have stable workloads. There are, however, Regional RIs which give up the AZ commitment for AZ flexibility—a great option for workloads that can float across Availability Zones.

  2. The Commitment Hangover: Your three-year c4.8xlarge RI seemed like a great idea in 2020. It’s 2023 now, and the c6gn instances are twice the performance for half the price. You’re stuck. This is the primary argument for Convertible RIs or using a mix of RIs and Savings Plans for newer workloads.

  3. The Platform Mismatch: You bought a Linux/UNIX RI but then your team ports the application to Windows. Suddenly, your discount doesn’t apply, and you’re getting hammered with Windows On-Demand pricing. Always double-check the platform before you buy.

The best practice? Use the AWS Cost Explorer RI recommendations. It analyzes your last 7-30 days of usage and tells you exactly what to buy and how much you’ll save. It’s not perfect, but it’s a fantastic starting point.

# Get RI purchase recommendations (output is verbose JSON)
aws ce get-reservation-purchase-recommendation \
    --service AmazonEC2 \
    --lookback-period-in-days THIRTY_DAYS \
    --payment-option NO_UPFRONT \ # Also ALL_UPFRONT, PARTIAL_UPFRONT
    --term-in-years THREE_YEARS   # Or ONE_YEAR

In the end, RIs are a powerful tool, but they require foresight. Use them for your bedrock, unchanging infrastructure—your databases, your always-on app servers. For everything else, there are Convertible RIs or Savings Plans, which we’ll tackle next. They’re a whole different kind of beast.