从Java服务到AWS Lambda和AWS网关API

从Java服务到AWS Lambda和AWS网关API,java,amazon-web-services,aws-lambda,aws-api-gateway,Java,Amazon Web Services,Aws Lambda,Aws Api Gateway,我有一个Java的基本服务,例如: public interface FolderService { void deleteFolder(String path); void createFolder(String path, String folderName); void moveFolder(String oldPath, String newPath); } 它有多个实现。如何在AWS Lambda和API网关上映射此服务 我希望API具有这种格式 POST{some

我有一个Java的基本服务,例如:

public interface FolderService {
   void deleteFolder(String path);
   void createFolder(String path, String folderName);
   void moveFolder(String oldPath, String newPath);
}
它有多个实现。如何在AWS Lambda和API网关上映射此服务

我希望API具有这种格式

POST{some_url}/folderService/createFolder


获取{some_url}/folderService/createFolder?path=/home/user&folderName=test

首先,设计将每个HTTP方法映射到Java方法的API

  • 删除/{path}
  • POST/{path}/{folderName}
  • PUT/{oldPath}to={newPath}
    PUT/{newPath}from={oldPath}
其次,创建API网关映射。每个HTTP方法都有自己的映射。用方法的名称定义一个常量值。前

"action" : "deleteFolder"
创建三个lambda函数。函数处理程序中的每个函数都读取“action”属性并调用正确的方法

创建一个lambda函数,该函数读取操作并调用相应的Java方法


你已经有AWS Lambda的经验了吗?映射部分可能很棘手。请随意询问更多细节。

我所做的是在API网关中为每个方法手动创建方法和资源,并为每个方法分配一个新的Lambda函数(该函数重用相同的jar,但具有不同的处理程序)。我正在寻找一种更自动化的方法,如果我为多个java方法创建一个lambda函数,那么我就无法处理输入json(每个方法调用都不同)。如何为lambda创建动态输入/输出json模式?谢谢,地图是免费的。例如,您可以定义一个ResponseBy属性,该属性独立于所执行的方法来接收数据。例如:{$inputRoot.responseBody}或{“数据”:$inputRoot.myResponse}在这种情况下,处理程序必须在映射中称为$variables的响应对象中包含“responseBody”或“myResponse”。