class StackMaster::Identity

Constants

MissingIamPermissionsError

Public Instance Methods

account() click to toggle source
# File lib/stack_master/identity.rb, line 12
def account
  @account ||= sts.get_caller_identity.account
end
account_aliases() click to toggle source
# File lib/stack_master/identity.rb, line 16
def account_aliases
  @aliases ||= iam.list_account_aliases.account_aliases
rescue Aws::IAM::Errors::AccessDenied
  raise MissingIamPermissionsError, 'Failed to retrieve account aliases. Missing required IAM permission: iam:ListAccountAliases'
end
running_in_account?(accounts) click to toggle source
# File lib/stack_master/identity.rb, line 5
def running_in_account?(accounts)
  accounts.nil? ||
    accounts.empty? ||
    contains_account_id?(accounts) ||
    contains_account_alias?(accounts)
end

Private Instance Methods

contains_account_alias?(aliases) click to toggle source
# File lib/stack_master/identity.rb, line 40
def contains_account_alias?(aliases)
  account_aliases.any? { |account_alias| aliases.include?(account_alias) }
end
contains_account_id?(ids) click to toggle source
# File lib/stack_master/identity.rb, line 36
def contains_account_id?(ids)
  ids.include?(account)
end
iam() click to toggle source
# File lib/stack_master/identity.rb, line 32
def iam
  @iam ||= Aws::IAM::Client.new(region: region)
end
region() click to toggle source
# File lib/stack_master/identity.rb, line 24
def region
  @region ||= ENV['AWS_REGION'] || Aws.config[:region] || Aws.shared_config.region || 'us-east-1'
end
sts() click to toggle source
# File lib/stack_master/identity.rb, line 28
def sts
  @sts ||= Aws::STS::Client.new(region: region)
end