💭
AWS Lambda + ruby 3.4 runtime における LambdaContext クラス
単にプロパティを保持しているクラス。
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