lib/aws_lambda_ric/lambda_context.rb (24 lines of code) (raw):
# frozen_string_literal: true
class LambdaContext
attr_reader :aws_request_id, :invoked_function_arn, :log_group_name,
:log_stream_name, :function_name, :memory_limit_in_mb, :function_version,
:identity, :tenant_id, :client_context, :deadline_ms
def initialize(request)
@clock_diff = Process.clock_gettime(Process::CLOCK_REALTIME, :millisecond) - Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond)
@deadline_ms = request['Lambda-Runtime-Deadline-Ms'].to_i
@aws_request_id = request['Lambda-Runtime-Aws-Request-Id']
@invoked_function_arn = request['Lambda-Runtime-Invoked-Function-Arn']
@log_group_name = ENV['AWS_LAMBDA_LOG_GROUP_NAME']
@log_stream_name = ENV['AWS_LAMBDA_LOG_STREAM_NAME']
@function_name = ENV['AWS_LAMBDA_FUNCTION_NAME']
@memory_limit_in_mb = ENV['AWS_LAMBDA_FUNCTION_MEMORY_SIZE']
@function_version = ENV['AWS_LAMBDA_FUNCTION_VERSION']
@identity = JSON.parse(request['Lambda-Runtime-Cognito-Identity']) unless request['Lambda-Runtime-Cognito-Identity'].to_s.empty?
@tenant_id = request['Lambda-Runtime-Aws-Tenant-Id'] unless request['Lambda-Runtime-Aws-Tenant-Id'].to_s.empty?
@client_context = JSON.parse(request['Lambda-Runtime-Client-Context']) unless request['Lambda-Runtime-Client-Context'].to_s.empty?
end
def get_remaining_time_in_millis
now = Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond) + @clock_diff
remaining = @deadline_ms - now
remaining.positive? ? remaining : 0
end
end