【发布时间】: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_id和aws_secret_access_key。
【问题讨论】:
标签: amazon-web-services amazon-ec2 logstash amazon-elastic-beanstalk