如何在单个Spring Boot项目中实现多Spring Cloud Functions并部署到AWS Lambda
问题:基于Spring Cloud Function实现多CRUD操作并部署到单个AWS Lambda
背景与现有实现
我当前使用Spring Cloud Function,通过AWS适配器将函数部署到AWS Lambda,此前仅实现了单个函数,运行正常,具体结构如下:
1. Spring Boot启动类
@SpringBootApplication @ComponentScan(basePackages = "com.demo") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
2. 已废弃的Lambda处理器
import org.springframework.cloud.function.adapter.aws.SpringBootRequestHandler; public class DemoHandler extends SpringBootRequestHandler<DemoRequest, DemoResponse> { }
3. 端点定义接口
@SuppressWarnings("hiding") @FunctionalInterface public interface Demoapi<DemoRequest, DemoResponse>{ @PostMapping(value = "/v1/demo") public ResponseEntity<DemoResponse> demo(@RequestBody DemoRequest demoInfo); }
4. 控制器实现
@RestController public class Democontroller implements Demoapi<DemoRequest, DemoResponse>{ static final Logger LOGGER = LogManager.getLogger(Democontroller.class); @Autowired private DemoService demoService; @Override public ResponseEntity<DemoResponse> demo(@RequestBody DemoRequest demoInfo) { DemoResponse demoResponse=new DemoResponse(); try { demoResponse = demoService.demofun(demoInfo); // 省略后续业务逻辑代码 } catch (Exception e) { // 省略异常处理代码 } }
现有部署配置
部署到Lambda时,在AWS控制台指定Handler为com.demo.DemoHandler,并设置环境变量FUNCTION_NAME为小写的控制器类名demoController,Lambda控制台测试及API Gateway调用均正常。
当前需求
我正在开发一个新项目,需要在单个Spring Boot应用中实现完整CRUD操作,并将整个应用部署为单个AWS Lambda,希望沿用类似现有结构完成开发,恳请提供实现方案。
内容的提问来源于stack exchange,提问作者akki_moote
相关产品推荐
相关产品推荐

