Class: Fog::AWS::IAM::Real

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/aws/iam.rb,
lib/fog/aws/requests/iam/get_user.rb,
lib/fog/aws/requests/iam/list_users.rb,
lib/fog/aws/requests/iam/create_user.rb,
lib/fog/aws/requests/iam/delete_user.rb,
lib/fog/aws/requests/iam/list_groups.rb,
lib/fog/aws/requests/iam/create_group.rb,
lib/fog/aws/requests/iam/delete_group.rb,
lib/fog/aws/requests/iam/put_user_policy.rb,
lib/fog/aws/requests/iam/list_access_keys.rb,
lib/fog/aws/requests/iam/put_group_policy.rb,
lib/fog/aws/requests/iam/add_user_to_group.rb,
lib/fog/aws/requests/iam/create_access_key.rb,
lib/fog/aws/requests/iam/delete_access_key.rb,
lib/fog/aws/requests/iam/update_access_key.rb,
lib/fog/aws/requests/iam/delete_user_policy.rb,
lib/fog/aws/requests/iam/list_user_policies.rb,
lib/fog/aws/requests/iam/delete_group_policy.rb,
lib/fog/aws/requests/iam/list_group_policies.rb,
lib/fog/aws/requests/iam/remove_user_from_group.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Real

Initialize connection to IAM

Notes

options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection

Examples

iam = IAM.new(
 :aws_access_key_id => your_aws_access_key_id,
 :aws_secret_access_key => your_aws_secret_access_key
)

Parameters

  • options<~Hash> - config arguments for connection. Defaults to {}.

Returns

  • IAM object with connection to AWS.



55
56
57
58
59
60
61
62
63
64
65
# File 'lib/fog/aws/iam.rb', line 55

def initialize(options={})
  require 'json'
  @aws_access_key_id      = options[:aws_access_key_id]
  @aws_secret_access_key  = options[:aws_secret_access_key]
  @hmac       = Fog::HMAC.new('sha256', @aws_secret_access_key)
  @host       = options[:host]      || 'iam.amazonaws.com'
  @path       = options[:path]      || '/'
  @port       = options[:port]      || 443
  @scheme     = options[:scheme]    || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", options[:persistent])
end

Instance Method Details

#add_user_to_group(group_name, user_name) ⇒ Object

Add a user to a group

Parameters

  • group_name<~String>: name of the group

  • user_name<~String>: name of user to add

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_AddUserToGroup.html



22
23
24
25
26
27
28
29
# File 'lib/fog/aws/requests/iam/add_user_to_group.rb', line 22

def add_user_to_group(group_name, user_name)
  request(
    'Action'    => 'AddUserToGroup',
    'GroupName' => group_name,
    'UserName'  => user_name,
    :parser     => Fog::Parsers::AWS::IAM::Basic.new
  )
end

#create_access_key(options = {}) ⇒ Object

Create a access keys for user (by default detects user from access credentials)

Parameters

  • options<~Hash>:

    • ‘UserName’<~String> - name of the user to create (do not include path)

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘AccessKey’<~Hash>:

        • ‘AccessKeyId’<~String> -

        • ‘Username’<~String> -

        • ‘SecretAccessKey’<~String> -

        • ‘Status’<~String> -

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_CreateAccessKey.html



27
28
29
30
31
32
# File 'lib/fog/aws/requests/iam/create_access_key.rb', line 27

def create_access_key(options = {})
  request({
    'Action'    => 'CreateAccessKey',
    :parser     => Fog::Parsers::AWS::IAM::CreateAccessKey.new
  }.merge!(options))
end

#create_group(group_name, path = '/') ⇒ Object

Create a new group

Parameters

  • group_name<~String>: name of the group to create (do not include path)

  • path<~String>: optional path to group, defaults to ‘/’

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘Group’<~Hash>:

        • Arn<~String> -

        • GroupId<~String> -

        • GroupName<~String> -

        • Path<~String> -

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_CreateGroup.html



27
28
29
30
31
32
33
34
# File 'lib/fog/aws/requests/iam/create_group.rb', line 27

