class Elasticsearch::Transport::Transport::HTTP::AWS

Transport implementation, which V4 Signs requests using the [Faraday](rubygems.org/gems/faraday) library for abstracting the HTTP client.

@see Transport::Base

Constants

CredentialConfig
DEFAULT_PORT
DEFAULT_PROTOCOL

Public Instance Methods

__build_connections() click to toggle source

Builds and returns a collection of connections.

@return [Connections::Collection]

# File lib/elasticsearch/transport/transport/http/aws.rb, line 55
def __build_connections
  region = options[:region]
  access_key_id = options[:aws_access_key_id] || nil
  secret_access_key = options[:aws_secret_access_key] || nil
  session_token = options[:session_token] || nil
  profile = options[:profile] || 'default'

  credential_config = CredentialConfig.new(access_key_id, secret_access_key, session_token, profile)
  credentials = Aws::CredentialProviderChain.new(credential_config).resolve

  Connections::Collection.new \
    connections: hosts.map { |host|
      host[:protocol]   = host[:scheme] || DEFAULT_PROTOCOL
      host[:port]     ||= DEFAULT_PORT
      url               = __full_url(host)
      aes_connection = ::Faraday.new(url, (options[:transport_options] || {})) do |faraday|
        faraday.request :aws_v4_signer,
          credentials: credentials,
          service_name: 'es',
          region: region

        faraday.adapter :net_http
      end

      Connections::Connection.new \
        host: host,
        connection: aes_connection
    },
    selector_class: options[:selector_class],
    selector: options[:selector]
end
host_unreachable_exceptions() click to toggle source

Returns an array of implementation specific connection errors.

@return [Array]

# File lib/elasticsearch/transport/transport/http/aws.rb, line 91
def host_unreachable_exceptions
  [::Faraday::Error::ConnectionFailed, ::Faraday::Error::TimeoutError]
end
perform_request(method, path, params={}, body=nil) click to toggle source

Performs the request by invoking {Transport::Base#perform_request} with a block.

@return [Response] @see Transport::Base#perform_request

Calls superclass method
# File lib/elasticsearch/transport/transport/http/aws.rb, line 39
def perform_request(method, path, params={}, body=nil)
  super do |connection, url|
    response = connection.connection.run_request \
     method.downcase.to_sym,
      url,
      ( body ? __convert_to_json(body) : nil ),
      {}

    Response.new response.status, response.body, response.headers
  end
end