class Clairlune::Builder
Public Class Methods
new(key:, bucket:, package_json:, function_name:, dest:, loglevel: 'info')
click to toggle source
# File lib/clairlune.rb, line 9 def initialize(key:, bucket:, package_json:, function_name:, dest:, loglevel: 'info') @key = key @bucket = bucket @function_name = function_name @dest = dest @package_json = File.read(package_json) @logger = Logger.new(STDOUT) @logger.level = loglevel end
Public Instance Methods
performe(loglevel: 'info')
click to toggle source
# File lib/clairlune.rb, line 19 def performe(loglevel: 'info') lambda_client = Aws::Lambda::Client.new @logger.info("Invoke build function: #{@function_name}") lambda_response = lambda_client.invoke( function_name: @function_name, payload: @package_json, invocation_type: 'RequestResponse', ) if lambda_response.data.status_code != 200 @logger.fatal('Returned status code is not 200 (Lambda).') return { success: false, description: 'Returned status code is not 200 (Lambda).', } end if JSON.load(lambda_response.data.payload)['status'] != 'success' @logger.fatal('Build is failed.') @logger.fatal(lambda_response.payload.read) return { success: false, description: lambda_response.payload.read, } end @logger.info("Download zipped npm module from: s3://#{@bucket}/#{@key}") s3_client = Aws::S3::Client.new File.open(@dest, 'w') do |file| s3_client.get_object(bucket: @bucket, key: @key) do |chunk| file.write(chunk) end end { success: true, file_path: @dest, description: 'success', } end