def create_group(group_name, path = '/')
  request(
    'Action'    => 'CreateGroup',
    'GroupName' => group_name,
    'Path'      => path,
    :parser     => Fog::Parsers::AWS::IAM::CreateGroup.new
  )
end

#create_user(user_name, path = '/') ⇒ Object

Create a new user

Parameters

  • user_name<~String>: name of the user to create (do not include path)

  • path<~String>: optional path to group, defaults to ‘/’

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘User’<~Hash>:

        • ‘Arn’<~String> -

        • ‘Path’<~String> -

        • ‘UserId’<~String> -

        • ‘UserName’<~String> -

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_CreateUser.html



27
28
29
30
31
32
33
34
# File 'lib/fog/aws/requests/iam/create_user.rb', line 27

def create_user(user_name, path = '/')
  request(
    'Action'    => 'CreateUser',
    'UserName'  => user_name,
    'Path'      => path,
    :parser     => Fog::Parsers::AWS::IAM::CreateUser.new
  )
end

#delete_access_key(access_key_id, options = {}) ⇒ Object

Delete an access key

Parameters

  • access_key_id<~String> - Access key id to delete

  • options<~Hash>:

    • ‘UserName’<~String> - name of the user to create (do not include path)

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_DeleteAccessKey.html



23
24
25
26
27
28
29
# File 'lib/fog/aws/requests/iam/delete_access_key.rb', line 23

def delete_access_key(access_key_id, options = {})
  request({
    'AccessKeyId' => access_key_id,
    'Action'      => 'DeleteAccessKey',
    :parser       => Fog::Parsers::AWS::IAM::Basic.new
  }.merge!(options))
end

#delete_group(group_name) ⇒ Object

Delete a group

Parameters

  • group_name<~String>: name of the group to delete

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_DeleteGroup.html



21
22
23
24
25
26
27
# File 'lib/fog/aws/requests/iam/delete_group.rb', line 21

def delete_group(group_name)
  request(
    'Action'    => 'DeleteGroup',
    'GroupName' => group_name,
    :parser     => Fog::Parsers::AWS::IAM::Basic.new
  )
end

#delete_group_policy(group_name, policy_name) ⇒ Object

Remove a policy from a group

Parameters

  • group_name<~String>: name of the group

  • policy_name<~String>: name of policy document

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_DeleteGroupPolicy.html



22
23
24
25
26
27
28
29
# File 'lib/fog/aws/requests/iam/delete_group_policy.rb', line 22

def delete_group_policy(group_name, policy_name)
  request(
    'Action'          => 'DeleteGroupPolicy',
    'GroupName'       => group_name,
    'PolicyName'      => policy_name,
    :parser           => Fog::Parsers::AWS::IAM::Basic.new
  )
end

#delete_user(user_name) ⇒ Object

Delete a user

Parameters

  • user_name<~String>: name of the user to delete

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_DeleteUser.html



21
22
23
24
25
26
27
# File 'lib/fog/aws/requests/iam/delete_user.rb', line 21

def delete_user(user_name)
  request(
    'Action'    => 'DeleteUser',
    'UserName'  => user_name,
    :parser     => Fog::Parsers::AWS::IAM::Basic.new
  )
end

#delete_user_policy(user_name, policy_name) ⇒ Object

Remove a policy from a user

Parameters

  • user_name<~String>: name of the user

  • policy_name<~String>: name of policy document

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_DeleteUserPolicy.html



22
23
24
25
26
27
28
29
# File 'lib/fog/aws/requests/iam/delete_user_policy.rb', line 22

def delete_user_policy(user_name, policy_name)
  request(
    'Action'          => 'DeleteUserPolicy',
    'PolicyName'      => policy_name,
    'UserName'        => user_name,
    :parser           => Fog::Parsers::AWS::IAM::Basic.new
  )
end

#get_user(options = {}) ⇒ Object

Get User

Parameters

  • options<~Hash>:

    • ‘UserName’<~String>: Name of the User. Defaults to current user

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘User’<~Hash> - User

        • Arn<~String> -

        • UserId<~String> -

        • UserName<~String> -

        • Path<~String> -

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_Getuser.html



