gpt4 book ai didi

node.js - 如何在 AWS API 网关中调试 "Missing Authentication Token"?

转载 作者:搜寻专家 更新时间:2023-11-01 00:05:11 25 4
gpt4 key购买 nike

我有一个代理到 AWS Lambda 函数的 API 网关资源。这对于传递尾随路径参数 (/periodicals/{tail+}) 效果很好,但由于我希望这些参数是可选的,所以我还添加了一个 ANY 方法高级资源(/periodicals):

这在 AWS 控制台中测试该方法时效果很好。然而,直接从我的浏览器对该资源执行请求会导致以下响应:

{"message":"Missing Authentication Token"}

有了这个标题:

x-amzn-errortype: MissingAuthenticationTokenException

它还有一个 x-cache header ,其值为 Error from cloudfront,所以我猜它可能与 CloudFront 有关。不过,我还没有明确设置 CloudFront,也不知道如何检查?

我想我已经阅读了关于此错误消息的所有主题,但它们似乎都不适用于我:

  • 我的方法不需要授权:
  • 我很确定 URL 是正确的。当我在浏览器中访问 /periodicals/whatever(即 {tail+} 资源)时,它工作正常,但对于 /periodicals 则不然。
  • CORS 已启用,因为这两个资源都指向处理 CORS 并为子路径工作的同一个 Lambda 函数。
  • HTTP 动词应该无关紧要,因为它正在监听ANY
  • 无论是否添加尾部斜杠,结果都是一样的。
  • API 已部署。
  • 我认为 API 资源对我的 Lambda 函数有足够的权限,因为我可以从 AWS 控制台成功执行它:

感谢@Lakindu,一个有趣的观察是 Stages View 中的资源下方没有列出任何方法:

我还能做些什么来找出问题所在?

最佳答案

我发现发生了什么:

我的 API 是使用 TerraForm 部署的。在 TerraForm 中,您指定的资源之一是 an API Gateway Deployment .我认为如果它依赖的任何资源(包括 /periodicals 资源)发生变化,它会重新部署 API。

唉,我现在想我必须更新它的 state_description以强制进行新的部署。这样做的好处是您可以在不影响 API 用户的情况下更新配置,但这确实意味着您在要部署更新的配置时明确需要执行操作。

希望这对任何人都有帮助。

tl;dr 与我的想法相反,添加方法后 API 并未实际部署。 (您可以通过在“操作”下拉列表中选择“部署 API”,在 AWS API Gateway 控制台中手动执行此操作。

关于node.js - 如何在 AWS API 网关中调试 "Missing Authentication Token"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46072388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com