CloudFormation创建的Event Rule未触发Lambda,求排查原因
问题排查与修复方案
1. 缺失Lambda资源策略授权
通过EventBridge Scheduler UI创建定时任务时,AWS会自动给目标Lambda添加上允许EventBridge调用的资源策略,但CloudFormation部署EventBridge规则时不会自动做这件事——这是最常见的触发失败原因。
你需要在CloudFormation模板中添加Lambda权限资源,让EventBridge有权调用你的函数:
SNSSubscriptionLambdaPermission: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref SNSSubscriptionLambda Action: lambda:InvokeFunction Principal: events.amazonaws.com SourceArn: !GetAtt SNSLambdaScheduleRule.Arn
2. 指定的RoleArn权限不足
你的EventBridge规则里配置了RoleArn,但这个角色如果没有lambda:InvokeFunction权限,EventBridge也没法触发Lambda。如果坚持用角色授权的方式,给LabRole添加以下权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:你的AWS区域:119497028878:function:SNSSubscriptionLambda" } ] }
不过更推荐用上面的Lambda资源策略方式,这种方式更安全,也不需要给EventBridge规则额外指定角色。
3. 验证关联状态
部署完成后,去Lambda函数的「配置」→「触发器」页面,确认有没有对应的EventBridge规则触发器。如果没有,说明权限配置有问题,需要重新检查。
另外,也可以在EventBridge规则的「目标」页点击「测试」按钮手动触发一次,看看能不能成功调用Lambda,快速定位问题。
内容的提问来源于stack exchange,提问作者yatrik
相关产品推荐
相关产品推荐

