我为kibana启用了带有cognito身份验证的ElasticSearch。这是工作的良好预期。
在我的python脚本中,我通过在http\u auth()中提供用户名/密码连接到elasticsearch,同时创建连接对象。但是当我尝试检查索引是否存在时,是否得到了身份验证错误?有人能帮忙吗。这是你模拟的代码样本。
from __future__ import print_function
import json
import time
import urllib
import re
import sys
import requests
import base64
import time
from elasticsearch import Elasticsearch
from datetime import datetime
esEndpoint = ""
uname
pwd
indexName = 'index_1'
mappings_rds = {
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"properties" : {
"tableName": {
"type": "keyword"
},
"tableRows": {
"type": "integer"
},
"updatedTime": {
"type": "date",
"format":"date_optional_time||yyyy-MM-dd'T'HH:mm:ss"
},
"created_timestamp":{
"type": "date",
"format":"date_optional_time||yyyy-MM-dd'T'HH:mm:ss"
}
}
}
}
esClient = Elasticsearch([esEndPoint],http_auth=(uname,pwd))
try:
res = esClient.indices.exists(indexName)
print(res)
if res is False:
r = esClient.indices.create(indexName, body=mapping_rds, ignore=400)
return 1
except Exception as E:
print("Unable to Create Index {0}".format(indexName))
1条答案
按热度按时间kyks70gy1#
谢谢大家的评论。我和aws支持团队打过电话。问题是我使用的用户名和密码。我使用的是使用awscognito创建的用户凭证。aws支持团队确认,上述凭证仅用于kibana访问,不能用于从databricks/python脚本连接到elasticsearch。
更多信息请访问:https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-request-signing.html
一旦我生成了访问/密钥,并从python脚本中使用它,我就可以连接到elasticsearch来创建索引。
共享示例代码以供将来参考:
谢谢