考虑用Java编写的一个简单的Lambda:
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class Hello implements RequestHandler<Integer, String>{
public String handleRequest(int myCount, Context context) {
return String.valueOf(myCount);
}
}处理程序接口被定义为RequestHandler<InputType, OutputType>,但是当我的Lambda对事件作出反应并且只产生一些副作用时,输出类型就没有必要了,我必须编写如下内容:
public class Hello implements RequestHandler<SNSEvent, Void>{
public Void handleRequest(SNSEvent snsEvent, Context context) {
...
return null;
}
}这很烦人。
对于RequestHandler处理程序,有替代void的方法吗?:
public class Hello implements EventHandler<SNSEvent>{
public void handleEvent(SNSEvent snsEvent, Context context) {
...
}
}发布于 2019-09-01 10:04:50
您不需要为Lambda入口点实现接口。您的处理程序类可以只是一个POJO,它具有满足在文件中解释需求的签名。
例如:
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.SNSEvent;
public class Hello {
public void handleEvent(SNSEvent event, Context context) {
// Process the event
}
}在这种情况下,您应该使用example.Hello::handleEvent作为处理程序配置。
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class Hello {
public String myHandler(int myCount, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("received : " + myCount);
return String.valueOf(myCount);
}
}https://stackoverflow.com/questions/55238826
复制相似问题