Sha256: da1dcc1f78ec9059c62da9ea11f82485efc0963ac2fc3f2e4af507d363943360

Contents?: true

Size: 1.57 KB

Versions: 60

Compression:

Stored size: 1.57 KB

Contents

module Aws
  # @api private
  class CredentialProviderChain

    def initialize(config)
      @config = config
    end

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

    private

    def providers
      [
        [:static_credentials, {}],
        [:env_credentials, {}],
        [:shared_credentials, {}],
        [:instance_profile_credentials, {
          retries: 0,
          http_open_timeout: 1,
          http_read_timeout: 1,
        }],
      ]
    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)
      key =    %w(AWS_ACCESS_KEY_ID     AMAZON_ACCESS_KEY_ID     AWS_ACCESS_KEY)
      secret = %w(AWS_SECRET_ACCESS_KEY AMAZON_SECRET_ACCESS_KEY AWS_SECRET_KEY)
      token =  %w(AWS_SESSION_TOKEN     AMAZON_SESSION_TOKEN)
      Credentials.new(envar(key), envar(secret), envar(token))
    end

    def envar(keys)
      keys.each do |key|
        if ENV.key?(key)
          return ENV[key]
        end
      end
      nil
    end

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

    def instance_profile_credentials(options)
      InstanceProfileCredentials.new(options)
    end

  end
end

Version data entries

60 entries across 60 versions & 1 rubygems

Version Path
aws-sdk-core-2.2.24 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.23 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.22 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.20 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.19 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.18 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.17 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.16 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.15 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.14 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.13 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.12 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.11 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.10 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.9 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.8 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.7 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.6 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.5 lib/aws-sdk-core/credential_provider_chain.rb
aws-sdk-core-2.2.4 lib/aws-sdk-core/credential_provider_chain.rb