SpringBootRequestHandler已废弃,如何用Spring构建AWS Lambda并配置?
基于Spring Boot构建AWS Lambda服务的正确实现方案
问题根源
直接将DynamoDbApplication作为Lambda入口类报错,是因为Lambda运行时要求入口类必须包含符合规范的请求处理方法(如handleRequest),而你的Spring Boot启动类并不具备这个方法。SpringBootRequestHandler之所以能工作,是因为它实现了Lambda的请求处理接口,但该类已被废弃,官方推荐使用Spring Cloud Function来整合Spring Boot与AWS Lambda。
正确配置步骤
1. 添加必要依赖
确保项目引入Spring Cloud Function的AWS适配器依赖(以Maven为例):
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-function-adapter-aws</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <scope>provided</scope> <!-- Lambda不需要Web容器,排除冗余 --> </dependency>
2. 设置Lambda入口处理程序
在AWS Lambda控制台的函数代码配置中,将处理程序字段设置为:
org.springframework.cloud.function.adapter.aws.FunctionInvoker
这个类是Spring Cloud Function提供的适配器,负责将Lambda请求转发到你定义的Function Bean。
3. 指定要调用的Function Bean
由于你定义了两个Function Bean(getLink和saveLink),需要通过环境变量指定当前Lambda要调用的Bean名称:
- 进入Lambda控制台的配置 -> 环境变量,添加键为
FUNCTION_NAME的变量,值为getLink或saveLink(根据当前Lambda的功能选择)。 - 注意:若需同时提供两个功能,建议创建两个独立的Lambda函数,分别配置不同的
FUNCTION_NAME值。
4. 打包应用
使用Spring Boot打包插件生成包含所有依赖的可执行JAR包:
mvn clean package spring-boot:repackage
将生成的JAR包上传到Lambda即可。
代码验证
你的DynamoDbApplication代码结构符合Spring Cloud Function的规范,通过@Bean定义的Function会被自动识别,只要上述配置正确,就能正常处理Lambda请求。
内容的提问来源于stack exchange,提问作者hhrzc
相关产品推荐
相关产品推荐

