我想授予從我的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
。
這太神奇了。謝謝。我在原始問題中爲將來的讀者添加了更詳細的說明。 –