我正在使用API网关构建REST API,以通过aws lambda与已部署的aws sagemaker模型进行通信。当我测试方法(Method Test Results)时,我的lambda函数返回所需的结果。我肯定已经部署了API,并且使用了正确的调用URL,并在资源名称后附加了(Method Invoke URL)。最后,我检查了此方法请求(Method Auth Settings)的所有身份验证设置。当我在浏览器中输入调用URL或尝试调用REST API(从cloud9 IDE –我正在开发的Web应用程序)时,出现以下错误:{“ message”:“ Missing Authentication Token”}({{3} })
我的API非常简单,只有一个POST请求,它不包含任何其他资源或方法。我也尝试在'/'下设置方法,但存在相同的问题。
这个问题有很多人,我花了一段时间阅读类似的帖子-但是解决方案归结为我在上面检查过的问题。如果有人可以帮助,将不胜感激!
伊恩
答案 0 :(得分:5)
为了使其他任何与我一样愚蠢的人受益,您可能会收到此错误的另一个原因是,您正在请求未配置的URL。
例如,您已经在/
上设置了代理API,该代理API将请求发送到后端,并且其路径为https://mumblemumble/prod
,而您自己请求了https://mumblemumble/prod
的https://mumblemumble/prod/your/resource
中,您会收到此错误。
答案 1 :(得分:1)
您已使用POST
方法配置了API网关资源,并且在使用API Gateway控制台进行测试时,该控制台会处理将HTTP方法设置为POST
。但是,当您直接从浏览器中访问调用URL时,将使用GET
方法。
默认情况下,API网关针对未定义的方法或不存在的路径返回{"message":"Missing Authentication Token"}
响应,如给定here
如果API Gateway无法处理传入的请求,则会将错误响应返回给客户端,而不会将请求转发到集成后端。默认情况下,错误响应包含简短的描述性错误消息。例如,如果尝试在未定义的API资源上调用操作,则会收到带有{“ message”:“ Missing Authentication Token”}消息的错误响应。
使用POST
方法测试您的API。可以使用命令行(curl
)或使用Postman来完成。
答案 2 :(得分:0)
另一个潜在原因是 Lambda 函数代码抛出的错误。我有一个类似的问题,结果证明是我的 python 代码中的 TypeError。您可以查看 CloudWatch 日志以获取更多信息。
答案 3 :(得分:0)
就我而言,网址不正确。从 Aws API,转到您的 api,转到您的方法的“阶段”,找到“调用 URL”,然后在邮递员中使用它。