1

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

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

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

4

1 回答 1

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 用户的访问”来保护”,您将需要签署您的请求,这意味着elastic_doc_manager.py需要以某种方式对其进行修改。最简单的选择是编写一个专门的文档管理器,通过扩展elastic_doc_manager.pyelastic_aws_doc_manager.py使用亚马逊提供的 Python 样板代码来签署 ES 文档管理器发出的每个请求,这很简单,但仍然需要大量工作。

但是,由于mongo_connector es_doc_manager.py使用了官方的 Elasticsearch Python 客户端,并且有人提出了一个很好的想法来调整它并使其能够用于签署对 AWS Elasticsearch 的请求,因此编写自定义elastic_aws_doc_manager.py文档管理器变得更加简单。

我坚信这甚至应该内置到主程序中elastic_doc_manager.py,并在使用 AWS Elasticsearch 服务时提供配置选项。

于 2015-11-01T05:53:33.803 回答