class LambdaDeployment::Configuration

Attributes

concurrency[R]
file_path[R]
kms_key_arn[R]
project[R]
region[R]
s3_bucket[R]
s3_key[R]
s3_sse[R]
skip_upload[R]

Public Instance Methods

alias_name() click to toggle source

lambda aliases must satisfy (?!^[0-9]+$)(+)

# File lib/lambda_deployment/configuration.rb, line 29
def alias_name
  tag = ENV['TAG'].to_s.gsub(/[^a-zA-Z0-9\-_]/, '')
  return nil if tag.empty?
  tag.prepend 'v' if tag =~ /^[0-9]+$/ # just a number like 123 so lets turn it into v123
  tag
end
environment() click to toggle source
# File lib/lambda_deployment/configuration.rb, line 36
def environment
  @environment ||= Dir.glob('.env*').reduce({}) do |cache, filename|
    cache.merge Dotenv::Environment.new(filename, true)
  end.merge(@config_env)
end
load_config(config_file) click to toggle source
# File lib/lambda_deployment/configuration.rb, line 7
def load_config(config_file)
  config = YAML.load_file(config_file)
  @skip_upload = ENV.fetch('SKIP_UPLOAD', 'false') == 'true'
  @project = config.fetch('project')
  @region = config.fetch('region', ENV.fetch('AWS_REGION', nil))

  @s3_key = s3_key_name(config.fetch('file_name'))
  @s3_bucket = config.fetch('s3_bucket', ENV.fetch('LAMBDA_S3_BUCKET', nil))
  @s3_sse = config.fetch('s3_sse', ENV.fetch('LAMBDA_S3_SSE', nil))

  unless @skip_upload
    @file_path = File.expand_path(config.fetch('file_name'), File.dirname(config_file))
    raise "File not found: #{@file_path}" unless File.exist?(@file_path)
  end

  @config_env = config.fetch('environment', {})
  @kms_key_arn = config.fetch('kms_key_arn', ENV.fetch('LAMBDA_KMS_KEY_ARN', nil))

  @concurrency = config.fetch('concurrency', nil)
end

Private Instance Methods

s3_key_name(file_name) click to toggle source
# File lib/lambda_deployment/configuration.rb, line 44
def s3_key_name(file_name)
  basename = File.basename(file_name, '.*')
  extension = File.extname(file_name)
  "#{basename}-#{ENV.fetch('TAG', 'latest')}#{extension}"
end