java - 用于无效输出的 AWS Lambda RequestHandler
问题描述
考虑一个用 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) {
...
}
}
解决方案
您不需要为您的 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);
}
}
推荐阅读
- vba - 访问表单 - 遍历一系列标签并更改标题
- android - @JsonIgnoreProperties 与 moshi 的等价物是什么?
- pandas - 如何防止 pandas 将原始数据库日期格式转换为 pandas 日期格式
- python - 替代循环遍历熊猫数据框行以应用条件?
- ruby-on-rails - 如何在 Rails 模型中映射数据?
- json - 如何转换可以表示多种类的 JSON 字符串?
- javascript - 将 Autoform 包与 Meteor Blaze 一起使用,但表单不会提交。没有错误
- macos - 在 MAC 上使用 SPSS Statistics 的困难
- sql-server - 如何在 SSIS 目录中查看包定义?
- jupyter-notebook - 我想编写代码来检查电子邮件地址的用户输入是否包含 1 次出现的“@”和“。”。请帮我调试