class Awssume::Configuration

A class for managing the properties needed for assuming a role

Public Class Methods

attrs() click to toggle source
# File lib/awssume/configuration.rb, line 27
def self.attrs
  self.defaults.merge(self.options)
end
default_session_name() click to toggle source
# File lib/awssume/configuration.rb, line 4
def self.default_session_name
  "AwssumedSession#{Time.new.to_i}"
end
defaults() click to toggle source

Defaults must have a value: a value passed in or a hardcoded default The utility will exit with an error if a value is missing for a default

# File lib/awssume/configuration.rb, line 10
def self.defaults
  {
    region:            ENV['AWS_REGION'] || ENV['AWS_DEFAULT_REGION'],
    role_arn:          ENV['AWS_ROLE_ARN'],
    role_session_name: ENV['AWS_ROLE_SESSION_NAME'] || default_session_name,
  }
end
new(opts = {}) click to toggle source
# File lib/awssume/configuration.rb, line 33
def initialize(opts = {})
  attrs.each do |k, _|
    attr_val = validate_attrs(attrs.merge(opts), k)
    instance_variable_set("@#{k}", attr_val)
  end
end
options() click to toggle source

Options are not required to have a value The utility will function without issue if an optional value is missing

# File lib/awssume/configuration.rb, line 20
def self.options
  {
    external_id:       ENV['AWS_ROLE_EXTERNAL_ID'],
    duration_seconds:  ENV['AWS_ROLE_DURATION_SECONDS'].to_i
  }
end

Private Instance Methods

attrs() click to toggle source
# File lib/awssume/configuration.rb, line 66
def attrs
  self.class.attrs
end
is_optional(attr_key) click to toggle source
# File lib/awssume/configuration.rb, line 42
def is_optional(attr_key)
  self.class.options.keys.include?(attr_key)
end
missing_attr_error_msg(key) click to toggle source
# File lib/awssume/configuration.rb, line 54
def missing_attr_error_msg(key)
  [
    "Missing '#{key}'",
    'Args should be passed in or set in the env:',
    "AWS_#{key.upcase}=value awssume"
  ].join("\n")
end
throwout_nils(attrs) click to toggle source
# File lib/awssume/configuration.rb, line 62
def throwout_nils(attrs)
  attrs.reject { |_, v| v.nil? }
end
validate_attrs(attrs, attr_key) click to toggle source
# File lib/awssume/configuration.rb, line 46
def validate_attrs(attrs, attr_key)
  throwout_nils(attrs).fetch(attr_key) do
    unless is_optional(attr_key)
      raise ArgumentError, missing_attr_error_msg(attr_key)
    end
  end
end