(ドキュメントにあるコード例から想像した部分も多々あるので動く保証はありません)
Lambda+Javaでは次のような3つの関数の形式をサポートしている。
プリミティブ
public String handleRequest(int myCount, Context context) {
return String.valueOf(myCount);
}
Stream
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) {
...
}
POJO
public Response handleRequest(Request request, Context context) {
...
}
Request
と Response
は自分で定義すると、Jacksonによっていい感じにJSONからマッピングされる。
IOException
を投げても良い
public String handleRequest(int myCount, Context context) throws IOException {
return String.valueOf(myCount);
}
など。
RequestHandler
を実装してもよい
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.Context;
public class Hello implements RequestHandler<Request, Response> {
public Response handleRequest(Request request, Context context) {
String greetingString = String.format("Hello %s %s.", request.firstName, request.lastName);
return new Response(greetingString);
}
}
など。
あるいはLambdaコアJavaライブラリで利用可能なハンドラインターフェース(RequestHandler::handleRequestもしくはRequestStreamHandler::handleRequest)の1つを実装することも可能です。
http://aws.typepad.com/aws_japan/2015/06/aws-lambda-update-run-java-code-in-response-to-events.html
Event
呼び出しの場合(非同期呼び出しの場合)はvoidを返す
Lambda 関数を非同期的に呼び出す(Event 呼び出しタイプを使用)計画の場合、outputType は void である必要があります。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-programming-model-handler-types.html