我们正在开发一个移动/网络应用程序,我们使用aws lambda和dynamo db作为我们的后端。独立的lambda功能完美运行。 呼叫通过api网关路由。我们使用api密钥来利用它提供的安全功能。 出于某些测试目的,我们试图通过第三方休息客户端POSTMAN调用api端点。
请求属于POST类型,但无论我们尝试什么,我们都会得到
.nodisplay {
display: none;
color: red;
font-weight: bold;
}
附上快照以供参考。 (出于安全原因,少数部分用阴影表示)
答案 0 :(得分:25)
从使用AWS API Gateway开始,我遇到了与您相似的陷阱。有两件事可能会导致显示臭名昭着的403 ("message": "Missing authentication token.")
消息:
我注意到您正在使用CloudFront来缓存您的API请求/响应。 CloudFront是一个很棒的工具 - 如果你问我最好的缓存机制之一 - 但是在开发期间缓存事物时,它很容易被高速缓存的错误消息所吸引。这可能是这种情况,所以我的建议是从CloudFront中删除API,直到它完全正常工作。
API Gateway的一个主要功能是AWS处理多个API版本的方式。部署完成后,您可以安全地知道您的API端点不会发生变化 - 正是您想要的API端点。
这是由于部署端点的方式。必须将AWS控制台中进行的每项更改部署到特定部署,才能与实时交互。
例如,如果我将我的API部署到" live"部署和一切运作良好,这很棒。我现在可以继续在AWS控制台中调整设置,以便随着时间的推移改进API,当我对我已经改变的内容感到满意时,我可以再次部署到另一个API部署,这意味着当前的API用户不会必须改变他们的交互方法,直到部署回到他们正在进行的部署上。
您可能遇到的问题是,即使您在AWS控制台中进行了大量更改,您也可能没有重新部署到您在Postman中测试的部署。
旁注:
在“资源编辑器”面板中,您可以提供有关此方法的响应类型,标题和内容类型的信息。在这里,可以向端点提供更有意义的错误消息。
答案 1 :(得分:23)
您似乎没有在网址中添加资源。 URL应该是:
https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource
但你的更像是
https://my-api-id.execute-api.region-id.amazonaws.com/test
答案 2 :(得分:9)
请求没有返回"消息的API网关路径:缺少认证令牌"有效载荷。
不幸的是,这很令人困惑。
答案 3 :(得分:5)
就我而言,我支持的方法是POST
,我尝试在浏览器中GET
。我在Postman做了一个POST
重试,结果很有效!
答案 4 :(得分:3)
我必须添加API使用计划,然后将计划链接到API阶段。
似乎这是在AWS中将密钥链接到API的唯一方法..
答案 5 :(得分:0)
在舞台编辑器页面上,有一个带有舞台名称的左侧导航栏。如果你扩展它,你得到一个正斜线;如果你展开它,你就可以得到你的资源。如果您扩展资源,您将获得您的方法,如果您单击该方法,您将获得一个"调用URL" link(与上面相同但附加了资源)。此调用URL链接有效,调用GET方法并返回结果。
答案 6 :(得分:0)
确保您正在调用已部署的资源。如果没有,您将使用此confusing API error代替404
。您可以通过转到已部署的“阶段”来检查资源是否存在。
要部署新资源:转到Actions -> Deploy API
并获取正确的端点, 转到“阶段”,然后单击您要调用的资源。您会看到“调用网址”链接
然后,您只需运行curl命令,
curl --request GET https://88upd88you.execute-api.us-west-2.amazonaws.com/dev/hello
注意:上面的dev
是我的艺名。