LoginSignup
2
4

More than 5 years have passed since last update.

AWS Lambda+Javaの関数の型

Last updated at Posted at 2016-06-27

(ドキュメントにあるコード例から想像した部分も多々あるので動く保証はありません)

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) {

        ...
    }

RequestResponse は自分で定義すると、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

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4