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/logstash/outputs/amazon_es/aws_transport.rb, line 63
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'
  instance_cred_retries = options[:instance_profile_credentials_retries] || 0
  instance_cred_timeout = options[:instance_profile_credentials_timeout] || 1
  
  credential_config = CredentialConfig.new(access_key_id, secret_access_key, session_token, profile,
                                           instance_cred_retries, instance_cred_timeout, region)
  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::Connection.new(url,  (options[:transport_options] || {})) do |faraday|
        faraday.request :aws_v4_signer,
                              credentials: credentials,
                              service_name: 'es',
                              region: region
        faraday.adapter :manticore
      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/logstash/outputs/amazon_es/aws_transport.rb, line 102
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/logstash/outputs/amazon_es/aws_transport.rb, line 47
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