Older-generation EC2 instances that support EBS optimization but have it switched off
What does ZopNight detect here?
ZopNight flags a running EC2 instance whose `EbsOptimized` attribute is false only in the older families it treats as opt-in: `c1`, `c3`, `g2`, `i2`, `m1`, `m2`, `m3` and `r3`. Current-generation families are EBS-optimized by default, so they are skipped. Without it, EBS and network traffic share bandwidth and disk performance suffers.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-150 |
| Category | compliance |
| Severity | medium |
| Metric | none — pure configuration read |
| Threshold | EbsOptimized = false on an opt-in family |
| Source | ZopNight |
| Permissions used | ec2:DescribeInstances |
Where it applies
Optional EBS optimization on older instance types
An EBS-optimized instance has dedicated bandwidth to its EBS volumes instead of sharing the network
link with application traffic. The
EBS-optimized instance types page
divides instance types into three groups: types that are EBS-optimized by default (where enabling or
disabling has no effect), types that support it optionally for an additional hourly fee, and types
that do not support it. The optional group is made up of older sizes such as c1.xlarge,
c3.2xlarge, i2.xlarge, m1.large, m2.2xlarge, m3.xlarge and r3.xlarge. On those, leaving it
off means disk I/O competes with network traffic.
Finding opt-in instances with it off
aws ec2 describe-instances \ --filters Name=instance-state-name,Values=running Name=ebs-optimized,Values=false \ Name=instance-type,Values='c1.*','c3.*','g2.*','i2.*','m1.*','m2.*','m3.*','r3.*' \ --query 'Reservations[].Instances[].[InstanceId,InstanceType]' --output tableSome sizes in these families, such as c3.8xlarge, i2.8xlarge and r3.8xlarge, do not offer EBS
optimization at all, so they cannot be changed.
The family gate
ZopNight fires only for running instances in the c1, c3, g2, i2, m1, m2, m3 and r3
families whose EBS-optimized flag AWS reported as false. Every other family is skipped: on current
generation types a false value is cosmetic because they are optimized by default, and types such as
t1 and t2 have nothing to enable. The gate works by family, not by size, so a size that AWS
does not list as supporting EBS optimization, such as c3.8xlarge or m3.medium, can still be
flagged; check the size against the AWS list before acting.
Instances left alone
If the instance type is missing or unrecognised, or AWS did not report the EBS-optimized flag, the rule raises nothing. Older data where the flag was never resolved is not treated as false.
Performance fix, with a cost of its own
The finding reports $0 and claims no saving. On the opt-in families AWS charges an additional hourly fee for EBS optimization, so the fix raises the bill slightly. For many of these instances a move to a current-generation type is worth pricing instead, since those are EBS-optimized by default.
Enabling EBS optimization
- Confirm the instance type appears in the optional list on the AWS page above.
- Stop the instance.
- Enable the attribute:
aws ec2 modify-instance-attribute --instance-id i-0123456789abcdef0 --ebs-optimized. - Start the instance and compare EBS latency and throughput.