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

API Gateway调用Lambda {proxy+}函数出现500错误排查求助

问题排查方案:API Gateway调用Lambda报权限错误

核心问题是API Gateway未获得调用目标Lambda函数的权限——虽然Lambda自身执行角色能正常运行(控制台测试通过),但API Gateway作为触发方需要额外的权限配置,以下是具体排查步骤:

1. 检查Lambda的资源策略(关键)

Lambda的资源策略是控制外部服务(如API Gateway)能否调用它的核心配置,默认仅开放控制台测试权限。请确认connect_api函数的资源策略中包含允许API Gateway调用的语句:

  • 登录Lambda控制台,进入connect_api函数,切换到「配置」>「权限」>「资源策略」
  • 确保存在类似以下的策略内容:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:[你的区域]:[账号ID]:function:connect_api",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:execute-api:[你的区域]:[账号ID]:[API Gateway ID]/*/*/[你的API路径]"
        }
      }
    }
  ]
}

若缺失,直接添加该策略并替换其中的区域、账号ID、API Gateway ID和路径信息。

2. 验证API Gateway执行角色的权限

API Gateway的执行角色必须具备lambda:InvokeFunction权限,且资源需明确指向目标Lambda函数:

  • 进入IAM控制台,找到API Gateway使用的执行角色,查看其权限策略
  • 确保策略包含以下内容:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:[你的区域]:[账号ID]:function:connect_api"
    }
  ]
}

注意:资源请勿使用通配符*(特殊需求除外),必须精准指定connect_api函数的ARN,避免权限范围不匹配。

3. 核对ARN的准确性

确认所有配置中的ARN(Lambda函数ARN、API Gateway的SourceArn)无拼写错误:

  • 区域、账号ID、函数名、API Gateway ID必须与实际资源完全匹配
  • API Gateway的SourceArn格式示例:arn:aws:execute-api:us-east-1:123456789012:abc123/prod/POST/connect,需确保阶段(prod/dev等)和路径正确。

4. 快速修复方式

若手动配置易出错,可通过AWS CLI直接添加Lambda权限:

aws lambda add-permission --function-name connect_api --action lambda:InvokeFunction --principal apigateway.amazonaws.com --source-arn "arn:aws:execute-api:[你的区域]:[账号ID]:[API Gateway ID]/*/*/[你的API路径]"

执行命令后重新测试API Gateway调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:29:52