Java による Lambda 関数の構築
Java コードを AWS Lambda で実行できます。Lambda は、コードを実行してイベントを処理する Java 用のランタイムを提供します。コードは、管理している AWS Identity and Access Management (IAM) ロールからの AWS 認証情報を含む Amazon Linux 環境で実行されます。
Lambda は、以下の Java ランタイムをサポートしています。
| 名前 | 識別子 | オペレーティングシステム | 廃止日 | 関数の作成をブロックする | 関数の更新をブロックする | 
|---|---|---|---|---|---|
| Java 21 | 
 | Amazon Linux 2023 | 2029 年 6 月 30 日 | 2029 年 7 月 31 日 | 2029 年 8 月 31 日 | 
| Java 17 | 
 | Amazon Linux 2 | 2026 年 6 月 30 日 | 2026 年 7 月 31 日 | 2026 年 8 月 31 日 | 
| Java 11 | 
 | Amazon Linux 2 | 2026 年 6 月 30 日 | 2026 年 7 月 31 日 | 2026 年 8 月 31 日 | 
| Java 8 | 
 | Amazon Linux 2 | 2026 年 6 月 30 日 | 2026 年 7 月 31 日 | 2026 年 8 月 31 日 | 
AWS は Java 関数用に以下のライブラリを提供しています。これらのライブラリは Maven Central Repository
- 
      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 (関数の作成)] を選択します。 
コンソールは、Hello という名前のハンドラクラスを持つ Lambda 関数を作成します。Java はコンパイルされた言語であるため、Lambda コンソールでソースコードを表示または編集することはできませんが、設定の変更、呼び出し、トリガーの設定を行うことができます。
注記
ローカル環境でアプリケーション開発を開始するには、このガイドの GitHub リポジトリで利用可能なサンプルアプリケーションの 1 つをデプロイします。
Hello クラスには、イベントオブジェクトおよびコンテキストオブジェクトを取得する handleRequest という名前の関数が含まれています。これは、関数が呼び出されるときに Lambda が呼び出すハンドラー関数です。Java 関数のランタイムは Lambda から呼び出しイベントを取得し、ハンドラに渡します。関数設定で、ハンドラ値は example.Hello::handleRequest です。
関数のコードを更新するには、デプロイパッケージを作成します。このパッケージは、関数コードを含む .zip ファイルアーカイブです。関数の開発が進むにつれて、ソース管理への関数コードの保存、ライブラリの追加、デプロイの自動化を行うことがあります。まず、デプロイパッケージを作成し、コマンドラインでコードを更新します。
関数のランタイムによって、呼び出しイベントに加えて、コンテキストオブジェクトがハンドラに渡されます。コンテキストオブジェクトには、呼び出し、関数、および実行環境に関する追加情報が含まれます。詳細情報は、環境変数から入手できます。
Lambda 関数には CloudWatch Logs ロググループが付属しています。関数のランタイムは、各呼び出しに関する詳細を CloudWatch Logs に送信します。これは呼び出し時に、任意の関数が出力するログを中継します。関数がエラーを返す場合、Lambda はエラー形式を整え、それを呼び出し元に返します。