如何检测AWS Lambda函数是否由EventBridge调度触发?
判断AWS Lambda触发来源的方法
完全可以实现你的需求,不过不是通过Lambda上下文,而是要读取触发事件的结构字段来判断是否来自EventBridge调度。
核心逻辑
当Lambda被EventBridge(原CloudWatch Events)的定时规则触发时,传入的事件会包含固定特征字段:
source字段值固定为aws.eventsdetail-type字段通常为Scheduled Event(对应定时调度场景)
你可以通过检查这些字段来区分触发源,从而实现你要的逻辑。
C# 实现代码
public void FunctionHandler(Dictionary<string, object> input, ILambdaContext context) { // 判断是否是EventBridge定时触发 bool isScheduledByEventBridge = input.TryGetValue("source", out var source) && source.ToString() == "aws.events" && input.TryGetValue("detail-type", out var detailType) && detailType.ToString() == "Scheduled Event"; // 这里替换成你获取悉尼时间小时数的逻辑 int sydneyHour = GetCurrentSydneyTimeHour(); // 仅当EventBridge触发且非悉尼时间2点时退出 if (isScheduledByEventBridge && sydneyHour != 2) { return; } // 你的业务逻辑代码 // ... }
额外说明
- 手动触发(控制台测试、API调用、其他服务触发)时,事件里不会有这些EventBridge专属字段,因此
isScheduledByEventBridge会为false,函数会完整执行。 - 如果需要更严格的校验,还可以检查事件中的
region字段是否匹配你的部署区域,或者resources字段是否包含对应的EventBridge规则ARN,进一步避免误判。
内容的提问来源于stack exchange,提问作者Darren Oakey
相关产品推荐
相关产品推荐

