无需修改Lambda代码,能否让EventBridge捕获函数启停事件?
可行,无需修改Lambda代码即可实现
你可以通过EventBridge捕获账号内所有Lambda函数的启动和执行结束事件,完全依赖AWS原生的事件流转机制,不需要修改任何Lambda代码,也不用手动向EventBridge写入自定义事件。具体实现方式分两种场景:
1. 捕获Lambda启动(调用触发)事件
Lambda函数被调用时,AWS CloudTrail会自动记录lambda:InvokeFunction API调用事件,EventBridge可以直接捕获这些来自CloudTrail的事件。
对应的EventBridge事件模式示例:
{ "source": ["aws.cloudtrail"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["lambda.amazonaws.com"], "eventName": ["InvokeFunction"] } }
2. 捕获Lambda执行结束事件
Lambda会自动向EventBridge发送函数执行状态事件(事件源为aws.lambda),包含执行成功、失败等状态,对应函数执行结束的场景。
对应的EventBridge事件模式示例(匹配所有执行结果):
{ "source": ["aws.lambda"], "detail-type": ["Lambda Function Invoke Result"] }
如果需要细分成功/失败状态,可以在detail字段中添加过滤条件:
{ "source": ["aws.lambda"], "detail-type": ["Lambda Function Invoke Result"], "detail": { "status": ["Success", "Failure"] } }
配置关键点
- 确保你的AWS账号已启用CloudTrail(默认通常已启用,若未启用需先开启,确保记录Lambda的API调用事件)。
- 在EventBridge控制台创建规则时,选择上述对应事件模式,然后配置通知目标(比如SNS主题、SQS队列、自定义通知服务等)即可接收事件通知。
内容的提问来源于stack exchange,提问作者Jesse Barnum
相关产品推荐
相关产品推荐

