当EBS卷触发io-performance:degraded事件时,如何实现邮件通知?
解决EBS卷「io-performance:degraded」事件邮件通知的替代方案
针对EventBridge不支持直接匹配该事件的情况,这里提供三个可行的实现方案:
方案1:基于CloudWatch告警+SNS原生实现
这是最直接的无代码方案,利用CloudWatch对EBS状态指标的监控能力:
- 登录CloudWatch控制台,进入「Alarms」→「All alarms」→「Create alarm」
- 在指标选择页,找到「EC2」→「EBS Volume」分类,选中
VolumeStatusDetails指标,维度按需选择单卷或所有卷 - 配置告警条件:将阈值设为「当指标值等于1」(1代表存在性能降级状态),并设置连续触发的周期(比如1个5分钟周期)
- 配置通知环节:选择已有的SNS主题,或新建主题并添加收件邮箱(记得完成邮箱订阅确认)
- 完成告警创建后,当EBS卷触发「io-performance:degraded」时,CloudWatch会自动触发SNS发送邮件通知
方案2:Lambda定时轮询+SNS自定义监控
适合需要自定义通知内容或扩展逻辑的场景:
- 创建Lambda函数(推荐Python/Node.js),利用AWS SDK调用
describe_volumes接口,遍历所有EBS卷,检查VolumeStatus.PerformanceStatus字段是否为degraded - 配置CloudWatch EventBridge规则,设置定时触发(比如每分钟执行一次),将该规则与Lambda函数关联
- 在Lambda函数中加入逻辑:当检测到性能降级的卷时,调用SNS的
publish接口发送包含卷ID、实例关联信息等自定义内容的邮件 - 配置SNS主题并添加收件邮箱,确保订阅生效
方案3:AWS Config自定义规则+通知
适合需要长期合规监控、保留状态变更历史的场景:
- 进入AWS Config控制台,创建自定义规则,选择Lambda作为规则执行载体
- 编写Lambda函数,对接AWS Config的配置项数据,检查EBS卷的
PerformanceStatus状态,当状态为degraded时标记为「非合规」 - 配置规则触发条件:设置为当EBS卷资源状态发生变更时自动检测
- 在AWS Config的通知设置中,将「非合规事件」推送到指定SNS主题,通过SNS发送邮件通知
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

