Sha256: d7980108a5984f65d049457c28d963e61885f2ee0a5e85eefe5effd865577ce7

Contents?: true

Size: 1.5 KB

Versions: 26

Compression:

Stored size: 1.5 KB

Contents

module Aws
  # @api private
  class CredentialProviderChain

    def initialize(config)
      @config = config
    end

    def resolve
      providers.each do |method_name, options|
        credentials = send(method_name, options.merge(config: @config))
        return credentials if credentials && credentials.set?
      end
      nil
    end

    private

    def providers
      [
        [:static_credentials, {}],
        [:env_credentials, { prefix: 'AWS' }],
        [:env_credentials, { prefix: 'AMAZON' }],
        [:env_credentials, { key:'AWS_ACCESS_KEY', secret:'AWS_SECRET_KEY' }],
        [:shared_credentials, {}],
        [:instance_profile_credentials, {}],
      ]
    end

    def static_credentials(options)
      config = options[:config]
      Credentials.new(
        config.access_key_id,
        config.secret_access_key,
        config.session_token)
    end

    def env_credentials(options)
      env_keys = []
      if prefix = options[:prefix]
        env_keys << "#{prefix}_ACCESS_KEY_ID"
        env_keys << "#{prefix}_SECRET_ACCESS_KEY"
        env_keys << "#{prefix}_SESSION_TOKEN"
      else
        env_keys << options[:key]
        env_keys << options[:secret]
      end
      Credentials.new(*ENV.values_at(*env_keys))
    end

    def shared_credentials(options = {})
      SharedCredentials.new(profile_name: options[:config].profile)
    rescue Errors::NoSuchProfileError
      nil
    end

    def instance_profile_credentials(*args)
      InstanceProfileCredentials.new
    end

  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
aws-sdk-core-2.0.24 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.23 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.22 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.21 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.20 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.19 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.18 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.17 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.16 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.15 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.14 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.13 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.12 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.11 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.10 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.9 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.8 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.7 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.6 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.0.5 lib/aws-sdk-core/credential_provider_chain.rb