连接亚马逊的弹性搜索与mongo-connector

时间:2015-10-28 22:16:40

标签: mongodb amazon-web-services elasticsearch amazon-elasticsearch

我正在尝试将mongo-connector与亚马逊的新hosted Elasticsearch一起使用。

我认为它不是使用普通的Elasticsearch Shield等,而是使用亚马逊相当复杂的身份验证方案。

(相关GH问题:https://github.com/mongodb-labs/mongo-connector/issues/337

1 个答案:

答案 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服务时提供配置选项。