ttu*_*lka 8 java amazon-web-services aws-lambda aws-sdk-java-2.0
考虑一个用 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);
}
}
Run Code Online (Sandbox Code Playgroud)
处理程序接口被定义为RequestHandler<InputType, OutputType>,但是当我的 Lambda 对事件做出反应并且只是产生一些副作用时,输出类型是不必要的,我必须写这样的东西:
public class Hello implements RequestHandler<SNSEvent, Void>{
public Void handleRequest(SNSEvent snsEvent, Context context) {
...
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
这很烦人。
是否有替代RequestHandler的void处理程序?:
public class Hello implements EventHandler<SNSEvent>{
public void handleEvent(SNSEvent snsEvent, Context context) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
Fer*_*yer 10
您不需要为 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
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您应该将其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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3572 次 |
| 最近记录: |