1

我試圖將AWS API GatewayAWS Lambda集成,因爲我試圖通過GET方法執行lambda函數,並且總是我的函數返回的是無效參數,所以我非常困惑。如何通過GET方法將API網關與Lambda集成

{「errorMessage」:「Error - Invalid Group ID - undefined - alexa id: undefined」} |

發生這種情況是因爲參數未到達函數,並且idgrupo變量是<=0

我想在這個表格URL執行lambda函數:

domain.execute-api.us-east-1.amazonaws.com/prod/chkneopairtoken?idgrupo=3823&clientId={321356-6666-4745}&keypair=90809276 

在我的lambda函數我做它:

var idgrupo = event.idgrupo; 
var alexaClientId = event.clientId; 
var keypair = event.keypair; 

if (idgrupo > 0){ 

} else{ 
     console.log("Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId + " - "); 
     //callback(null, "Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId); 
     context.fail("Error - Invalid Group ID - " + idgrupo + " - alexa id: " + alexaClientId); 
    } 

是否有可能做我在做什麼? 我認爲它不是API網關和AWS Lambda之間的集成錯誤,因爲該函數返回我的自定義錯誤消息,並且我認爲它是傳輸參數錯誤。

+0

這聽起來像你有沒有映射到您的API網關映射模板請求參數,因此它們無法使用您的Lambda函數。 –

+0

我明白了,但我會將它映射到「方法請求」或「集成請求」中?你有什麼樣的例子來展示我嗎?謝謝 –

回答

1

回到你的資源GET的「合併請求」,在「身體映射模板」

  1. 選擇了推薦的選項爲「請求體直通」
  2. 添加映射模板(點擊行動「添加繪圖模板」)
  3. 寫「APPLI陽離子/ JSON」爲內容類型
  4. 添加這個模板

{ 
    "idgrupo" : "$input.params('idgrupo')", 
    "clientId" : "$input.params('clientId')", 
    "keypair" : "$input.params('keypair')" 
} 
0

在您的API網關控制檯的「集成請求」下的「映射模板」部分中,爲您提交的內容類型創建一個模板,然後選擇「方法請求傳遞」。這會將所有內容傳遞給Lambda函數。

然後在你的lambda函數的代碼,你需要通過event.params.idgrupo引用的URL參數值,event.params.clientId