gpt4 book ai didi

amazon-web-services - 针对安全的 AWS ElasticSearch 进行搜索

转载 作者:行者123 更新时间:2023-11-29 02:48:33 27 4
gpt4 key购买 nike

我在 AWS 上设置了一个新的 ElasticSearch 集群,它只允许访问特定的 IAM 用户。

但是,我正在尝试从 Ruby 连接到它并查看使用 AWS SDK,但它没有实际对您的 ES 集群进行 HTTP 操作的方法,只能访问配置 API。

像往常一样,这需要他们访问 API 所需的所有 AWS 请求签名内容,但我找不到任何指示如何执行此操作的内容。我正在使用 Ruby。

本质上,我所追求的是能够使用 IAM 用户凭据向该集群发出 GET 和 PUT 请求。 IP 限制不适合我。

最佳答案

您可以从 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'
f.adapter Faraday.default_adapter
end

这也适用于 Rails 的 searchkick gem。使用上面的示例在初始化程序中设置 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

关于amazon-web-services - 针对安全的 AWS ElasticSearch 进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33170686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com