メニュー
AWS Lambda
開発者ガイド

例: ハンドラーの入出力に POJO を使用する (Java)

アプリケーションイベントが、次に示すように名と姓を含むデータを生成するとします。

Copy
{ "firstName": "John", "lastName": "Doe" }

この例では、ハンドラーはこの JSON を受け取り、文字列 "Hello John Doe" を返します。

Copy
public static ResponseClass handleRequest(RequestClass request, Context context){ String greetingString = String.format("Hello %s, %s.", request.firstName, request.lastName); return new ResponseClass(greetingString); }

このハンドラーで Lambda 関数を作成するには、以下に示す Java の例のように、入出力タイプの実装を提供する必要があります。HelloPojo クラスは handler メソッドを定義します。

Copy
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class HelloPojo implements RequestHandler<RequestClass, ResponseClass>{ public ResponseClass handleRequest(RequestClass request, Context context){ String greetingString = String.format("Hello %s, %s.", request.firstName, request.lastName); return new ResponseClass(greetingString); } }

入力タイプを実装するには、以下のコードを別のファイルに追加して、RequestClass.java という名前を付けます。これを、ディレクトリ構造の HelloPojo.java クラスの隣に配置します。

Copy
package example; public class RequestClass { String firstName; String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public RequestClass(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public RequestClass() { } }

出力タイプを実装するには、以下のコードを別のファイルに追加して、ResponseClass.java という名前を付けます。これを、ディレクトリ構造の HelloPojo.java クラスの隣に配置します。

Copy
package example; public class ResponseClass { String greetings; public String getGreetings() { return greetings; } public void setGreetings(String greetings) { this.greetings = greetings; } public ResponseClass(String greetings) { this.greetings = greetings; } public ResponseClass() { } }

注記

get および set メソッドは、POJO が AWS Lambda の組み込み JSON シリアライザーを操作するために必要です。通常、引数を受け取らないコンストラクタは必要ありません。ただし、この例では他のコンストラクタを提供したため、明示的に 0 個の引数コンストラクタを提供する必要があります。

このコードは Lambda 関数としてアップロードし、次のようにテストできます。

  • 前述のコードファイルを使用して、デプロイパッケージを作成します。

  • デプロイパッケージを AWS Lambda にアップロードし、Lambda 関数を作成します。これを行うには、コンソールまたは AWS CLI を使用します。

  • コンソールまたは CLI を使用して手動で Lambda 関数を呼び出します。手動で Lambda 関数を呼び出すときは、提供されたサンプル JSON データを使用できます。(例:

    Copy
    { "firstName":"John", "lastName":"Doe" }

詳細については、次を参照してください。 ステップ 2.3: (オプション) Java で Lambda 関数を作成する. 以下の違いに注意してください。

  • デプロイパッケージを作成するときに、aws-lambda-java-core ライブラリの依存関係を忘れないでください。

  • Lambda 関数の作成時に、example.HelloPojo::handleRequest (package.class::method) をハンドラー値として指定します。