我编写了一个简单的Java程序,它将采用JSON格式的Person对象并返回字符串消息。依赖关系由Maven维护,下面是pom.xml
aws-lambda-java-core
maven-shade-plugin
除了依赖项之外,我还包括maven-shade-plugin
作为插件,并以目标package shade:shade
运行了Maven构建。成功构建之后,我将app-1.0-SNAPSHOT-shaded.jar
文件部署到我创建的lambda函数中,当我测试该函数时,我的响应低于要求,并且无法解决问题。
{
"errorMessage": "Class not found: com.techm.nimbus.Handler",
"errorType": "java.lang.ClassNotFoundException"
}
下面是实现RequestHandler
接口的类
package com.techm.nimbus;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class Handler implements RequestHandler<Person, String>{
public String handleRequest(Person input, Context context) {
return "Got the message";
}
}
并且lambda函数的处理程序的值为
com.techm.nimbus.Handler::handleRequest
答案 0 :(得分:1)
根据我不太广泛的经验,您可以检查一些事情:
检查上传的软件包的大小。当我没有正确构建Maven项目时,就出现了该错误。当我意识到我检查了S3中的文件时,该文件小于1MB,而对于我而言,通常约为70MB。因此它的构建方式不正确。
我个人是使用eclipse:eclipse作为目标,也许您可以尝试一下,看看是否可行。
检查lambda是否指向正确的打包代码版本,以及是否应配置任何VPC。
希望对您有帮助。
答案 1 :(得分:0)
验证应用程序是否正确构建。您也可以使用“ install shade:shade”命令来构建项目。 确保aws控制台中的配置指向Lambda代码的确切类和方法。