【问题标题】:How to Connect To AWS ElasticSearch Instance from Elastic Beanstalk?如何从 Elastic Beanstalk 连接到 AWS ElasticSearch 实例?
【发布时间】:2016-12-21 20:56:34
【问题描述】:

我想授予从我的 Elastic Beanstalk (Ruby on Rails) 应用程序访问我的 AWS ElasticSearch 实例的权限。具体来说,我正在尝试通过logstash-elasticsearch 插件来传输logstash 数据。我的期望是这将是一个标准用例(基于this blog post),但这似乎是不可能的。

我尝试的第一件事是在 ES 实例上为 EB 角色设置访问策略:

{
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXX:role/aws-elasticbeanstalk-ec2-role"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-1:XXXXX:domain/YYYY/*"
    }

这不起作用,我相信是因为用于在 EC2 实例和 ES 之间进行通信的端口。我考虑过的其他选择:

  • 为 EC2 实例授予硬编码 IP 访问权限。 (难以维护
  • 为 EC2 实例授予对弹性 IC 地址的访问权限(如何?
  • 授予对 ES 实例的完全公开访问权限(非常不安全
  • 将某种 IAM/用户凭证从 Logstash 发送到 ES。

如果我能弄清楚如何设置,最后一个选项会起作用。


编辑:答案语法:根据下面 birryree 的回答,我做了以下工作:

  • 将新的command 添加到我的2_logstash.config 文件(来自上面的博客文章)以安装Amazon logstash 插件:/opt/logstash/bin/logstash-plugin install logstash-output-amazon_es
  • 调整我的logstash 配置文件以使用amazon_es 插件。这或多或少是elasticsearch 的替代品,尽管我最终明确指定了aws_access_key_idaws_secret_access_key

【问题讨论】:

    标签: amazon-web-services amazon-ec2 logstash amazon-elastic-beanstalk


    【解决方案1】:

    您拥有的基本策略应该起作用,授予 IAM 角色权限的完整策略如下所示:

    {
      "Version": "2012-10-17",
      "Statement": [{
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::ACCOUNT:role/ROLE"
          },      
          "Action": "es:*", 
          "Resource": "arn:aws:es:us-west-1:ACCOUNT:domain/DOMAIN/*" 
        }   
      ] 
    }
    

    但是,当您使用基于 IAM 角色/用户的策略时,您必须发送使用 Version 4 Signatures 签名的 Elasticsearch 请求。当您使用官方 AWS SDK 时,他们会在您访问 AWS ES 资源时透明地进行请求签名。

    但是,由于您使用的是 Logstash,标准的 logstash-elasticsearch 插件不支持此功能,因此如果您想最大限度地减少允许访问 ES 集群的人员的风险,那么您可能希望使用 AWS Logstash ES 输出插件。

    Amazon AWS Labs 有一个名为 logstash-output-amazon_es 的插件,它的行为本质上与 logstash_elasticsearch 完全相同,只是它为每个请求执行签名。

    这个插件确实有一些限制,比如还不支持 Logstash 5.x(它只支持 Logstash v2.x)。将重要部分合并到官方 logstash 插件源中有一个老问题,但目前尚不清楚何时会真正发生。

    【讨论】:

    • 这太棒了。谢谢你。我在原始问题中为未来的读者添加了一些更详细的说明。
    猜你喜欢
    • 2015-11-07
    • 2016-02-15
    • 2016-12-21
    • 1970-01-01
    • 2016-12-13
    • 2015-04-13
    • 2015-12-21
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多