26
27
28
29
30
31
# File 'lib/fog/aws/requests/iam/get_user.rb', line 26

def get_user(options = {})
  request({
    'Action'  => 'GetUser',
    :parser   => Fog::Parsers::AWS::IAM::GetUser.new
  }.merge!(options))
end

#list_access_keys(options = {}) ⇒ Object

List access_keys

Parameters

  • options<~Hash>:

    • ‘Marker’<~String> - used to paginate subsequent requests

    • ‘MaxItems’<~Integer> - limit results to this number per page

    • ‘UserName’<~String> - optional: username to lookup access keys for, defaults to current user

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘AccessKeys’<~Array> - Matching access keys

        • access_key<~Hash>:

          • AccessKeyId<~String> -

          • Status<~String> -

      • ‘IsTruncated<~Boolean> - Whether or not results were truncated

      • ‘Marker’<~String> - appears when IsTruncated is true as the next marker to use

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_ListAccessKeys.html



30
31
32
33
34
35
# File 'lib/fog/aws/requests/iam/list_access_keys.rb', line 30

def list_access_keys(options = {})
  request({
    'Action'  => 'ListAccessKeys',
    :parser   => Fog::Parsers::AWS::IAM::ListAccessKeys.new
  }.merge!(options))
end

#list_group_policies(group_name, options = {}) ⇒ Object

List policies for a group

Parameters

  • group_name<~String> - Name of group to list policies for

  • options<~Hash>: Optional

    • ‘Marker’<~String>: used to paginate subsequent requests

    • ‘MaxItems’<~Integer>: limit results to this number per page

    • ‘PathPrefix’<~String>: prefix for filtering results

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘PolicyNames’<~Array> - Matching policy names

      • ‘IsTruncated<~Boolean> - Whether or not results were truncated

      • ‘Marker’<~String> - appears when IsTruncated is true as the next marker to use

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_ListGroupPolicies.html



28
29
30
31
32
33
34
# File 'lib/fog/aws/requests/iam/list_group_policies.rb', line 28

def list_group_policies(group_name, options = {})
  request({
    'Action'    => 'ListGroupPolicies',
    'GroupName' => group_name,
    :parser     => Fog::Parsers::AWS::IAM::ListPolicies.new
  }.merge!(options))
end

#list_groups(options = {}) ⇒ Object

List groups

Parameters

  • options<~Hash>:

    • ‘Marker’<~String>: used to paginate subsequent requests

    • ‘MaxItems’<~Integer>: limit results to this number per page

    • ‘PathPrefix’<~String>: prefix for filtering results

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘Groups’<~Array> - Matching groups

        • group<~Hash>:

          • Arn<~String> -

          • GroupId<~String> -

          • GroupName<~String> -

          • Path<~String> -

      • ‘IsTruncated<~Boolean> - Whether or not results were truncated

      • ‘Marker’<~String> - appears when IsTruncated is true as the next marker to use

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_ListGroups.html



32
33
34
35
36
37
# File 'lib/fog/aws/requests/iam/list_groups.rb', line 32

def list_groups(options = {})
  request({
    'Action'  => 'ListGroups',
    :parser   => Fog::Parsers::AWS::IAM::ListGroups.new
  }.merge!(options))
end

#list_user_policies(user_name, options = {}) ⇒ Object

List policies for a user

Parameters

  • user_name<~String> - Name of user to list policies for

  • options<~Hash>: Optional

    • ‘Marker’<~String>: used to paginate subsequent requests

    • ‘MaxItems’<~Integer>: limit results to this number per page

    • ‘PathPrefix’<~String>: prefix for filtering results

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘PolicyNames’<~Array> - Matching policy names

      • ‘IsTruncated<~Boolean> - Whether or not results were truncated

      • ‘Marker’<~String> - appears when IsTruncated is true as the next marker to use

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_ListUserPolicies.html



28
29
30
31
32
33
34
# File 'lib/fog/aws/requests/iam/list_user_policies.rb', line 28

