2017-08-24 32 views
0

我的資源/ api有一個方法POST,它將主體代理爲Kinesis Firehose(然後是ES)。同時,我希望它能夠觸發Lambda函數。AWS API網關多個每個方法的集成請求

我試着添加一個額外的方法ANY來觸發Lambda函數,但API網關似乎喜歡POST處理程序。

我知道我可以在POST上觸發Lambda並從Lambda函數提交給Firehose,但我更願意讓這兩個獨立於對方。

+0

只是想知道爲什麼你不想要一個Lambda(不需要你打算調用的那個)作爲中間層。例如,集成請求調用了幾行代碼的Lambda X. Lambda X調用您的原始Lambda並觸發kinesis?此外,你是否需要收集/等待這兩者的反應/狀態,或者你只是在意發射它們? – Nicholas

+0

我沒有原始的Lambda,API網關直接發送給Kinesis。 – Glaslos

+0

你有沒有考慮過step功能? http://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html – Nicholas

回答

2

API網關不會將請求分成多個併發操作。方法意思是「沒有定義方法的任何方法」。既然您也有POST定義,任何POST將不會看到ANY

要做你看起來試圖做的事 - 執行一個Lambda函數調用Kinesis API,你需要編寫一個初始Lambda函數作爲包裝並執行這兩個操作 - 發送向Kinesis發送請求並向Lambda發送請求(以調用其他Lambda函數) - 如果業務邏輯允許,則會異步執行 - 然後將結果編組爲單個連貫的響應,以滿足您的需求。

該第一個Lambda函數不需要與第二個Lambda函數使用相同的語言,例如,如果現有的Lambda函數使用Java語言,則包裝函數可以寫入Node中,而不會對性能產生負面影響,因爲它在Lambda API的另一端獨立執行。

+0

謝謝您確認我的觀察。我想避免額外的lambda的主要原因是將Kinesis整合到API Gateway中。此外,我打算做的兩件事(Kinesis和Lambda)完全是獨立的,沒有任何人會對此做出任何迴應。我會在幾個小時內接受你的回答。 – Glaslos