class AWS::Core::SessionSigner
@private
def self.for config
def self.for config @create_mutex.synchronize do @session_signers ||= {} @session_signers[config.signer.access_key_id] ||= self.new(config) end end
def access_key_id
def access_key_id session.credentials[:access_key_id] end
def get_session
def get_session local_session = nil @session_mutex.synchronize do local_session = @session end local_session end
def initialize config
def initialize config @config = config @session_mutex = Mutex.new end
def refresh_session
def refresh_session sts = AWS::STS.new(:config => @config, :use_ssl => true) @session_mutex.synchronize do @session = sts.new_session end end
def secret_access_key
def secret_access_key session.credentials[:secret_access_key] end
def session
def session session = get_session if session.nil? refresh_session session = get_session end session end
def session_token
def session_token session.credentials[:session_token] end
def short_term_signer
def short_term_signer DefaultSigner.new(access_key_id, secret_access_key, session_token) end
def sign *args
def sign *args short_term_signer.sign(*args) end