def list_user_policies(user_name, options = {})
  request({
    'Action'    => 'ListUserPolicies',
    'UserName'  => user_name,
    :parser     => Fog::Parsers::AWS::IAM::ListPolicies.new
  }.merge!(options))
end

#list_users(options = {}) ⇒ Object

List users

Parameters

  • options<~Hash>:

    • ‘Marker’<~String>: used to paginate subsequent requests

    • ‘MaxItems’<~Integer>: limit results to this number per page

    • ‘PathPrefix’<~String>: prefix for filtering results

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘Users’<~Array> - Matching groups

        • user<~Hash>:

          • Arn<~String> -

          • Path<~String> -

          • UserId<~String> -

          • UserName<~String> -

      • ‘IsTruncated<~Boolean> - Whether or not results were truncated

      • ‘Marker’<~String> - appears when IsTruncated is true as the next marker to use

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_ListUsers.html



32
33
34
35
36
37
# File 'lib/fog/aws/requests/iam/list_users.rb', line 32

def list_users(options = {})
  request({
    'Action'  => 'ListUsers',
    :parser   => Fog::Parsers::AWS::IAM::ListUsers.new
  }.merge!(options))
end

#put_group_policy(group_name, policy_name, policy_document) ⇒ Object

Add or update a policy for a group

Parameters

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_PutGroupPolicy.html



23
24
25
26
27
28
29
30
31
# File 'lib/fog/aws/requests/iam/put_group_policy.rb', line 23

def put_group_policy(group_name, policy_name, policy_document)
  request(
    'Action'          => 'PutGroupPolicy',
    'GroupName'       => group_name,
    'PolicyName'      => policy_name,
    'PolicyDocument'  => policy_document.to_json,
    :parser           => Fog::Parsers::AWS::IAM::Basic.new
  )
end

#put_user_policy(user_name, policy_name, policy_document) ⇒ Object

Add or update a policy for a user

Parameters

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_PutUserPolicy.html



23
24
25
26
27
28
29
30
31
# File 'lib/fog/aws/requests/iam/put_user_policy.rb', line 23

def put_user_policy(user_name, policy_name, policy_document)
  request(
    'Action'          => 'PutUserPolicy',
    'PolicyName'      => policy_name,
    'PolicyDocument'  => policy_document.to_json,
    'UserName'        => user_name,
    :parser           => Fog::Parsers::AWS::IAM::Basic.new
  )
end

#reloadObject



67
68
69
# File 'lib/fog/aws/iam.rb', line 67

def reload
  @connection.reset
end

#remove_user_from_group(group_name, user_name) ⇒ Object

Remove a user from a group

Parameters

  • group_name<~String>: name of the group

  • user_name<~String>: name of user to remove

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html



22
23
24
25
26
27
28
29
# File 'lib/fog/aws/requests/iam/remove_user_from_group.rb', line 22

def remove_user_from_group(group_name, user_name)
  request(
    'Action'    => 'RemoveUserFromGroup',
    'GroupName' => group_name,
    'UserName'  => user_name,
    :parser     => Fog::Parsers::AWS::IAM::Basic.new
  )
end

#update_access_key(access_key_id, status, options = {}) ⇒ Object

Update an access key for a user

Parameters

  • access_key_id<~String> - Access key id to delete

  • status<~String> - status of keys in [‘Active’, ‘Inactive’]

  • options<~Hash>:

    • ‘UserName’<~String> - name of the user to create (do not include path)

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘RequestId’<~String> - Id of the request

See Also

docs.amazonwebservices.com/IAM/latest/APIReference/API_UpdateAccessKey.html



24
25
26
27
28
29
30
31
# File 'lib/fog/aws/requests/iam/update_access_key.rb', line 24

def update_access_key(access_key_id, status, options = {})
  request({
    'AccessKeyId' => access_key_id,
    'Action'      => 'UpdateAccessKey',
    'Status'      => status,
    :parser       => Fog::Parsers::AWS::IAM::Basic.new
  }.merge!(options))
end