Class: Miasma::Contrib::Aws::Api::Sts

Inherits:
Types::Api
  • Object
show all
Includes:
Miasma::Contrib::AwsApiCore::ApiCommon, Miasma::Contrib::AwsApiCore::RequestUtils
Defined in:
lib/miasma-aws/api/sts.rb

Constant Summary collapse

API_SERVICE =

Service name of the API

'sts'
API_VERSION =

Supported version of the AutoScaling API

'2011-06-15'

Instance Method Summary collapse

Methods included from Miasma::Contrib::AwsApiCore::RequestUtils

#all_result_pages

Methods included from Miasma::Contrib::AwsApiCore::ApiCommon

#after_setup, #api_for, #connect, #connection, #custom_setup, #endpoint, included, #load_aws_file, #load_instance_credentials!, #make_request, #perform_request_retry, #retryable_allowed?, #sts_assume_role!, #sts_update_required?, #update_request, #uri_escape

Instance Method Details

#assume_role(role_arn, args = {}) ⇒ Hash

Assume new role

Parameters:

  • role_arn (String)

    IAM Role ARN

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :external_id (String)
  • :session_name (String)

Returns:

  • (Hash)


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/miasma-aws/api/sts.rb', line 24

def assume_role(role_arn, args={})
  req_params = Smash.new.tap do |params|
    params['Action'] = 'AssumeRole'
    params['RoleArn'] = role_arn
    params['RoleSessionName'] = args[:session_name] || SecureRandom.uuid.tr('-', '')
    params['ExternalId'] = args[:external_id] if args[:external_id]
  end
  result = request(
    :path => '/',
    :params => req_params
  ).get(:body, 'AssumeRoleResponse', 'AssumeRoleResult')
  Smash.new(
    :aws_sts_token => result.get('Credentials', 'SessionToken'),
    :aws_secret_access_key => result.get('Credentials', 'SecretAccessKey'),
    :aws_access_key_id => result.get('Credentials', 'AccessKeyId'),
    :aws_sts_token_expires => Time.parse(result.get('Credentials', 'Expiration')),
    :aws_sts_assumed_role_arn => result.get('AssumedRoleUser', 'Arn'),
    :aws_sts_assumed_role_id => result.get('AssumedRoleUser', 'AssumedRoleId')
  )
end