2015-10-16 15 views
5

AWS上で特定のIAMユーザーにのみアクセスできる新しいElasticSearchクラスタをセットアップしました。セキュリティ保護されたAWS ElasticSearchの検索

しかし、私はこれをRubyから接続しようとしていて、AWS SDKを使ってみましたが、実際にはコンフィグレーションAPIにアクセスするだけで、ESクラスタに対してHTTP操作を行う方法はありません。

いつものように、これはAPIアクセスに必要なすべてのAWSリクエスト署名事項を必要としますが、これを行う方法を示すものは何も見つかりません。私はRubyを使用しています。

基本的には、IAMユーザークレジットを使用してこのクラスタにGETおよびPUT要求を行うことができます。 IP制限は私の選択肢ではありません。

+0

私はあなたの質問に答えましたか? – Somazx

答えて

2

RubyからAmazon Elasticsearchへの署名された安全なリクエストを作成できます。私はHerokuのアプリで次のことをしました。 elasticsearch-ruby/elasticsearch-transportから

gem 'faraday_middleware-aws-signers-v4' 

例:

を使用すると、> =、このためのサポートとしてv1.0.15が唯一の12月4日あなたはまた、この宝石を必要とする、2015年

をelasticsearch宝石が実装されていましたしていることを確認します ドキュメント:

標準のファラデーミドルウェアとプラグインは、構成b次のコードで

require 'faraday_middleware/aws_signers_v4' 

client = Elasticsearch::Client.new(url: ENV['AWS_ENDPOINT_URL']) do |f| 
    f.request :aws_signers_v4, 
      credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']), 
      service_name: 'es', 
      region: 'us-east-1' 
    f.adapter Faraday.default_adapter 
end 

また、これはRailsのとsearchkick宝石と連携例えばAWS Elasticsearchサービスに対する要求に署名し、ロックします。上記の例を使用してSearchkick.clientをイニシャライザで設定します。

# config/initializers/elasticsearch.rb 
require 'faraday_middleware/aws_signers_v4' 

Searchkick.client = Elasticsearch::Client.new(url: ENV['AWS_ENDPOINT_URL']) do |f| 
    f.request :aws_signers_v4, 
      credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']), 
      service_name: 'es', 
      region: 'us-east-1' 
    f.adapter Faraday.default_adapter 
end 
+0

elasticsearch-ruby> = v1.0.15であることを確認してください – Somazx

関連する問題