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
| Service | What must match to share an RI? | Can you mix sizes? |
|---|---|---|
| Amazon RDS | Region · Engine · Edition* · Licence model · Instance family (db.r6g) | Yes except Oracle licence-included & SQL Server |
| Amazon ElastiCache | Region · Cache engine (Redis or Valkey) · Instance family (cache.r6g) | Yes |
| Amazon Redshift | Region · Node type (ra3.xlplus, dc2.large) | No – each node type is its own group |
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
- Region – RIs never cross regions.
- Engine – Aurora MySQL, Aurora PostgreSQL, MySQL, PostgreSQL, MariaDB, Oracle, SQL Server.
- Edition – only for Oracle & SQL Server (Enterprise, Standard Two, Web…).
- Licence model – license-included, bring-your-own-licence (BYOL) or no licence required.
- Instance family – e.g.
db.r5,db.m6g. - Instance size – only 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 model | Can mix sizes? | Why |
|---|---|---|
| Aurora MySQL / Aurora PostgreSQL | ✅ | Designed for flexible pooling. |
| MySQL, PostgreSQL, MariaDB | ✅ | Standard RDS rule. |
| Oracle BYOL | ✅ | Licence handled outside the RI. |
| Oracle license-included, any SQL Server edition | ❌ | Licence 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.