Sha256: b49fa1a886bde74588ca84c6e41537d7e8131ea216f5c1e01d62fcff892346da

Contents?: true

Size: 1.71 KB

Versions: 10

Compression:

Stored size: 1.71 KB

Contents

require 'miasma'

module Miasma
  module Contrib
    module Aws
      module Api
        class Sts < Miasma::Types::Api

          # Service name of the API
          API_SERVICE = 'sts'
          # Supported version of the AutoScaling API
          API_VERSION = '2011-06-15'

          include Contrib::AwsApiCore::ApiCommon
          include Contrib::AwsApiCore::RequestUtils

          # Assume new role
          #
          # @param role_arn [String] IAM Role ARN
          # @param args [Hash]
          # @option args [String] :external_id
          # @option args [String] :session_name
          # @return [Hash]
          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

        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
miasma-aws-0.2.4 lib/miasma-aws/api/sts.rb
miasma-aws-0.2.2 lib/miasma-aws/api/sts.rb
miasma-aws-0.2.0 lib/miasma-aws/api/sts.rb
miasma-aws-0.1.36 lib/miasma-aws/api/sts.rb
miasma-aws-0.1.34 lib/miasma-aws/api/sts.rb
miasma-aws-0.1.32 lib/miasma-aws/api/sts.rb
miasma-aws-0.1.30 lib/miasma-aws/api/sts.rb
miasma-aws-0.1.28 lib/miasma-aws/api/sts.rb
miasma-aws-0.1.26 lib/miasma-aws/api/sts.rb
miasma-aws-0.1.24 lib/miasma-aws/api/sts.rb