class Speculate::Assumption

Base class for assumptions

Public Class Methods

new(params = {}) click to toggle source
# File lib/speculate/assumption.rb, line 9
def initialize(params = {})
  @options = params
end

Public Instance Methods

creds() click to toggle source
# File lib/speculate/assumption.rb, line 13
def creds
  @creds ||= assumed_role.credentials
end
logout_url() click to toggle source
# File lib/speculate/assumption.rb, line 21
def logout_url
  @logout_url ||= console.logout_url
end
url() click to toggle source
# File lib/speculate/assumption.rb, line 17
def url
  @url ||= console.url
end

Private Instance Methods

assumed_role() click to toggle source
# File lib/speculate/assumption.rb, line 27
def assumed_role
  @assumed_role ||= client.assume_role(
    role_arn: role_arn,
    role_session_name: role_session_name,
    **mfa_args
  )
end
client() click to toggle source
# File lib/speculate/assumption.rb, line 35
def client
  @client ||= Aws::STS::Client.new(local_config)
end
console() click to toggle source
# File lib/speculate/assumption.rb, line 39
def console
  @console ||= Speculate::Console.new(creds: creds)
end
local_account_id() click to toggle source
# File lib/speculate/assumption.rb, line 72
def local_account_id
  @local_account_id ||= local_identity.account
end
local_config() click to toggle source
# File lib/speculate/assumption.rb, line 84
def local_config
  @local_config ||= @options[:creds] || {}
end
local_identity() click to toggle source
# File lib/speculate/assumption.rb, line 80
def local_identity
  @local_identity ||= client.get_caller_identity
end
local_user_name() click to toggle source
# File lib/speculate/assumption.rb, line 76
def local_user_name
  @local_user_name ||= local_identity.arn.split(':').last.tr('/', '_')
end
mfa() click to toggle source
# File lib/speculate/assumption.rb, line 43
def mfa
  @mfa ||= @options[:mfa]
end
mfa_args() click to toggle source
# File lib/speculate/assumption.rb, line 51
def mfa_args
  return {} unless mfa
  { serial_number: mfa_device, token_code: mfa }
end
mfa_device() click to toggle source
# File lib/speculate/assumption.rb, line 47
def mfa_device
  @mfa_device ||= local_identity.arn.sub('user/', 'mfa/')
end
role_arn() click to toggle source
# File lib/speculate/assumption.rb, line 60
def role_arn
  @role_arn ||= "arn:aws:iam::#{target_account_id}:role/#{role_name}"
end
role_name() click to toggle source
# File lib/speculate/assumption.rb, line 56
def role_name
  @role ||= @options[:role_name] || raise('No role_name supplied')
end
role_session_name() click to toggle source
# File lib/speculate/assumption.rb, line 64
def role_session_name
  @role_session_name ||= local_user_name
end
target_account_id() click to toggle source
# File lib/speculate/assumption.rb, line 68
def target_account_id
  @target_account_id ||= @options[:account_id] || local_account_id
end