2015-10-16 19 views
5

Tôi đã thiết lập một cụm ElasticSearch mới trên AWS chỉ cho phép truy cập vào một người dùng IAM cụ thể. Tuy nhiên, tôi đang cố gắng kết nối với Ruby và xem xét sử dụng SDK AWS nhưng không có phương pháp thực sự thực hiện các hoạt động HTTP với cụm ES của bạn, chỉ truy cập vào các API cấu hình.Tìm kiếm chống lại AWS ElasticSearch được bảo đảm

Như thường lệ, thao tác này yêu cầu tất cả nội dung yêu cầu AWS mà họ yêu cầu để truy cập API, nhưng tôi không thể tìm thấy bất kỳ thứ gì cho biết cách thực hiện công cụ này. Tôi đang sử dụng Ruby.

Về cơ bản, những gì tôi đang sau có thể thực hiện các yêu cầu GET và PUT cho cụm này bằng cách sử dụng tín dụng người dùng IAM. Giới hạn IP không phải là một lựa chọn cho tôi.

+0

Tôi có trả lời câu hỏi của bạn không? – Somazx

Trả lời

2

Bạn có thể thực hiện các yêu cầu đã ký, an toàn với Amazon Elasticsearch từ Ruby. Tôi đã làm như sau với một ứng dụng trên Heroku.

Đảm bảo bạn có đá quý elasticsearch> = v1.0.15 như hỗ trợ cho việc này chỉ được thực hiện ở đó 04 tháng 12, 2015.

Bạn cũng cần đá quý này:

gem 'faraday_middleware-aws-signers-v4' 

Ví dụ từ elasticsearch-ruby/elasticsearch-transport tài liệu:

Bạn có thể sử dụng bất kỳ phần mềm trung gian và plugin Faraday chuẩn nào trong cấu hình b khóa, ví dụ đăng ký theo yêu cầu cho các dịch vụ AWS Elasticsearch:

Với đoạn mã sau:

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 

này cũng làm việc với các viên ngọc searchkick với Rails. Đặt Searchkick.client bằng ví dụ trên, trong bộ khởi tạo:

# 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

Đảm bảo bạn có elasticsearch-ruby> = v1.0.15 – Somazx

Các vấn đề liên quan