AWS Lambda无法找到处理程序中给定的类

时间:2018-06-20 13:04:53

标签: java maven amazon-web-services aws-lambda

我编写了一个简单的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

2 个答案:

答案 0 :(得分:1)

根据我不太广泛的经验,您可以检查一些事情:

  1. 检查上传的软件包的大小。当我没有正确构建Maven项目时,就出现了该错误。当我意识到我检查了S3中的文件时,该文件小于1MB,而对于我而言,通常约为70MB。因此它的构建方式不正确。

  2. 我个人是使用eclipse:eclipse作为目标,也许您可​​以尝试一下,看看是否可行。

  3. 检查lambda是否指向正确的打包代码版本,以及是否应配置任何VPC。

希望对您有帮助。

答案 1 :(得分:0)

验证应用程序是否正确构建。您也可以使用“ install shade:shade”命令来构建项目。 确保aws控制台中的配置指向Lambda代码的确切类和方法。