class Aws::Session::Credentials::SessionBuilder

Builds AWS session

Public Class Methods

new(options) click to toggle source

@param [Hash] options

# File lib/aws/session/credentials/session_builder.rb, line 7
def initialize(options)
  @mfa_device = options[:mfa_device]
  @session_duration_seconds = options[:session_duration_seconds]
  @role_duration_seconds = options[:role_duration_seconds]
  @role_arn = options[:role_arn]
  @role_session_name = options[:role_session_name]
  @source_profile = options[:source_profile]
  @sts_client = options[:sts_client]
end

Public Instance Methods

role_profile() click to toggle source

@return [Profile]

# File lib/aws/session/credentials/session_builder.rb, line 18
def role_profile
  resp = sts_client.assume_role(
    role_arn: @role_arn,
    role_session_name: @role_session_name,
    duration_seconds: @role_duration_seconds,
    serial_number: @mfa_device.device_arn,
    token_code: @mfa_device.code
  )
  return Profile.new(
    aws_access_key_id: resp.credentials['access_key_id'],
    aws_secret_access_key: resp.credentials['secret_access_key'],
    aws_session_token: resp.credentials['session_token'],
    aws_region: @source_profile.aws_region,
    expiry: resp.credentials['expiration'].to_i
  ) if resp
end
session_profile() click to toggle source

@return [Profile]

# File lib/aws/session/credentials/session_builder.rb, line 36
def session_profile
  resp = sts_client.get_session_token(
    duration_seconds: @session_duration_seconds,
    serial_number: @mfa_device.device_arn,
    token_code: @mfa_device.code
  )
  return Profile.new(
    aws_access_key_id: resp.credentials['access_key_id'],
    aws_secret_access_key: resp.credentials['secret_access_key'],
    aws_session_token: resp.credentials['session_token'],
    aws_region: @source_profile.aws_region,
    expiry: resp.credentials['expiration'].to_i
  ) if resp
end
sts_client() click to toggle source

@api private

# File lib/aws/session/credentials/session_builder.rb, line 52
def sts_client
  @client ||= Aws::STS::Client.new(
    region: @source_profile.aws_region,
    credentials: @source_profile.aws_credentials
  )
end