2017-06-09 135 views
1

我有一個基本的服務在Java中,例如:從Java服務AWS的Lambda和AWS網關API

public interface FolderService { 
    void deleteFolder(String path); 
    void createFolder(String path, String folderName); 
    void moveFolder(String oldPath, String newPath); 
} 

它有多種實現。如何將此服務映射到AWS Lambda和API Gateway?

我期待的API有格式

POST {SOME_URL}/folderService/createFolder

GET {SOME_URL}/folderService/createFolder?路徑=/home/user的& folderName = test

+0

我所做的是在API網關中爲每個方法手動創建方法和資源,併爲每個方法分配一個新的Lambda函數(它重用相同的jar但具有不同的處理程序)。我正在尋找更自動化的方法。 –

回答

2

首先,設計您的API將每個HTTP方法映射到Java方法。

  • DELETE /{path}
  • POST /{path}/{folderName}
  • PUT /{oldPath}?to={newPath}PUT /{newPath}?from={oldPath}

其次,創建API網關映射。每個HTTP方法都有自己的映射。用方法的名稱定義一個常量值。防爆。

"action" : "deleteFolder" 

創建三個lambda函數。函數處理函數中的每個函數都會讀取「action」屬性並調用正確的方法。

創建一個單一的lambda函數讀取的動作,並調用相應的Java方法。

你已經有一個AWS LAMBDA經驗?映射部分可能會很棘手。隨意詢問更多細節。

+0

如果我爲多個java方法創建單個lambda函數,那麼我無法處理輸入json(它在每個方法調用上都不相同)。我怎樣纔能有一個lambda的動態輸入/輸出json模式?謝謝 –

+0

映射是免費的。因此,例如,您可以定義一個responseBody屬性,該屬性接收獨立於所執行的唯一方法的數據。 實施例:{$ inputRoot.responseBody}或{「數據」:$ inputRoot.myResponse} 在這種情況下,處理程序必須包括在被稱爲$變量響應對象「responseBody」或「myResponse」在映射中。 –