使用Pulumi在AWS配置Event Bridge触发Lambda报错如何解决
问题修复方案
错误根因
你遇到的报错是AWS平台的限制:当EventBridge的目标为Lambda函数时,EventTarget不支持传入role_arn参数,该参数仅适用于ECS任务执行、SSM命令运行这类目标场景。触发Lambda不需要为EventBridge单独创建调用角色,只需要配置Lambda的资源权限,允许EventBridge服务调用该函数即可。
修正步骤
- 删除冗余资源:你之前创建的
event_role、关联的3个角色策略挂载、以及EventRule中指定的role_arn参数都可以删除,定时触发类的EventRule不需要配置角色。 - 新增Lambda调用权限:添加Lambda权限资源,授权EventBridge规则可以触发该函数。
- 修正EventTarget配置:移除
role_arn参数。
修正后代码示例
1. 移除原有event_role相关的全部代码,修正EventRule配置
event_rule = cloudwatch.EventRule( resource_name = '{project_name}-event-rule'.format(project_name=project_name), schedule_expression = 'cron(0 12 * * ? *)' )
2. 新增Lambda权限配置
lambda_event_permission = lambda_.Permission( resource_name = '{project_name}-lambda-event-permission'.format(project_name=project_name), action = "lambda:InvokeFunction", function = lambda_function.name, principal = "events.amazonaws.com", source_arn = event_rule.arn )
3. 修正EventTarget配置
event_target = cloudwatch.EventTarget( resource_name = '{project_name}-event-target'.format(project_name=project_name), rule = event_rule.name, arn = lambda_function.arn )
补充说明
你参考的官方示例是EventBridge触发SSM执行命令的场景,这类场景才需要传入role_arn授权,和Lambda触发场景逻辑不同,不要直接复用配置。
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

