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

Lambda本地正常但API Gateway发布到DEV阶段报Missing Authentication Token

解决API Gateway调用时"Missing Authentication Token"错误的方案

你遇到的这个问题核心出在API Gateway的部署或配置上,毕竟本地调用Lambda和API Gateway都正常,说明你的Lambda逻辑没问题。我来帮你梳理几个最可能的原因和解决办法:

1. 检查API Gateway的资源与方法配置

  • 首先确认你在API Gateway中配置了**根路径"/"**对应的HTTP方法(比如你代码里用到的GET),并且这个方法已经正确关联到你的Lambda函数。
  • 发布到DEV阶段时,要确保部署操作包含了这个根资源和方法——有时候如果是新增的资源,部署时没选中的话,阶段里就不会有这个路径的访问权限,导致调用时报错。
  • 你当前调用的URL是https://jbpqyp3142.execute-api.us-east-2.amazonaws.com/DEV,这直接访问的是根路径,所以必须保证根资源的方法是可用且已部署的。

2. 排查授权配置问题

你提到创建authorizer时出错,这很可能是问题的源头:

  • 如果你的API不需要授权访问,直接把对应方法的Authorization设置改为NONE(在API Gateway控制台的方法设置里)。如果之前误选了其他授权类型(比如Lambda Authorizer、Cognito),但配置没完成,API Gateway就会拦截所有请求,返回"Missing Authentication Token"。
  • 如果确实需要授权,那得先把authorizer配置正确:比如Lambda Authorizer要确保API Gateway有调用该authorizer函数的权限,并且authorizer函数能返回符合要求的IAM策略文档。

3. 确认部署状态与生效时间

  • API Gateway部署后有时候需要1-2分钟才能完全生效,尤其是第一次部署到新阶段。可以去控制台的Deployments页面,检查DEV阶段对应的部署版本是否是最新的,并且包含了你需要的资源和方法。

4. 验证请求方法是否匹配

你的Lambda代码是通过queryStringParameters获取参数的,这说明你应该用GET方法调用API。如果调用时用了POST、PUT等其他方法,API Gateway也会返回这个错误,所以要确保请求方法和你配置的一致。

对Lambda代码的小优化

另外,你的Ruby代码可以简化一下,用Ruby的安全导航和默认值语法,让逻辑更清晰:

require 'json'
def lambda_handler(event:, context:)
  # 用dig和&.安全获取参数,不存在就用默认值1
  input = event.dig('queryStringParameters', 'in')&.to_i || 1
  triple = (input * 3).to_s
  # 用字符串插值让代码更易读
  { statusCode: 200, body: JSON.generate("Hello from Lambda! Result is #{input} *3 = #{triple}") }
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:31:04