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