A reserved instance is a discount plan, not a resource. It applies automatically to eligible pay-as-you-go instances to offset their hourly compute fees. Understanding how reserved instances match and offset costs helps you avoid wasted spend.
If no matching pay-as-you-go instances are running in a given hour, the reserved instance is idle but billing continues.
How matching works
Reserved instances are matched to pay-as-you-go instances automatically. No manual action is required.
Once matched, a reserved instance offsets the compute fees of the matched pay-as-you-go instances every hour until the reserved instance expires. The computing power delivered by a reserved instance is calculated as:
Computing power = Normalization factor of the instance type × Number of instances
The normalization factor reflects the compute capacity of an instance type based on its vCPU count. Use this table to calculate computing power and offset amounts when instance sizes differ:
| Instance size | Normalization factor |
|---|---|
| xlarge | 4 |
| 2xlarge | 8 |
| 4xlarge | 16 |
For the full normalization factor table covering all instance types, see View the normalization factor table.
Matching rules
Regional and zonal reserved instances follow different matching rules.
| Attribute | Regional reserved instance | Zonal reserved instance |
|---|---|---|
| Region and zone | Matches pay-as-you-go instances across any zone within the same region | Matches pay-as-you-go instances in the specified zone only |
| Instance type | Same instance family; flexible sizing (a low-spec reserved instance can match a high-spec instance, and vice versa); resource reservation not supported | Exact instance type match required; resource reservation supported |
| Operating system | Must match | |
Regional reserved instances
A regional reserved instance offsets fees when all three conditions are met:
-
Same region: Cross-zone offset is supported — the reserved instance and pay-as-you-go instances can be in the same or different zones within the region.
-
Same instance family: Flexible sizing is supported within the family. Use normalization factors to calculate the offset amount when specs differ.
-
Same operating system: The reserved instance and pay-as-you-go instances must run the same OS.
Zonal reserved instances
A zonal reserved instance offsets fees when all three conditions are met:
-
Same zone: The reserved instance and pay-as-you-go instances must be in the same zone.
-
Same instance type: Exact instance type match required (same family and same size).
-
Same operating system: The reserved instance and pay-as-you-go instances must run the same OS.
To see which pay-as-you-go instances are eligible for a reserved instance before you purchase, see Purchase reserved instances.
What reserved instances cover
Reserved instances offset compute fees (vCPUs and memory) only. Network and storage fees are billed separately.
| Instance type | Compute fees (vCPUs and memory) | OS image fees |
|---|---|---|
| Linux instances | Covered | Not applicable |
| Windows instances | Covered | Covered (Windows image licensing included at no additional cost) |
Storage costs can be offset separately using storage capacity units (SCUs). Combining reserved instances with SCUs reduces both compute and storage costs in pay-as-you-go scenarios. For full ECS billing details, see Billing overview.
Discount priority
When multiple discount plans are active, they are applied in the following order:
-
Reserved instances and resource plans (such as SCUs)
-
ECS compute savings plans
-
General-purpose savings plans
-
Coupons
Examples
The following scenarios show how reserved instances match and offset pay-as-you-go instances.
Regional reserved instance scenarios:
-
Scenario 1: One low-spec RI offsets one high-spec instance (partial offset)
-
Scenario 2: Two low-spec RIs offset one high-spec instance (full offset)
-
Scenario 3: One high-spec RI offsets one low-spec instance (with remaining capacity)
-
Scenario 4: One high-spec RI offsets multiple low-spec instances across zones
-
Scenario 6: Matching fails — different region and instance family
Zonal reserved instance scenarios:
-
Scenario 8: One RI offsets multiple instances (partial offset)
-
Scenario 9: Multiple RIs offset one instance (with remaining capacity)
-
Scenario 10: Multiple RIs offset multiple instances (full offset)
-
Scenario 11: Resource reservation — no pay-as-you-go instances running
-
Scenario 13: Matching fails — different zone and instance type
Regional reserved instance examples
Scenario 1: One low-spec RI offsets one high-spec instance (partial offset)
| Reserved instance | Pay-as-you-go instance | |
|---|---|---|
| Region/zone | China (Qingdao), multiple zones | Qingdao Zone B |
| Instance type | ecs.g5.xlarge | ecs.g5.2xlarge |
| OS | Linux | Linux |
| Count | 1 | 1 |
Normalization factors: ecs.g5.xlarge = 4, ecs.g5.2xlarge = 8.
-
Reserved instance computing power: 1 × 4 = 4 units/hour
-
Pay-as-you-go instance computing power: 1 × 8 = 8 units/hour
Result: The reserved instance offsets 50% of the hourly compute fees.
Scenario 2: Two low-spec RIs offset one high-spec instance (full offset)
| Reserved instances | Pay-as-you-go instance | |
|---|---|---|
| Region/zone | China (Qingdao), multiple zones (both) | Qingdao Zone B |
| Instance type | ecs.g5.xlarge (both) | ecs.g5.2xlarge |
| OS | Linux (both) | Linux |
| Count | 1 each (2 total) | 1 |
Normalization factors: ecs.g5.xlarge = 4, ecs.g5.2xlarge = 8.
-
Two reserved instances: 2 × 4 = 8 units/hour
-
Pay-as-you-go instance: 1 × 8 = 8 units/hour
Result: The two reserved instances together offset 100% of the hourly compute fees.
Scenario 3: One high-spec RI offsets one low-spec instance (with remaining capacity)
| Reserved instance | Pay-as-you-go instance | |
|---|---|---|
| Region/zone | China (Qingdao), multiple zones | Qingdao Zone B |
| Instance type | ecs.g5.4xlarge | ecs.g5.2xlarge |
| OS | Linux | Linux |
| Count | 1 | 1 |
Normalization factors: ecs.g5.4xlarge = 16, ecs.g5.2xlarge = 8.
-
Reserved instance: 1 × 16 = 16 units/hour
-
Pay-as-you-go instance: 1 × 8 = 8 units/hour
Result: The reserved instance offsets 100% of the hourly compute fees, with 50% of its computing power unused.
Scenario 4: One high-spec RI offsets multiple low-spec instances across zones
| Reserved instance | Pay-as-you-go instances | |
|---|---|---|
| Region/zone | China (Qingdao), multiple zones | 2 instances in Qingdao Zone B; 2 instances in Qingdao Zone C |
| Instance type | ecs.g5.4xlarge | ecs.g5.xlarge (all four) |
| OS | Linux | Linux |
| Count | 1 | 4 |
Normalization factors: ecs.g5.4xlarge = 16, ecs.g5.xlarge = 4.
-
Reserved instance: 1 × 16 = 16 units/hour
-
Pay-as-you-go instances: 4 × 4 = 16 units/hour
Result: The reserved instance offsets 100% of the hourly compute fees across all four instances in two zones. Regional reserved instances support cross-zone offset within the same region.
Scenario 5: Matching fails — OS mismatch
| Reserved instance | Pay-as-you-go instance | Outcome | |
|---|---|---|---|
| Region/zone | China (Qingdao), multiple zones | Qingdao Zone B | — |
| Instance type | ecs.g5.4xlarge | ecs.g5.xlarge | — |
| OS | Linux | Windows | Mismatch |
Result: Match fails. The reserved instance cannot offset the pay-as-you-go instance fees because the operating systems differ.
Scenario 6: Matching fails — different region and instance family
| Reserved instance | Pay-as-you-go instance | Outcome | |
|---|---|---|---|
| Region/zone | China (Qingdao) | China (Hangzhou), Zone B | Region mismatch |
| Instance type | ecs.g5.xlarge | ecs.c5.xlarge | Family mismatch |
| OS | Linux | Linux | — |
Result: Match fails for two reasons: the instances are in different regions, and they belong to different instance families (g5 vs. c5).
Zonal reserved instance examples
Scenario 7: One RI offsets one instance (full offset)
| Reserved instance | Pay-as-you-go instance | |
|---|---|---|
| Region/zone | Qingdao Zone B | Qingdao Zone B |
| Instance type | ecs.g5.xlarge | ecs.g5.xlarge |
| OS | Windows | Windows |
| Count | 1 | 1 |
Both instances share the same normalization factor: 4.
-
Reserved instance: 1 × 4 = 4 units/hour
-
Pay-as-you-go instance: 1 × 4 = 4 units/hour
Result: The reserved instance offsets 100% of the hourly compute fees.
Scenario 8: One RI offsets multiple instances (partial offset)
| Reserved instance | Pay-as-you-go instances | |
|---|---|---|
| Region/zone | Qingdao Zone B | Qingdao Zone B |
| Instance type | ecs.g5.xlarge | ecs.g5.xlarge |
| OS | Windows | Windows |
| Count | 1 | 5 |
-
Reserved instance: 1 × 4 = 4 units/hour
-
Pay-as-you-go instances: 5 × 4 = 20 units/hour
Result: The reserved instance offsets 20% of the combined hourly compute fees (equivalent to 100% of the fees for one randomly selected instance).
Scenario 9: Multiple RIs offset one instance (with remaining capacity)
| Reserved instances | Pay-as-you-go instance | |
|---|---|---|
| Region/zone | Qingdao Zone B | Qingdao Zone B |
| Instance type | ecs.g5.xlarge (both) | ecs.g5.xlarge |
| OS | Windows (both) | Windows |
| Count | 1 each (2 total) | 1 |
-
Two reserved instances: 2 × 4 = 8 units/hour
-
Pay-as-you-go instance: 1 × 4 = 4 units/hour
Result: The two reserved instances together offset 100% of the hourly compute fees, with 50% of total computing power unused.
Scenario 10: Multiple RIs offset multiple instances (full offset)
| Reserved instances | Pay-as-you-go instances | |
|---|---|---|
| Region/zone | Qingdao Zone B | Qingdao Zone B |
| Instance type | ecs.g5.xlarge (all) | ecs.g5.xlarge (all) |
| OS | Windows | Windows |
| Count | 5 | 5 |
-
Five reserved instances: 5 × 4 = 20 units/hour
-
Five pay-as-you-go instances: 5 × 4 = 20 units/hour
Result: The five reserved instances offset 100% of the combined hourly compute fees.
Scenario 11: Resource reservation — no pay-as-you-go instances running
| Zonal reserved instance | |
|---|---|
| Region/zone | Qingdao Zone B |
| Instance type | ecs.g5.2xlarge |
| OS | Linux |
| Count | 10 |
No pay-as-you-go instances are running.
Result: The reserved instances are idle and billing continues. During the term, 10 ecs.g5.2xlarge instances are reserved in Qingdao Zone B, ensuring that pay-as-you-go instances of that type can be created at any time.
Scenario 12: Matching fails — OS mismatch
| Reserved instance | Pay-as-you-go instance | Outcome | |
|---|---|---|---|
| Region/zone | Qingdao Zone B | Qingdao Zone B | — |
| Instance type | ecs.g5.xlarge | ecs.g5.xlarge | — |
| OS | Linux | Windows | Mismatch |
Result: Match fails. The operating systems differ.
Scenario 13: Matching fails — different zone and instance type
| Reserved instance | Pay-as-you-go instance | Outcome | |
|---|---|---|---|
| Region/zone | Qingdao Zone B | Qingdao Zone C | Zone mismatch |
| Instance type | ecs.g5.xlarge | ecs.g5.4xlarge | Size mismatch |
| OS | Linux | Linux | — |
Result: Match fails for two reasons: the instances are in different zones, and the instance types have different specifications (xlarge vs. 4xlarge). Zonal reserved instances require an exact instance type match.