module WolfCore::LambdaFunctionDataSource

def client

def client
  @@client
end

def init

def init
  client_config = {
    access_key_id: ENV.fetch('AWS_KEY_ID', nil),
    secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY', nil),
    region: ENV.fetch('AWS_REGION', nil),
    endpoint: ENV.fetch('AWS_LAMBDA_FUNCTION_ENDPOINT', nil),
  }
  client_config = client_config.compact
  return if client_config.empty?
  @@client = Aws::Lambda::Client.new(client_config)
end

def invoke(function_name:, payload:, invocation_type: nil)

def invoke(function_name:, payload:, invocation_type: nil)
  parsed_payload = JSON.generate(payload)
  invocation_type ||= 'Event'
  @@client.invoke({
    function_name: function_name,
    invocation_type: invocation_type,
    log_type: 'Tail',
    payload: parsed_payload
  })
end