我在SpringBoot中开发了一项服务,并将在AWS中进行部署。在LambdaHandler中,指定了Spring Applucation类名称以在AWS环境中运行SpringBoot应用程序。
但是,当我尝试通过以JSON格式提供i / p作为Test Event进行测试并尝试在调用Lambda函数时将记录插入数据库中时,AWS Lambda控制台出现了错误消息
{
"errorMessage": "Error loading class com.example.lambda.LambdaHandler",
"errorType": "java.lang.ExceptionInInitializerError"
}
这是我的LambdaHandler类
public class LambdaHandler implements RequestHandler<AwsProxyRequest, AwsProxyResponse> {
private static SpringBootLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler;
static {
try {
handler = SpringBootLambdaContainerHandler.getAwsProxyHandler(SpringBootApplication.class);
} catch (ContainerInitializationException e) {
// if we fail here. We re-throw the exception to force another cold start
e.printStackTrace();
throw new RuntimeException("Could not initialize Spring Boot Application", e);
}
}
@Override
public AwsProxyResponse handleRequest(AwsProxyRequest awsProxyRequest, Context context) {
return handler.proxy(awsProxyRequest, context);
}
}
这是我的主要应用课
public class SpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication.class, args);
}
}
答案 0 :(得分:0)
在静态上下文中引发的异常会导致此错误。
将您的代码更改为以下代码,以便您可以首先看到为什么引发异常,然后解决该错误:
. . .
static {
try {
handler = SpringBootLambdaContainerHandler.getAwsProxyHandler(SpringBootApplication.class);
} catch (Exception e) {
// if we fail here. We re-throw the exception to force another cold start
e.printStackTrace();
throw new RuntimeException("Could not initialize Spring Boot Application", e);
}
}
. . .
静态加载时始终要小心。