AWS Lambda
開発者ガイド

Ruby の AWS Lambda 関数ハンドラ

Lambda 関数のハンドラは、関数が呼び出されると Lambda によって呼び出されるメソッドです。次の例では、function.rb は、handler という名前のハンドラメソッドを定義します。ハンドラ関数は、2 つのオブジェクトを入力として識別し、JSON ドキュメントを返します。

例 function.rb

require 'json' def handler(event:, context:) { event: JSON.generate(event), context: JSON.generate(context.inspect) } end

関数設定の handler 設定は、ハンドラの場所を Lambda に伝えます。前述の例では、この設定の適切な値は function.handler です。ドットで区切られた 2 つの名前 (ファイルの名前とハンドラメソッドの名前) が含まれています。

また、クラス内のハンドラメソッドを定義することもできます。以下の例では、モジュール (LambdaFunctions) の クラス (Handler) の ハンドラメソッド (process) を定義します。

例 source.rb

module LambdaFunctions class Handler def self.process(event:,context:) "Hello!" end end end

この場合、ハンドラ設定は source.LambdaFunctions::Handler.process です。

ハンドラは、呼び出しイベントとコンテキストの 2 つのオブジェクトを受け入れます。このイベントは、呼び出し元が提供するペイロードを含む Ruby オブジェクトです。ペイロードが JSON ドキュメントの場合、イベントオブジェクトは Ruby ハッシュです。それ以外の場合は、文字列です。コンテキストオブジェクトには、呼び出し、関数、および実行関数に関する情報を示すメソッドおよびプロパティがあります。

関数ハンドラは、Lambda 関数が呼び出されるたびに実行されます。ハンドラの外側の静的コードは、関数のインスタンスごとに 1 回実行されます。ハンドラで SDK クライアントやデータベース接続などのリソースが使用される場合、ハンドラメソッドは、ハンドラメソッドの外で作成して複数の呼び出しに再利用することができます。

関数の各インスタンスで複数の呼び出しイベントを処理することはできますが、処理されるのは一度に 1 つのイベントのみです。任意の時点でイベントを処理するインスタンス数は、関数の同時実行数です。Lambda 実行コンテキストの詳細については、「AWS Lambda 実行コンテキスト」を参照してください。