Java による Lambda 関数の構築
Java コードを AWS Lambda で実行できます。Lambda は、コードを実行してイベントを処理する Java 用のランタイムを提供します。コードは、管理している AWS Identity and Access Management (IAM) ロールからの AWS 認証情報を含む Amazon Linux 環境で実行されます。
Lambda は、以下の Java ランタイムをサポートしています。
名前 | 識別子 | オペレーティングシステム | 廃止日 | 関数の作成をブロックする | 関数の更新をブロックする |
---|---|---|---|---|---|
Java 21 |
|
Amazon Linux 2023 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Java 17 |
|
Amazon Linux 2 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Java 11 |
|
Amazon Linux 2 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Java 8 |
|
Amazon Linux 2 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Lambda には、Java 関数用に以下のライブラリが用意されています。
-
com.amazonaws:aws-lambda-java-core
(必須) - ランタイムがハンドラに渡すハンドラメソッドインターフェイスとコンテキストオブジェクトを定義します。独自の入力タイプを定義する場合、これが唯一必要なライブラリです。 -
com.amazonaws:aws-lambda-java-events
- Lambda 関数を呼び出すサービスからのイベントの入力タイプ。 -
com.amazonaws:aws-lambda-java-log4j2
- 現在の呼び出しのリクエスト ID を関数ログに追加するために使用できる Apache Log4j 2 のアペンダーライブラリ。 -
AWS SDK for Java 2.0
- Java プログラミング言語用の公式の AWS SDK。
重要
プライベートフィールド、メソッド、クラスなどの JDK API のプライベートコンポーネントは使用しないでください。非公開 API コンポーネントは更新時に変更または削除され、アプリケーションが動作しなくなる可能性があります。
Java 関数を作成するには
-
Lambda コンソール
を開きます。 -
[Create function] (関数の作成) をクリックします。
-
以下の設定を行います。
-
[Function name]: 関数名を入力します。
-
[Runtime]: [Java 21] を選択します。
-
-
[Create function] (関数の作成) をクリックします。
-
テストイベントを設定するには、[テスト] を選択します。
-
[イベント名] で、「
test
」と入力します。 -
[変更を保存] をクリックします。
-
[Test] (テスト) を選択して関数を呼び出します。
コンソールは、Hello
という名前のハンドラクラスを持つ Lambda 関数を作成します。Java はコンパイルされた言語であるため、Lambda コンソールでソースコードを表示または編集することはできませんが、設定の変更、呼び出し、トリガーの設定を行うことができます。
注記
ローカル環境でアプリケーション開発を開始するには、このガイドの GitHub リポジトリで利用可能なサンプルアプリケーションの 1 つをデプロイします。
Hello
クラスには、イベントオブジェクトおよびコンテキストオブジェクトを取得する handleRequest
という名前の関数が含まれています。これは、関数が呼び出されるときに Lambda が呼び出すハンドラー関数です。Java 関数のランタイムは Lambda から呼び出しイベントを取得し、ハンドラに渡します。関数設定で、ハンドラ値は example.Hello::handleRequest
です。
関数のコードを更新するには、デプロイパッケージを作成します。このパッケージは、関数コードを含む .zip ファイルアーカイブです。関数の開発が進むにつれて、ソース管理への関数コードの保存、ライブラリの追加、デプロイの自動化を行うことがあります。まず、デプロイパッケージを作成し、コマンドラインでコードを更新します。
関数のランタイムによって、呼び出しイベントに加えて、コンテキストオブジェクトがハンドラに渡されます。コンテキストオブジェクトには、呼び出し、関数、および実行環境に関する追加情報が含まれます。詳細情報は、環境変数から入手できます。
Lambda 関数には CloudWatch Logs ロググループが付属しています。関数のランタイムは、各呼び出しに関する詳細を CloudWatch Logs に送信します。これは呼び出し時に、任意の関数が出力するログを中継します。関数がエラーを返す場合、Lambda はエラー形式を整え、それを呼び出し元に返します。
トピック
- Java の Lambda 関数ハンドラーの定義
- .zip または JAR ファイルアーカイブで Java Lambda 関数をデプロイする
- コンテナイメージを使用した Java Lambda 関数のデプロイ
- Java Lambda 関数のレイヤーを操作する
- Lambda SnapStart による起動パフォーマンスの向上
- Lambda Java 関数のシリアル化をカスタマイズ
- Lambda 関数の Java ランタイムの起動時の動作をカスタマイズする
- Lambda コンテキストオブジェクトを使用して Java 関数の情報を取得する
- Java Lambda 関数のログ記録とモニタリング
- AWS Lambda での Java コードの作成
- AWS Lambda の Java サンプルアプリケーション