2017-01-25 73 views
2

構建Web後端的API我工作的一個項目,建立一個後端無服務器網絡的API。在閱讀AWS api網關/ lambda開發人員指南中的這些文檔後,我完全被我可以使用的不同方法所困惑。使用AWS API網關拉姆達

我是很新的所有網頁內容包括請求,響應,代理...

我已經嘗試了一些解決方案,我發現無論在教程和在線,但仍然感到困惑。

  1. 在API網關合並請求,在整合型,有「lambda函數」和「AWS服務」,如果讓我選擇AWS服務,那麼我仍然可以選擇拉姆達。有什麼不同?如果我選擇lambda,我可以選擇「使用lambda代理集成」,我研究了「proxy」,並且我認爲我有這個想法,但我仍然感到非常困惑。在我的實驗中,只有在選擇「使用lambda代理集成」時,纔可以在「event」對象中獲取請求。有時網頁瀏覽器可以呈現來自lambda的響應,有時需要在API網關內進行一些設置。

  2. 在我的情況下,最佳解決方案/實踐是什麼?

請幫

回答

3

AWS服務是調用該服務的AWS API。 Lambda函數用於調用Lambda函數。如果您要調用Lambda函數,而不是調用與管理Lambda函數相關的某個AWS API,請選擇集成類型「Lambda函數」。

你的第二個問題是如此廣泛,我甚至不知道你在問什麼。

+0

@Pano:除了馬克提供的信息中,「拉姆達代理一體化」是一個選項,如果你想有一個單一的lambda函數接收來自使用多個HTTP方法(GET,PUT,DELETE等)以及多條路徑的請求'/ {proxy +}'資源路徑(這會捕獲根路徑下的任何路徑)。在這個選項中,您的Lambda函數將接收包含所有HTTP信息(方法,路徑,頭文件等)的任何請求的標準消息格式。然後,您將確定如何處理請求(基本上實現您自己的路由)。 –

+0

如果希望API網關充當HTTP方法的路由器,並使用不同的HTTP路徑和路由到不同Lambda函數的方法,則標準的「Lambda函數」集成請求更合適。 –

+0

它們都是實現無服務器API的有效方式,架構決定將歸結爲您想要如何處理路由,部署,Lambda函數(您是否想爲不同方法使用多種語言?)等。 –

2

嘗試Claudia.js這可能是唯一的工具,你需要的。試試BST Proxy。它有一個本地調試的漂亮代理。

2

我想告訴你的無服務器的關鍵點。

  • AWS API網關作爲代理使用,它可以直接訪問第三方客戶端。

  • AWS拉姆達函數的工作就像在一個私人子網中的EC2。

由於AWS拉姆達不能直接訪問的第三方客戶端, 所以你需要一個AWS API網關作爲代理AWS lambda表達式。