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

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

POJO を使用しない場合、または Lambda のシリアル化のアプローチがニーズに合わない場合は、バイトストリーム実装を使用できます。この場合、ハンドラー用の入出力タイプとして InputStream および OutputStream を使用できます。例のハンドラー関数を示します。

Copy
public void handler(InputStream inputStream, OutputStream outputStream, Context context) { ... }

この場合、ハンドラー関数はリクエストストリームと応答ストリームの両方にパラメータを使用します。

次に示すのは、input および output パラメータに InputStream および OutputStream 型を使用するハンドラーを実装する Lambda 関数の例です。

注記

入力ペイロードは有効な JSON である必要がありますが、出力ストリームにはこのような制限はありません。あらゆるバイトがサポートされます。

Copy
package example; import java.io.InputStream; import java.io.OutputStream; import com.amazonaws.services.lambda.runtime.RequestStreamHandler; import com.amazonaws.services.lambda.runtime.Context; public class Hello implements RequestStreamHandler{ public static void handler(InputStream inputStream, OutputStream outputStream, Context context) throws IOException { int letter; while((letter = inputStream.read()) != -1) { outputStream.write(Character.toUpperCase(letter)); } } }

コードをテストするために、以下の操作を行うことができます。

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

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

  • サンプルの入力を指定して、手動でコードを呼び出すことができます。以下に例を示します。

    Copy
    test

「使用開始」セクションで説明している手順に従います。詳細については、次を参照してください。 ステップ 2.3: (オプション) Java で Lambda 関数を作成する。以下の違いに注意してください。

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

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