10

我创建了api密钥并将其添加到我的函数中。然后,我已经部署了API和testeed,但仍然得到:在亚马逊api网关中使用api密钥

"message": "Forbidden" 

我如何通过钥匙插进我的JSON请求,因为我一直在使用“X-API的关键”:“theKey”?

+0

这个[post](http://www.awslessons.com/2017/aws-api-gateway-adding-apikey-requests/)为我解释了它! – phouse512

回答

13

x-api-key参数作为一个HTTP头参数传递(即它不添加到JSON体)链接的API密钥。您如何传递HTTP标头取决于您使用的HTTP客户端。

例如,如果您使用卷曲并假设你POST JSON的有效载荷,请求看起来像(你与你的API的AWS区域替换[api-id]与实际ID和[region]):

$ curl -X POST -H "x-api-key: theKey" -H "Content-Type: application/json" -d '{"key":"val"}' https://[api--id].execute-api.[region].amazonaws.com 
+0

是的我在ios sdk中使用NSMutableURLRequest *请求,然后您可以添加密钥并且它可以工作 – cdub

7

我希望你不会错过与API API-Gateway Configuration

12

我不得不添加一个API使用计划,然后将计划链接到API阶段。

看起来像这样是将密钥链接到API的唯一方法,不确定这是AWS上的最近更改。

+2

我刚刚遇到同样的问题。花了我半个小时弄清楚发生了什么事。这个糟糕的错误消息:'{“message”:“Forbidden”}'根本没有帮助。感谢AWS! – kev

+1

经典AWS。只是错过了文档的一个重要部分,不要告诉你错误信息中的问题或者如何解决它。谢谢,这为我解决了。 –

5

如果您将'需要API密钥'选项设置为true,请检查以下内容。

  1. 您必须将'x-api-key'HTTP报头参数传递给API网关。

  2. 必须创建API密钥。

  3. 此外,您需要检查API网关控制台上的API密钥的使用计划。

+0

谢谢。我认为aws的文件很不明确。 –