class AWS::Core::CredentialProviders::SessionProvider

requires session credentials.
This session provider is currently only used for DynamoDB which
set of credentials.
Calling {#refresh} causes the session provider to request a new
It then returns the short term credential set from STS.
and ‘:secret_access_key`) and requests a session from STS.
The session provider consumes long term credentials (`:access_key_id`
# Session Credential Provider

def cached_session

Returns:
  • (nil, STS::Session) - Returns nil if a session has not
def cached_session
  local_session = nil
  @session_mutex.synchronize do
    local_session = @session
  end
  local_session
end

def for long_term_credentials

Parameters:
  • long_term_credentials (Hash) -- A hash of credentials with
def for long_term_credentials
  @create_mutex.synchronize do
    @session_providers ||= {}
    @session_providers[long_term_credentials[:access_key_id]] =
      self.new(long_term_credentials)
  end
end

def get_credentials

(see Provider#get_credentials)
def get_credentials
  session = cached_session
  if session.nil?
    refresh_session
    session = cached_session
  end
  session.credentials
end

def initialize long_term_credentials

Parameters:
  • long_term_credentials (Hash) -- A hash of credentials with
def initialize long_term_credentials
  @static = StaticProvider.new(long_term_credentials)
  if @static.session_token
    raise ArgumentError, 'invalid option :session_token'
  end
  @session_mutex = Mutex.new
end

def refresh

(see Provider#refresh)
def refresh
  refresh_session
  orig_refresh
end

def refresh_session

Returns:
  • (nil) -
def refresh_session
  sts = AWS::STS.new(@static.credentials.merge(:use_ssl => true))
  @session_mutex.synchronize do
    @session = sts.new_session
  end
  nil
end