允许 Elastic beanstalk 应用程序访问 elasticsearch 域

Allowing Elastic beanstalk app access to elasticsearch domain

我正在尝试允许 beantalk 应用程序访问我们的 elasticsearch 服务,但我在您的文档中找到的每种方法都无法授予对这些应用程序的访问权限。到目前为止,在启用访问方面对我有用的唯一方法是向整个世界开放集群,并启用特定的 IP(考虑到 Elastic beanstalk 的动态特性,这显然不是一个选项)。 我试过的 - 创建从 "Allow or deny access to one or more accounts..." 到我们 AWS 账户根目录的策略。 创建从 "Allow or deny access to one or more accounts..." 到分配给 beantalk EC2 服务器的 IAM 角色的策略 将策略附加到 beantalk IAM 角色,允许他在 elasticsearch 域上拥有 ES:* 特权。

为什么所有这些方法都失败了?文档似乎表明这些方法中的每一种都应该有效,那么我在这里遗漏了什么?

解决方案原来是作为授权 AWS 用户发送签名请求。以下链接中的更多信息 -

https://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/es-data-plane.html

http://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html

http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html

您可以使用 elasticsearch-net-aws,它会自动对发送到 Amazon Elastic Search 的请求进行签名。适用于 Elasticsearch.Net 和 NEST

https://github.com/bcuff/elasticsearch-net-aws