我有一个 API 网关资源,被代理到 AWS Lambda 函数。这对于传递尾部路径参数 (/periodicals/{tail+}
) 是可以正常工作的,但是当我希望这些参数是可选的时,我还在高级资源(/periodicals
)中添加了ANY
方法:
当我从AWS控制台测试该方法时,它可以正常工作。然而,当我直接从浏览器请求此资源时,会得到以下响应:
{"message":"Missing Authentication Token"}
使用此标题:
x-amzn-errortype: MissingAuthenticationTokenException
页面还带有一个值为“Error from cloudfront”的x-cache
头,所以我猜这可能与CloudFront有关。虽然我并没有明确设置CloudFront,也不知道如何检查?
我想我读了每个关于此错误消息的主题,但似乎都不适用于我:
- 我的方法不需要授权:
- 我非常确定URL是正确的。当我在浏览器中访问
/periodicals/whatever
(即{tail+}
资源)时,它运行良好,但对于/periodicals
则不行。 - CORS已启用,因为两个资源都指向同一个Lambda函数,该函数处理CORS并对子路径有效。
- HTTP动词不应该有影响,因为它正在监听
ANY
。 - 是否添加尾随斜杠结果相同。
- API已部署。
- 我认为API资源在我的Lambda函数上具有足够的权限,因为我可以从AWS控制台成功执行它:
感谢@Lakindu提供的一个有趣的观察结果,即在Stages视图下面没有列出任何方法:
还有什么我可以做来找出问题所在吗?
/periodicals
没有列出任何方法吗? - Vincent/{tail+}
资源相同:http://i.imgur.com/RdFS5QF.png - Vincent