我正在尝试将mongo-connector与亚马逊的新hosted Elasticsearch一起使用。
我认为它不是使用普通的Elasticsearch Shield等,而是使用亚马逊相当复杂的身份验证方案。
(相关GH问题:https://github.com/mongodb-labs/mongo-connector/issues/337)
答案 0 :(得分:5)
我想您已尝试过,但最简单的方法是将您的访问政策修改为"允许您在Amazon Elasticsearch配置中对域" 进行开放式访问。当然,这意味着您的ES群集对全世界开放,因此可能适用于测试目的,但不适用于生产。
您还可以选择"允许来自特定IP" 的访问权限,这将保证"安全"您的群集只能接受来自指定IP地址的请求。对于我个人使用,我发现这种模式最容易使用,因为您获得了安全访问权限(假设您是IP地址中唯一的一个)并且您不需要完成整个AWS签名请求。虽然,如果你在VPC中,这个选项显然不会起作用。
在搜索域上配置上述任何访问策略后,您不需要在mongo-connector端做任何特殊操作,只需使用标准命令行启动mongo-connector即可复制将开箱即用。
mongo-connector -m localhost:27017 -t search-<yourdomain>.us-west-2.es.amazonaws.com:80 -d elastic_doc_manager
现在,如果您的搜索域受到允许/拒绝访问特定AWS账户或IAM用户&#34; 的保护,则需要sign your requests,这意味着{{1}需要以某种方式进行修改才能这样做。最简单的选择是将elastic_doc_manager.py
扩展为elastic_doc_manager.py
,然后使用write a dedicated doc manager对ES文档管理员发出的每个请求进行签名,这是Amazon-provided Python boilerplate code的最简单选择还是做了很多工作。
但是,由于elastic_aws_doc_manager.py
mongo_connector
使用官方Elasticsearch Python客户端,并且有人拥有nice idea to tweak it and make it work for signing requests to AWS Elasticsearch,因此编写自定义es_doc_manager.py
文档管理器变得更加简单。
我坚信甚至应该将其构建到主elastic_aws_doc_manager.py
中,并在使用AWS Elasticsearch服务时提供配置选项。