Skip to main content

Commitment Groups – the 5-minute guide

1️⃣ What is a commitment group?

A commitment group is the set of AWS resources that can be covered by one right-sized reservation. All usage and reservations assigned to the same group share identical commercial attributes (region, engine, licence model, etc.). When you purchase a Reserved Instance (RI) or Savings Plan, its benefit automatically applies to every resource inside the matching commitment group. If two resources fall into different commitment groups, they require separate reservations.

2️⃣ High-level cheat-sheet

ServiceWhat must match to share an RI?Can you mix sizes?
Amazon RDSRegion · Engine · Edition* · Licence model · Instance family (db.r6g)Yes except Oracle licence-included & SQL Server
Amazon ElastiCacheRegion · Cache engine (Redis or Valkey) · Instance family (cache.r6g)Yes
*Edition is only relevant for Oracle & SQL Server.

If that's all you needed – great! Want the nitty-gritty? Keep reading 👇


3️⃣ Amazon RDS — full details

Two instances sharing the same properties below (a.k.a. grouping keys), can be covered by the same reservation.

3.1 Grouping keys

  1. Region – RIs never cross regions.
  2. Engine – Aurora MySQL, Aurora PostgreSQL, MySQL, PostgreSQL, MariaDB, Oracle, SQL Server.
  3. Edition – only for Oracle & SQL Server (Enterprise, Standard Two, Web…).
  4. Licence modellicense-included, bring-your-own-licence (BYOL) or no licence required.
  5. Instance family – e.g. db.r5, db.m6g.
  6. Instance sizeonly when size-flexibility is not allowed (see below).

3.2 Size-flexibility (the RI magic)

AWS lets most RDS engines trade sizes inside the same family:

Engine / licence modelCan mix sizes?Why
Aurora MySQL / Aurora PostgreSQLDesigned for flexible pooling.
MySQL, PostgreSQL, MariaDBStandard RDS rule.
Oracle BYOLLicence handled outside the RI.
Oracle license-included, any SQL Server editionLicence cost depends on vCPU count – must match exactly.

Example A single db.r5.large RI covers: • 1 db.r5.large • 1/2 db.r5.xlarge • 1/4 db.r5.2xlarge

…but cannot cover db.r6g.large or any SQL Server instance.


4️⃣ Amazon ElastiCache — full details

ElastiCache reservations follow simpler rules than RDS. Two cache nodes can share the same reservation when they match on:

  1. Region – reservations never cross regions.
  2. Cache engineRedis, Valkey or Memcached (Redis & Valkey belong to the same pool – see 4.3).
  3. Instance family – for example cache.r5, cache.m6g. Size-flexibility applies automatically inside the family, so cache.r5.large and cache.r5.xlarge can reuse the same reservation.

4.1 Size-flexibility

ElastiCache supports size-flex for all engines. One cache.r5.large RI therefore covers: • 1 cache.r5.large • ½ cache.r5.xlarge • ¼ cache.r5.2xlarge

…but it cannot cover a Graviton family like cache.r6g.large.

4.2 Quick examples

ScenarioSame group?Why
cache.r5.large (Redis) vs cache.r5.xlarge (Redis)Same region, engine + family – size-flex allowed.
cache.r5.large (Redis) vs cache.r5.large (Memcached)Engine differs.
cache.r5.large (Redis) vs cache.r6g.large (Redis)Family differs.

4.3 Normalisation units per engine

AWS applies different normalisation factors depending on the cache engine. Redis OSS and Memcached share the same baseline, while Valkey gets a 20 % discount – lower units let a Redis reservation cover more Valkey nodes (AWS docs).

Node sizeRedis / Memcached unitsValkey units
micro0.50.4
small10.8
medium21.6
large43.2
xlarge86.4
2xlarge1612.8
4xlarge3225.6
6xlarge4838.4
8xlarge6451.2
10xlarge8064
12xlarge9676.8
16xlarge128102.4
24xlarge192153.6

Example A Redis OSS reservation for one cache.r7g.4xlarge (32 units) can fully cover the same Valkey node (25.6 units) and still has 6.4 spare units – enough to cover one cache.r7g.xlarge Valkey node in the same family.