Java による Lambda 関数のビルド - AWS Lambda

Java による Lambda 関数のビルド

Java コード は AWS Lambda で実行できます。Lambda は、コードを実行してイベントを処理する Java のランタイムを提供します。コードは AWS 認証情報を含む Amazon Linux 環境で実行してください。管理している AWS Identity and Access Management (IAM) ロールの認証情報を使用します。

Lambda は以下の Java ランタイムをサポートします。

Java ランタイム
名前 識別子 JDK オペレーティングシステム

Java 11

java11

amazon-corretto-11

Amazon Linux 2

Java 8

java8

java-1.8.0-openjdk

Amazon Linux

Lambda 関数は実行ロールを使用して、Amazon CloudWatch Logs にログを書き込み、他のサービスやリソースにアクセスするためのアクセス権限を取得します。関数開発用の実行ロールをお持ちでない場合は、作成してください。

実行ロールを作成するには

  1. IAM コンソールの [Roles] ページを開きます。

  2. [ロールの作成] を選択します。

  3. 次のプロパティでロールを作成します。

    • [信頼されたエンティティ] – [Lambda]。

    • [アクセス許可] – [AWSLambdaBasicExecutionRole]。

    • ロール名lambda-role

    AWSLambdaBasicExecutionRole ポリシーには、ログを CloudWatch Logs に書き込むために関数が必要とするアクセス許可があります。

後でロールにアクセス許可を追加するか、1 つの関数に固有の別のロールに差し替えることができます。

Java 関数を作成するには

  1. Lambda コンソールを開きます。

  2. [Create function] を選択します。

  3. 以下の設定を行います。

    • Name (名前)my-function

    • ランタイムJava 11

    • ロール既存のロールを選択

    • 既存のロールlambda-role

  4. [Create function] を選択します。

  5. テストイベントを設定するには、[テスト] を選択します。

  6. [イベント名] で、「test」と入力します。

  7. [作成] を選択します。

  8. 関数を実行するには、[テスト] を選択します。

コンソールは、Hello という名前のハンドラクラスを持つ Lambda 関数を作成します。Java はコンパイルされた言語であるため、Lambda コンソールでソースコードを表示または編集することはできませんが、設定の変更、呼び出し、トリガーの設定を行うことができます。

注記

ローカル環境でアプリケーション開発を開始するには、このガイドの GitHub リポジトリで利用可能なサンプルアプリケーションの 1 つをデプロイします。

Hello クラスには、イベントオブジェクトおよびコンテキストオブジェクトを取得する handleRequest という名前の関数が含まれています。この関数は、呼び出されると Lambda によって呼び出されるハンドラ関数です。Java 関数のランタイムは、Lambda から呼び出しイベントを取得し、ハンドラに渡します。関数設定で、ハンドラ値は example.Hello::handleRequest です。

関数のコードを更新するには、デプロイパッケージを作成します。このパッケージは、関数コードを含む ZIP アーカイブです。関数の開発が進むにつれて、ソース管理への関数コードの保存、ライブラリの追加、デプロイの自動化を行うことがあります。まず、デプロイパッケージを作成し、コマンドラインでコードを更新します。

関数のランタイムによって、呼び出しイベントに加えて、コンテキストオブジェクトがハンドラに渡されます。コンテキストオブジェクトには、呼び出し、関数、および実行環境に関する追加情報が含まれます。詳細情報は環境変数から入手できます。

Lambda 関数は、CloudWatch Logs ロググループが付属しています。関数のランタイムによって、CloudWatch Logs への各呼び出しに関する詳細が送信されます。呼び出し時に、関数で出力されるログが中継されます。関数よりエラーが返る場合、Lambda はエラー形式を整え、それを呼び出し元に返します。