如何在CloudFormation中为AWS::Lambda::Permission配置多个SourceArn?
解决Lambda权限配置多个EventBridge调度器的错误
你遇到的错误是因为AWS::Lambda::Permission资源的SourceArn属性仅支持单个字符串值,无法接收数组格式。Lambda的权限模型要求每个权限条目只能绑定一个触发源ARN,所以不能把多个EventBridge规则的ARN放在一起配置。
正确的做法是为每个EventBridge调度规则单独创建一个Lambda权限资源,示例配置如下:
# 为每月第一天的调度规则配置调用权限 PermissionForFirstDayMonthRule: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref SchedulerFunction Action: lambda:InvokeFunction Principal: events.amazonaws.com SourceArn: !GetAtt AsyncDashboardFirstDayMonthScheduledRule.Arn # 为每日调度规则配置调用权限 PermissionForDailyRule: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref SchedulerFunction Action: lambda:InvokeFunction Principal: events.amazonaws.com SourceArn: !GetAtt AsyncDashboardOnceEveryDayScheduledRule.Arn # 为每小时调度规则配置调用权限 PermissionForHourlyRule: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref SchedulerFunction Action: lambda:InvokeFunction Principal: events.amazonaws.com SourceArn: !GetAtt AsyncDashboardOnceEveryOnehourScheduledRule.Arn
每个权限资源对应一个EventBridge规则,这样就能让所有调度器都获得调用目标Lambda函数的权限。
内容的提问来源于stack exchange,提问作者AditYa
相关产品推荐
相关产品推荐

