from elasticsearch import Elasticsearch
host = 'http://..........'
es = Elasticsearch(host)
上面的简单代码创建了Elasticsearch
实例。
在我的笔记本电脑环境中,它可以通过某些Elasticsearch
方法(搜索,索引等)正常运行。
但是,当我将代码移至AWS Lambda时,创建实例时它将返回以下错误。
elasticsearch.exceptions.ImproperlyConfigured: Root certificates are missing for certificate validation. Either pass them in using the ca_certs parameter or install certifi to use it automatically.
两者都使用相同的Elasticsearch
软件包6.3版,并且Elasticserach
公开打开。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:ap-northeast-1:xxxxxxxx:domain/sam-test-es/*"
}
]
}
我知道,如果我使用如下所示的不同形式,它在Lambda中也能正常工作,但我想知道是什么与众不同。
from elasticsearch import Elasticsearch
host = 'http://..........'
es = Elasticsearch(hosts=[{'host': host, 'port': 443}])
# the code works in Lambda.