You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在CloudFormation目标组配置Lambda版本遇403权限错误的原因排查

问题原因及解决方法

你遇到的权限错误:

Resource handler returned message: "elasticloadbalancing principal does not have permission to invoke arn:aws:lambda:us-east-1:336381469992:function:my-api-v1-dev-handler:13 from target group arn:aws:elasticloadbalancing:us-east-1:targetgroup/my-apis-v1-dev/f811183d66a6a480 (Service: ElasticLoadBalancingV2, Status Code: 403, Request ID: ee4741b2-bd5e-4d61-aa22-601d0232c670)"

核心原因

你的lambdaInvokePermission资源仅授权了Lambda函数本身(不带版本号的ARN)的调用权限,但目标组绑定的是具体的Lambda版本ARN。ELB尝试调用带版本号的Lambda资源时,由于权限未覆盖到该版本,触发403权限错误。

具体配置问题

在当前的Serverless.yaml中:

  • lambdaInvokePermission的FunctionName字段使用!Ref HandlerLambdaFunction,指向的是Lambda函数的基础ARN(无版本号)
  • 但targetGroup的Targets.Id使用!Ref functionVersion,指向的是带版本号的Lambda资源ARN

Lambda的权限是独立作用于版本/别名的,基础函数的调用权限不会自动传递给其发布的版本,因此ELB调用指定版本时会被拒绝。

修正步骤

  1. 修改lambdaInvokePermission的FunctionName,指向具体的Lambda版本资源:
lambdaInvokePermission:
  Type: "AWS::Lambda::Permission"
  Properties:
    FunctionName: !Ref functionVersion  # 替换为版本资源引用
    Action: "lambda:InvokeFunction"
    Principal: "elasticloadbalancing.amazonaws.com"
    SourceArn: !Ref targetGroup
  1. (可选但推荐)显式声明依赖关系,确保资源创建顺序正确:
lambdaInvokePermission:
  Type: "AWS::Lambda::Permission"
  DependsOn:
    - functionVersion
    - targetGroup
  Properties:
    FunctionName: !Ref functionVersion
    Action: "lambda:InvokeFunction"
    Principal: "elasticloadbalancing.amazonaws.com"
    SourceArn: !Ref targetGroup

内容的提问来源于stack exchange,提问作者Thisun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:50:32