Eu estou tentando criar minha primeira função lambda em Java.
Eu quero começar com um pequeno exemplo, lendo um evento de entrada do S3.
É o meu código:
package com.amazonaws.lambda.alfreddo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
public class LambdaFunctionHandler implements RequestHandler<S3Event, String> {
@Override
public String handleRequest(S3Event input, Context context) {
context.getLogger().log("Input: " + input);
// TODO: implement your handler
return "Hello from Lambda!";
}
}
Mas quando eu tento executá-lo no AWS Console, recebo o próximo erro:
{
"errorMessage": "Error loading method handleRequest on class com.amazonaws.lambda.alfreddo.LambdaFunctionHandler",
"errorType": "java.lang.NoClassDefFoundError"
}
Error loading method handleRequest on class com.amazonaws.lambda.alfreddo.LambdaFunctionHandler: java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError: com/amazonaws/services/lambda/runtime/events/S3Event
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetPublicMethods(Class.java:2902)
at java.lang.Class.getMethods(Class.java:1615)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.lambda.runtime.events.S3Event
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more
Eu estou usando o AWS Toolkit for Eclipse.
qualquer ajuda?
Obrigado!
Respostas:
1 para resposta № 1Este: com/amazonaws/services/lambda/runtime/events/S3Event
Não está no seu ClassPath
.
Se você está construindo um jar você tem que ter certeza de adicionar suas dependências, ou, se você está rodando a partir do CLI, certifique-se de adicionar explicitamente o local de dependência via -cp /dir/to/location