【发布时间】:2018-02-14 18:39:47
【问题描述】:
我有一个代理到 AWS Lambda 函数的 API Gateway 资源。这对于传递尾随路径参数 (/periodicals/{tail+}) 效果很好,但由于我希望这些参数是可选的,我还向更高的资源 (/periodicals) 添加了一个 ANY 方法:
在 AWS 控制台中测试该方法时,这可以正常工作。但是,从我的浏览器直接对该资源执行请求会产生以下响应:
{"message":"Missing Authentication Token"}
有了这个标题:
x-amzn-errortype: MissingAuthenticationTokenException
它还有一个 x-cache 标头,其值为 Error from cloudfront,所以我猜它可能与 CloudFront 有关。我还没有明确设置 CloudFront,也不知道如何检查?
我想我阅读了有关此错误消息的所有主题,但似乎没有一个适用于我:
- 我的方法不需要授权:
- 我很确定 URL 是正确的。当我在浏览器中访问
/periodicals/whatever(即{tail+}资源)时,它可以正常工作,但/periodicals并非如此。 - CORS 已启用,因为两个资源都指向同一个 Lambda 函数,该函数处理 CORS 并适用于子路径。
- HTTP 动词应该无关紧要,因为它正在侦听
ANY。 - 无论我是否添加斜杠,结果都是一样的。
- API 已部署。
- 我认为 API 资源对我的 Lambda 函数有足够的权限,因为我可以从 AWS 控制台成功执行它:
感谢@Lakindu,一个有趣的观察是阶段视图中的资源下方没有列出任何方法:
我还能做些什么来找出问题所在?
【问题讨论】:
-
在选择 lambda 函数“Stages”后,您是否在左侧菜单中检查了 API 网关?是否被屏蔽?
-
@Lakindu 嗯,这看起来很可疑:i.imgur.com/8bpfgGT.png 你知道为什么没有列出
/periodicals的方法吗? -
你需要有一个资源,在资源里面你可以有方法点击/periodicals然后操作按钮,创建方法
-
@Lakindu 你的意思是在左边的“资源”部分?因为我认为我已经有了一个方法? i.stack.imgur.com/VdLcm.png
-
imgur.com/a/SnxMC 检查点击相关方法后集成响应是否被禁用?就像我分享的图片一样
标签: node.js amazon-web-services aws-lambda aws-api-gateway