我可以安全地将 Amazon 的 Elasticsearch 与 Rails searchkick gem 一起使用吗?
Can I use Amazon's Elasticsearch with Rails searchkick gem securely?
我想知道是否以及如何安全地将 searchkick 与 Amazon 的 Elasticsearch 一起使用。
下面是访问选项的图像。 IP 地址不理想,因为服务器 IP 可能会更改。
如果我限制对一个或多个 AWS 账户或 IAM 用户的访问,那么我不确定如何从 rails 应用程序进行身份验证。
您可以从 Ruby 向 Amazon Elasticsearch 发出签名的安全请求。我在 Heroku 上使用一个应用程序执行了以下操作。
确保您有 elasticsearch gem >= v1.0.15,因为对此的支持仅在 2015 年 12 月 4 日在那里实施。
你还需要这个gem:
gem 'faraday_middleware-aws-signers-v4'
示例来自 elasticsearch-ruby/elasticsearch-transport
文档:
You can use any standard Faraday middleware and plugins in the configuration block, for example sign the requests for the AWS Elasticsearch service:
使用以下代码:
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'
end
这也适用于 searchkick gem 和 Rails。使用上面的示例在初始化程序中设置 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'
end
我想知道是否以及如何安全地将 searchkick 与 Amazon 的 Elasticsearch 一起使用。
下面是访问选项的图像。 IP 地址不理想,因为服务器 IP 可能会更改。
如果我限制对一个或多个 AWS 账户或 IAM 用户的访问,那么我不确定如何从 rails 应用程序进行身份验证。
您可以从 Ruby 向 Amazon Elasticsearch 发出签名的安全请求。我在 Heroku 上使用一个应用程序执行了以下操作。
确保您有 elasticsearch gem >= v1.0.15,因为对此的支持仅在 2015 年 12 月 4 日在那里实施。
你还需要这个gem:
gem 'faraday_middleware-aws-signers-v4'
示例来自 elasticsearch-ruby/elasticsearch-transport 文档:
You can use any standard Faraday middleware and plugins in the configuration block, for example sign the requests for the AWS Elasticsearch service:
使用以下代码:
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'
end
这也适用于 searchkick gem 和 Rails。使用上面的示例在初始化程序中设置 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'
end