使用休息客户端 POSTMAN 使用 api 密钥调用 AWS api 网关端点

Making calls to AWS api gateway endpoint with api key using rest client POSTMAN

我们正在开发一个 mobile/web 应用程序,我们正在为此使用 aws lambda 和 dynamo db,因为我们的 backend.The 独立 lambda 函数运行良好。 正在通过 api 网关路由呼叫。我们正在使用 api 密钥来利用它提供的安全功能。 出于某些测试目的,我们正在尝试通过第三方休息客户端 POSTMAN 调用 api 端点。

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

403 ("message": "Missing authentication token.")

附上截图供参考。 (出于安全原因,少数部分被涂上阴影)

  1. 我们无法查明该行为的根本原因。
  2. 如果用其他工具也能达到同样的效果,请提出建议。

从使用 AWS API 网关开始,我陷入了与您一样的陷阱。有两件事会导致显示臭名昭著的 403 ("message": "Missing authentication token.") 消息:

  1. CloudFront 的主动缓存

我注意到您正在使用 CloudFront 来缓存您的 API request/responses。 CloudFront 是一个很棒的工具——如果你问我的话,它是最好的缓存机制之一——但是在开发过程中缓存东西时,很容易被缓存的错误消息所困扰。这可能就是这种情况,所以我的建议是从 CloudFront 中删除 API,直到它完全正常工作。

  1. 忘记re-deploy

API 网关的主要功能之一是 AWS 处理 API 多个版本的方式。部署后,您可以放心,您的 API 端点 不会更改 — 正是您想要的 API 端点。

这是由于端点的部署方式所致。在 AWS 控制台中所做的每项更改都必须部署到特定部署,以便与实时交互。

例如,如果我将 API 部署到 "live" 部署并且一切正常,那就太好了。我现在可以继续调整 AWS 控制台中的设置以随着时间的推移改进 API,当我对我所做的更改感到满意时,我可以再次部署到另一个 API 部署,这意味着当前API 在部署恢复到他们正在处理的部署之前,用户不必更改他们的交互方法。

您可能遇到的问题是,即使您在 AWS 控制台中进行了大量更改,您可能还没有re-deploy编辑到您在 Postman 中测试的部署。

旁注:

在资源编辑器面板中,您可以提供有关此方法的响应类型、它们的 headers 和内容类型的信息。在这里可以向您的端点提供更有意义的错误消息。

您似乎没有在 URL 中添加资源。 URL 应该是这样的:

https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource

但你的更像

https://my-api-id.execute-api.region-id.amazonaws.com/test

在我的例子中,我支持的方法是POST,我试图在浏览器中GET它。我通过在 Postman 中执行 POST 进行了重试,它成功了!

请求 API 不存在的网关路径 returns "message: Missing Authentication Token" 负载。

不幸的是,这很令人困惑。

我必须添加一个 API 使用计划,然后 link 该计划进入 API 阶段。

似乎这是 link AWS 中 API 的关键的唯一方法..

在舞台编辑器页面上,有一个带有舞台名称的左侧导航栏。如果你展开它,你会得到一个正斜杠;如果你扩展它,你就会得到你的资源。如果你展开你的资源,你会得到你的方法,如果你点击这个方法,你会得到一个 "Invoke URL" link(与上面的相同,但附加了资源)。此调用 URL link 有效,调用 GET 方法并返回结果。

确保您正在调用已部署的资源。 如果没有,您将 confusing API error 改为 404。您可以通过部署 "Stages".

检查资源是否存在

要部署新资源:转到Actions -> Deploy API

并获得正确的端点, 转到 "Stages" 并单击您要调用的资源。你看到 link "invoke URL"

然后你可以简单地运行 curl 命令,

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

注:dev以上是我的艺名