我想授予从我的Elastic Beanstalk(Ruby on Rails)应用程序访问我的AWS ElasticSearch实例的权限。具体来说,我试图通过logstash-elasticsearch
插件管理logstash数据。我的期望是这将是一个标准的用例(基于this blog post),但它似乎不可能。如何从Elastic Beanstalk连接到AWS ElasticSearch实例?
我试过被设置在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访问权限的权限。 (难以维持)
- 授予访问的弹性IC地址EC2实例(如何?)
- 授予完全公开访问ES实例(非常不安全)
- 发送某种从Logstash到ES的IAM /用户凭证。
如果我能弄清楚如何设置它,最后一个选项将起作用。
编辑:答案语法:基于以下birryree的答案,这是我获得这项工作:
- 添加新
command
我2_logstash.config
文件(从上面的博客文章)以安装亚马逊logstash插件:/opt/logstash/bin/logstash-plugin install logstash-output-amazon_es
- 调整我的
logstash
配置文件以使用amazon_es
插件。这或多或少是对elasticsearch
的直接替代,尽管我最终明确指定了aws_access_key_id
和aws_secret_access_key
。
这太神奇了。谢谢。我在原始问题中为将来的读者添加了更详细的说明。 –