【发布时间】:2021-08-05 10:24:51
【问题描述】:
我已经实现了一个带有 spring 云功能的简单 AWS lambda 应用程序。当我创建 labmda 函数并在 AWS 中发送请求时,抛出了以下错误。
{
"errorMessage": "Error loading class com.benz.aws.lambda.api.handler.OrderHandler: org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler",
"errorType": "java.lang.NoClassDefFoundError"
}
功能包
@Component
public class OrderFunction implements ApplicationContextInitializer<GenericApplicationContext>
{
private OrderDao orderDao;
@Autowired
public OrderFunction(OrderDao orderDao)
{
this.orderDao=orderDao;
}
@Bean
public Function<String,Object> getOrderByName()
{
return name-> {
System.out.println("Hello Benz");
return name;
};
}
@Override
public void initialize(GenericApplicationContext context) {
context.registerBean("getOrderByName", FunctionRegistration.class,
() -> new FunctionRegistration<Function<String,Object>>(getOrderByName())
.type(FunctionType.from(String.class).to(Object.class).getType()));
}
}
处理程序包
public class OrderHandler extends SpringBootRequestHandler<String,Object> {
}
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-adapter-aws</artifactId>
<version>3.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot.experimental</groupId>
<artifactId>spring-boot-thin-layout</artifactId>
<version>${wrapper.version}</version>
</dependency>
</dependencies>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
<finalName>
boot-lambda
</finalName>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<configuration>
<createDependencyReducedPom>
false
</createDependencyReducedPom>
<shadedArtifactAttached>
true
</shadedArtifactAttached>
<shadedClassifierName>
aws
</shadedClassifierName>
</configuration>
</plugin>
</plugins>
</build>
在 AWS 中
我尝试了多种方式对其进行调试,但没有成功。如果有任何简单的方法可以在不扩展SpringBootRequestHandler类的情况下完成上述操作
【问题讨论】:
标签: java amazon-web-services spring-boot aws-lambda spring-cloud-function