Sha256: a664f5b2b1e7fbc0c1e1def78afc69e10e32cd5cf46a18b70119f84f5fdc314f
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
require 'aws-sdk' require_relative 'contracted_object' require_relative 'identity' require_relative 'exceptions' module Deputy53 # An IAM Client class IAM < ContractedObject Contract None => ::Aws::IAM::Client def api @api ||= ::Aws::IAM::Client.new region: region end Contract None => String def region ENV.fetch('AWS_DEFAULT_REGION') { 'us-west-2' } end Contract None => ArrayOf[::Aws::IAM::Types::User] def users @users ||= api.list_users.users end Contract None => ArrayOf[::Aws::IAM::Types::Group] def groups @groups ||= api.list_groups.groups end Contract None => ArrayOf[::Aws::IAM::Types::Role] def roles @roles ||= api.list_roles.roles end Contract None => ArrayOf[Identity] def identities @identities ||= [users, groups, roles] .reduce(:+) .map { |i| Identity.new i } end Contract None => ArrayOf[String] def names identities.map(&:name) end Contract String => Bool def exists?(name) names.include? name end Contract String => Bool def unambiguous?(name) names.count { |n| n == name } == 1 end Contract String => Identity def identity(name) raise IdentityNotFoundError unless exists? name raise AmbiguousNameError unless unambiguous? name identities.select { |i| i.name == name }.first end Contract String => String def id(name) identity(name).id end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
deputy53-0.13.5 | lib/deputy53/iam.rb |
deputy53-0.13.0 | lib/deputy53/iam.rb |