如何在有人卸载EBS卷时获取通知?
卸载EBS卷时获取通知的可行方案
方案一:用Amazon EventBridge + Amazon SNS(原生无代码方案)
这是最省事的原生实现方式:
- 先创建一个SNS主题,配置好接收通知的渠道(邮箱、短信、HTTP接口都行),记得让订阅者确认订阅,不然收不到消息。
- 去EventBridge里新建规则,事件源选EC2服务,事件类型指定成
EBS Volume Detach(对应事件源aws.ec2,事件名称detachVolume)。 - 把规则的目标设为你刚创建的SNS主题就行。以后只要有EBS卷被卸载,EventBridge会自动抓这个事件,然后通过SNS给你发通知。
附事件模式的配置示例:
{ "source": ["aws.ec2"], "detail-type": ["EC2 Volume Attachment Change"], "detail": { "event": ["detachVolume"] } }
方案二:加Lambda函数做定制化通知
如果想要更详细的通知内容(比如显示卷ID、关联的实例ID、操作时间),可以用Lambda做中间处理:
- 写一个Lambda函数,解析EventBridge传过来的EC2事件数据,把关键信息提取出来,再调用SNS发送格式化后的消息。
- 把EventBridge规则的目标换成这个Lambda函数就行。
给个Python版的Lambda代码片段参考:
import boto3 import json sns_client = boto3.client('sns') TARGET_SNS_TOPIC = '你的SNS主题ARN' def lambda_handler(event, context): event_detail = event['detail'] volume_id = event_detail['volume-id'] instance_id = event_detail['instance-id'] operate_time = event_detail['eventTime'] notify_msg = f"⚠️ 有EBS卷被卸载:\n卷ID: {volume_id}\n关联实例ID: {instance_id}\n操作时间: {operate_time}" sns_client.publish( TopicArn=TARGET_SNS_TOPIC, Message=notify_msg, Subject="EBS卷卸载告警" ) return {'statusCode': 200, 'body': '通知已发送'}
方案三:用AWS Config做合规式监控(适合审计场景)
如果需要长期跟踪EBS卷状态并满足合规要求,可以用AWS Config:
- 创建自定义Config规则,监控EBS卷的
attachments属性,当这个属性变为空(也就是卷被卸载)时触发告警。 - 把Config的通知渠道关联到SNS,就能收到状态变化的通知。这个方案更偏向审计记录,适合需要留痕的场景。
内容的提问来源于stack exchange,提问作者Rohit Mishra
相关产品推荐
相关产品推荐

