使用rest client POSTMAN使用api密钥调用AWS api网关端点

时间:2015-09-16 03:51:51

标签: amazon-web-services aws-lambda aws-api-gateway

我们正在开发一个移动/网络应用程序,我们使用aws lambda和dynamo db作为我们的后端。独立的lambda功能完美运行。 呼叫通过api网关路由。我们使用api密钥来利用它提供的安全功能。 出于某些测试目的,我们试图通过第三方休息客户端POSTMAN调用api端点。

请求属于POST类型,但无论我们尝试什么,我们都会得到

.nodisplay { display: none; color: red; font-weight: bold; }

附上快照以供参考。 (出于安全原因,少数部分用阴影表示)

Fiddle

  1. 我们无法理解这种行为的根本原因。
  2. 如果使用其他工具可以实现同样的目的,请建议。

7 个答案:

答案 0 :(得分:25)

从使用AWS API Gateway开始,我遇到了与您相似的陷阱。有两件事可能会导致显示臭名昭着的403 ("message": "Missing authentication token.")消息:

  1. CloudFront的积极缓存
  2. 我注意到您正在使用CloudFront来缓存您的API请求/响应。 CloudFront是一个很棒的工具 - 如果你问我最好的缓存机制之一 - 但是在开发期间缓存事物时,它很容易被高速缓存的错误消息所吸引。这可能是这种情况,所以我的建议是从CloudFront中删除API,直到它完全正常工作。

    1. 忘记重新部署
    2. 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

amz-api-gateway

并获取正确的端点, 转到“阶段”,然后单击您要调用的资源。您会看到“调用网址”链接

resource-endpoint

然后,您只需运行curl命令,

curl --request GET https://88upd88you.execute-api.us-west-2.amazonaws.com/dev/hello

注意:上面的dev是我的艺名。