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的文件很不明確。 –