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

Amplify AppSync中Lambda跨调用的CloudFormation权限配置报错排查

Lambda跨函数调用403权限问题排查与解决

问题背景

在Amplify AppSync应用中,通过CloudFormation配置权限让InvokerFunction调用FunctionToCall时触发403错误,错误信息如下:

Error invoking another lambda: failed to invoke function arn:aws:lambda:us-east-1::function:: operation error Lambda: Invoke, https response error StatusCode: 403, api error AccessDeniedException: User: arn:aws:sts:::assumed-role// is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-east-1::function: because no identity-based policy allows the lambda:InvokeFunction action

已添加的AWS::Lambda::Permission配置如下:

"InvokeLambdaFunction": {
  "DependsOn": [
    "LambdaFunction"
  ],
  "Type": "AWS::Lambda::Permission",
  "Properties": {
    "Action": "lambda:InvokeFunction",
    "FunctionName": {
      "Fn::Sub": "FunctionToCall-${env}"
    },
    "Principal": "lambda.amazonaws.com",
    "SourceArn": {
      "Fn::Sub": "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:InvokerFunction-${env}"
    }
  }
}

现有配置的问题

  1. 混淆资源型与身份型策略:
    AWS::Lambda::Permission是资源侧的授权策略,仅允许指定主体访问目标Lambda,但错误核心是调用方Lambda的执行角色(身份)未被授予调用权限——身份型策略缺失。

  2. DependsOn配置不准确:
    当前DependsOn指向泛称的LambdaFunction,若目标函数的逻辑ID并非此名称,会导致权限配置在目标函数创建前完成,引发无效授权。

解决方案

1. 为调用方Lambda执行角色添加身份型IAM策略

必须给InvokerFunction的执行角色附加允许调用目标函数的IAM策略,示例CloudFormation配置如下:

InvokerLambdaInvokePolicy:
  Type: AWS::IAM::Policy
  Properties:
    PolicyName: InvokerLambdaInvokePermission
    PolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: lambda:InvokeFunction
          Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:FunctionToCall-${env}"
    Roles:
      - !Ref InvokerFunctionExecutionRole # 替换为InvokerFunction对应的执行角色逻辑ID

2. 修正现有Lambda::Permission配置

保留资源侧授权的同时,确保配置准确:

  • 将DependsOn改为目标函数的逻辑ID(比如目标函数资源名为FunctionToCall,则改为["FunctionToCall"])
  • 确认FunctionName和SourceArn的Sub语法正确,${env}变量能正常解析为对应环境值

3. 权限验证

  • 进入IAM控制台,检查InvokerFunction的执行角色,确认已附加上述身份策略
  • 进入目标Lambda控制台的「配置-权限-资源策略」,确认已生成正确的授权规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:33:30