0

我一直在使用Apex組裝和部署Lambda函數,並且通過AWS API網關使用GET方法的函數正在正常工作。使用Lambda的亞馬遜API網關提供了POST方法的權限錯誤

我現在需要創建一個API來使用POST調用Lambda函數並傳入一個JSON對象。要獲取POST的基礎工作,我創建了一個簡單的lambda函數,只是做以下

console.log("!!!!!!! Received request"); 
callback(null, {data: "Success"}); 
return; 

當我打電話使用從API網關一個GET方法,這lambda函數和測試的API,它工作正常 - API網關在CloudWatch中的成功調用中記錄「接收的請求」時,測試機制會提供「成功」消息。

然而,當我使用POST請求來調用API網關相同的lambda函數,我得到以下

「消息」:「內部服務器錯誤」

而且我也看到「執行失敗,由於配置錯誤:對Lambda函數的權限無效「

所以我想知道的是,在通過POST方法調用該函數時,調用Lambda函數的角色是否需要任何其他特權。如果有的話,我需要分配給正在使用的角色的特權是什麼?

謝謝, Sanjay。

回答

0

如果要通過API網關級別調用POST方法,則必須部署該post方法。轉到AWS API網關控制檯。然後選擇您的POST API名稱,並在網格(屏幕)頂部找到名爲Actions的下拉列表,其中有一個名爲deploy的選項。你必須選擇那麼只有你的POST API才能工作。

+0

我這樣做了,並部署了一遍,但得到了同樣的錯誤。可以肯定的是,我不是在外部測試它(使用Postman等),但是,作爲第一步,從API網關API定義控制檯中對其進行測試。 –

0

API網關需要權限來調用您的Lambda函數。如果通過Web控制檯配置API,則會提示您自動添加權限, Lambda函數未使用階段變量指定。

因此,如果您使用像CloudFormation或Swagger導入的工具來創建或更新API,或者Lambda函數是通過stage變量指定的,則需要手動發出aws lambda add-permission命令來設置權限。

查看這些信息瞭解更多詳情:

Lambda function -> Api Gateway stage variable permission manually

AWS API Gatewat with proxy Lambda: Invalid permissions on Lambda function