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

启用自定义Lambda授权后API Gateway返回内部服务器错误求助

排查HTTP API Gateway自定义授权后500错误的步骤

1. 验证授权Lambda返回的策略格式与内容

HTTP API对自定义授权返回的策略有严格要求,必须确保:

  • 策略版本为2012-10-17,不能使用旧版本
  • Resource字段必须是HTTP API的Route ARN(格式:arn:aws:execute-api:<region>:<account-id>:<api-id>/<stage>/<method>/<route-path>),而非SQS的ARN
  • 必须包含Action: "execute-api:Invoke"和Effect: "Allow"的语句
  • 返回的JSON格式无语法错误(比如逗号遗漏、引号不匹配)

示例正确返回格式:

{
  "principalId": "auth-user-001",
  "policyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Action": "execute-api:Invoke",
        "Effect": "Allow",
        "Resource": "arn:aws:execute-api:us-east-1:123456789012:abcxyz/prod/POST/send-to-sqs"
      }
    ]
  }
}

2. 检查API Gateway执行日志的具体错误信息

开启API Gateway的Execution Logs(在API Gateway控制台的Stage设置中配置),查看CloudWatch日志里的errorMessage字段:

  • 如果是Invalid policy document,说明授权Lambda返回的策略格式或内容不符合要求
  • 如果是AccessDenied,需确认API Gateway的执行角色是否仍持有sqs:SendMessage权限(排除授权开启后角色权限被意外覆盖的情况)
  • 其他错误直接根据日志提示定位问题

3. 确认授权器与Route的关联配置

  • 确保Route的AuthorizationType设置为CUSTOM,且AuthorizerId正确关联到自定义Lambda授权器
  • 检查授权器的PayloadFormatVersion是否为2.0(HTTP API默认使用2.0版本,与REST API的1.0格式不兼容)

4. 排除授权Lambda的隐性执行错误

虽然你看到授权Lambda执行完成,但需检查:

  • Lambda返回的JSON是否有特殊字符或编码问题(比如中文乱码、转义错误)
  • Lambda的执行超时时间是否足够(建议设置为1-2秒,避免授权过程超时导致API Gateway返回500)

5. 关于SQS权限的说明

你关闭授权时消息能正常流转,说明API Gateway的执行角色已经具备sqs:SendMessage权限,启用自定义授权后不需要额外给授权Lambda配置SQS权限——授权Lambda只负责生成允许调用API Route的策略,SQS的访问权限由API Gateway的执行角色控制。

内容的提问来源于stack exchange,提问作者PM-MC-23

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 13:20:13