我想通過AWS API網關調用Lambda函數。 當我提到身份驗證類型爲NONE時,它可以正常工作,但API會公開,任何具有url的人都可以訪問我的API。 爲了使API調用的安全,我使用的身份驗證類型AWS_IAM和 還附上AmazonAPIGatewayInvokeFullAccess政策,我的用戶,但得到這個錯誤:訪問API網關時缺少身份驗證令牌?
{消息:「缺少身份驗證令牌」}
我不知道是什麼我在這裏失蹤。
我想通過AWS API網關調用Lambda函數。 當我提到身份驗證類型爲NONE時,它可以正常工作,但API會公開,任何具有url的人都可以訪問我的API。 爲了使API調用的安全,我使用的身份驗證類型AWS_IAM和 還附上AmazonAPIGatewayInvokeFullAccess政策,我的用戶,但得到這個錯誤:訪問API網關時缺少身份驗證令牌?
{消息:「缺少身份驗證令牌」}
我不知道是什麼我在這裏失蹤。
我想你是直接試圖訪問API鏈接,這是行不通的,因爲API使用IAM角色,您必須確保提供AWS認證,即訪問密鑰和密鑰。
使用郵差的Chrome擴展程序來測試您的API: http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html
如果啓用AWS_IAM身份驗證,則必須使用AWS Signature Version 4用AWS憑據簽署請求。
注意:登錄AWS控制檯不會自動將您的瀏覽器的請求籤名到您的API。
感謝@Bob的答案, – Umer
在文檔中發現這一點:
如果AWS_IAM授權使用,您將簽署使用簽名版本4個協議的請求。
Signing request with Signature Version 4
您也可以爲您的API的SDK。
How to generate an SDK for an API in API Gateway
一旦你生成你所選擇的平臺SDK,步驟6中提到,如果您正在使用AWS憑證,到API請求將簽署:
要使用AWS憑證初始化API網關生成的SDK,請使用類似於以下內容的代碼。如果您使用AWS憑證,則將對所有對API的請求進行簽名。這意味着你必須設置相應的CORS Accept標頭爲每個請求:
var apigClient = apigClientFactory.newClient({
accessKey: 'ACCESS_KEY',
secretKey: 'SECRET_KEY',
});
我有同樣的問題,似乎也顯示了這個消息,如果資源不能被發現。
在我的情況下,我更新了API,但忘記重新部署。將更新後的API部署到我的舞臺後,問題得到解決。
我已經失去了一段時間,一個愚蠢的理由:
當你創建一個階段,顯示的鏈接不包含URL的資源部分:
API網址: https://1111.execute-api.us-east-1.amazonaws.com/dev
API +資源URL https://1111.execute-api.us-east-1.amazonaws.com/dev/get-list
的/獲取列表失蹤
和當然,你需要檢查的方法配置是這樣的:
需要特殊的榮譽承認愚蠢的(但常見的)問題的原因。這也讓我受益匪淺。 –
我犯了這個愚蠢的錯誤,以及:' - ) –
好吧,但如何做到這一點使用post方法 –
感謝您的回答。我忘記提供訪問密鑰和密鑰。現在,這就像一個冠軍一樣。你創造了我的一天。 :) – Umer