我有一个用 Python 编写的 Lambda,它将一些数据写入 AWS 上托管的 Elasticsearch。ES 服务位于 VPC 内,因此我尝试使用 ES 的内部 DNS 连接到它。这是我的代码:
es_client = Elasticsearch(
hosts=[{'host': es_host, 'port': 443}],
http_auth=aws_auth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection
)
但是,我得到了这个例外:
ssl.CertificateError: hostname 'x.y.internal' doesn't match '*.us-west-2.es.amazonaws.com
我不想使用公共主机名,因为它会不断变化。如何使用其内部 DNS 连接到 ES 服务?
====== 更新 =======
我可以通过以下代码使用 HTTP 连接到 ES 域:
es_client = Elasticsearch(
hosts=[{'host': es_host, 'port': 80}]
)
但是如何通过 HTTPS 连接?