class Deputy53::IAM

An IAM Client

Public Instance Methods

api() click to toggle source
# File lib/deputy53/iam.rb, line 10
def api
  @api ||= ::Aws::IAM::Client.new region: region
end
exists?(name) click to toggle source
# File lib/deputy53/iam.rb, line 46
def exists?(name)
  names.include? name
end
groups() click to toggle source
# File lib/deputy53/iam.rb, line 25
def groups
  @groups ||= api.list_groups.groups
end
id(name) click to toggle source
# File lib/deputy53/iam.rb, line 64
def id(name)
  identity(name).id
end
identities() click to toggle source
# File lib/deputy53/iam.rb, line 34
def identities
  @identities ||= [users, groups, roles]
                  .reduce(:+)
                  .map { |i| Identity.new i }
end
identity(name) click to toggle source
# File lib/deputy53/iam.rb, line 56
def identity(name)
  raise IdentityNotFoundError unless exists? name
  raise AmbiguousNameError unless unambiguous? name

  identities.select { |i| i.name == name }.first
end
names() click to toggle source
# File lib/deputy53/iam.rb, line 41
def names
  identities.map(&:name)
end
region() click to toggle source
# File lib/deputy53/iam.rb, line 15
def region
  ENV.fetch('AWS_DEFAULT_REGION') { 'us-west-2' }
end
roles() click to toggle source
# File lib/deputy53/iam.rb, line 29
def roles
  @roles ||= api.list_roles.roles
end
unambiguous?(name) click to toggle source
# File lib/deputy53/iam.rb, line 51
def unambiguous?(name)
  names.count { |n| n == name } == 1
end
users() click to toggle source
# File lib/deputy53/iam.rb, line 20
def users
  @users ||= api.list_users.users
end