Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS elastic search error "[Errno 8] nodename nor servname provided, or not known."

I created one AWS elasticsearch instance. I want to access it using a python script. I specified my AWS configuration (access key, secret key, region). I am using below code to access the AWS ES instance:

from elasticsearch import Elasticsearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth

AWS_ACCESS_KEY = '**************'
AWS_SECRET_KEY = '*****************'
region = 'us-east-1'
service = 'es'

awsauth = AWS4Auth(AWS_ACCESS_KEY, AWS_SECRET_KEY, region, service)

host = 'https://kbckjsdkcdn.us-east-1.es.amazonaws.com' # For example, my-test-domain.us-east-1.es.amazonaws.com

es = Elasticsearch(
    hosts = [{'host': host, 'port': 443}],
    http_auth = awsauth,
    use_ssl = True,
    verify_certs = True,
    connection_class = RequestsHttpConnection
)

print es.info()

When I am running the above code, I am getting following error:

elasticsearch.exceptions.ConnectionError:  ConnectionError(HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: //search-opendata-2xd6pwilq5sv4ahomcuaiyxmqe.us-east-1.es.amazonaws.com:443/ (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x10ee72310>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))) caused by: ConnectionError(HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: //search-opendata-2xd6pwilq5sv4ahomcuaiyxmqe.us-east-1.es.amazonaws.com:443/ (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x10ee72310>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',)))

How can I resolve this error?

Thanks

like image 468
neha Avatar asked Jan 16 '18 07:01

neha


1 Answers

Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known seems to indicate that the elasticsearch client is not able to resolve the hostname. It could possibly be because you include the protocol https:// specified in the host.

Change that line to host = 'kbckjsdkcdn.us-east-1.es.amazonaws.com' to see if it works. Also the example comment you have there, seems to indicate that the protocol should not be included in the host variable.

like image 129
Hari Avatar answered Sep 18 '22 15:09

Hari