💭

AWS Lambda + ruby 3.4 runtime における LambdaContext クラス

に公開

https://github.com/aws/aws-lambda-ruby-runtime-interface-client/blob/3.1.2/lib/aws_lambda_ric/lambda_context.rb

単にプロパティを保持しているクラス。


LambdaContext は ruby runtime においては、ハンドラの context: キーワード引数として渡されるオブジェクトのクラス。

def handler(event:, context:)
  puts context.inspect
  { result: "success" }
end
#<LambdaContext:0x00007f0ccef9de90 @clock_diff=1762866629467, @deadline_ms=1762866639948, @aws_request_id="3af4f0e3-440b-4016-a838-2f73824ee699", @invoked_function_arn="arn:aws:lambda:ap-northeast-1:xxx:function:lambda-ruby-test", @log_group_name="/aws/lambda/lambda-ruby-test", @log_stream_name="2025/11/11/[$LATEST]d8146bc056de4728948c5bd91c90b5ab", @function_name="lambda-ruby-test", @memory_limit_in_mb="512", @function_version="$LATEST">

event が Lambda Function が Invoke された時の payload で、context はメタデータ。

aws_request_id

リクエスト毎にユニークなID。便利。

log_group_name / log_stream_name

ログの在処を呼び出し元に通知したりできて便利。

get_remaining_time_in_millis

これはメソッドで、Lambda がタイムアウトするまでの残り秒数(ms)を取得できる。「残り時間少ないから、時間のかかる処理は落として後始末をするぜ」みたいな時に便利。

def handler(event:, context:)
  puts context.get_remaining_time_in_millis
  sleep 1
  puts context.get_remaining_time_in_millis
end
START RequestId: eb366470-3191-4de2-bc26-04d564349638 Version: $LATEST
2992
1992
END RequestId: eb366470-3191-4de2-bc26-04d564349638
REPORT RequestId: eb366470-3191-4de2-bc26-04d564349638	Duration: 1009.49 ms	Billed Duration: 1228 ms	Memory Size: 512 MB	Max Memory Used: 38 MB	Init Duration: 218.23 ms

function_name / function_version / invoked_function_arn

例えばエラートラッカーに送信するメタ情報を構築するときにこれを使うと、複数の Lambda Function で処理を統一的に記述できて便利かも。

Discussion