2016-09-23 246 views
9

我想通過AWS API網關調用Lambda函數。 當我提到身份驗證類型爲NONE時,它可以正常工作,但API會公開,任何具有url的人都可以訪問我的API。 爲了使API調用的安全,我使用的身份驗證類型AWS_IAM和 還附上AmazonAPIGatewayInvokeFullAccess政策,我的用戶,但得到這個錯誤:訪問API網關時缺少身份驗證令牌?

{消息:「缺少身份驗證令牌」}

我不知道是什麼我在這裏失蹤。

回答

1

如果啓用AWS_IAM身份驗證,則必須使用AWS Signature Version 4用AWS憑據簽署請求。

注意:登錄AWS控制檯不會自動將您的瀏覽器的請求籤名到您的API。

+0

感謝@Bob的答案, – Umer

3

在文檔中發現這一點:

如果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', 
    }); 
    
  • 2

    我有同樣的問題,似乎也顯示了這個消息,如果資源不能被發現。

    在我的情況下,我更新了API,但忘記重新部署。將更新後的API部署到我的舞臺後,問題得到解決。

    15

    我已經失去了一段時間,一個愚蠢的理由:

    當你創建一個階段,顯示的鏈接不包含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

    /獲取列表失蹤

    和當然,你需要檢查的方法配置是這樣的:

    enter image description here

    +0

    需要特殊的榮譽承認愚蠢的(但常見的)問題的原因。這也讓我受益匪淺。 –

    +0

    我犯了這個愚蠢的錯誤,以及:' - ) –

    +0

    好吧,但如何做到這一點使用post方法 –

    相關問題