Soy nuevo en AWS CDK .
Problema: intento hacer referencia a mi código lambda en el código CDK , pero arroja una excepción java.lang.ClassNotFoundException
cuando intento probarlo en la consola de AWS Lambda .
He añadido un código de referencia. Las clases están presentes en el mismo paquete.
Clase LambdaFunctionHandler
:
Código lambda:
package com.myorg; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class LambdaFunctionHandler implements RequestHandler<String, String> { public String handleRequest(String event, Context context) { context.getLogger().log("Received event: " + event); return "Hello from lambda "+event; } }
Código CDK:
package com.myorg; import software.amazon.awscdk.core.Construct; import software.amazon.awscdk.core.Stack; import software.amazon.awscdk.core.StackProps; import software.amazon.awscdk.services.lambda.Code; import software.amazon.awscdk.services.lambda.Function; import software.amazon.awscdk.services.lambda.Runtime; public class CdkProjectStack extends Stack { public CdkProjectStack(final Construct scope, final String id) { this(scope, id, null); } public CdkProjectStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // The code that defines your stack goes here final Function hello = Function.Builder.create(this, "HelloHandler") .runtime(Runtime.JAVA_8) .code(Code.fromAsset("src/main/java/com/myorg")) .handler("com.myorg.LambdaFunctionHandler::handleRequest") .build(); } }
Registro de errores:
START RequestId: 0fdf618c-1bfb-4905-9283-f6b4e34a6585 Version: $LATEST Class not found: com.myorg.LambdaFunctionHandler: java.lang.ClassNotFoundException java.lang.ClassNotFoundException: com.myorg.LambdaFunctionHandler at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348)
Funcionó después de crear un paquete de implementación.