针对安全的 AWS ElasticSearch 进行搜索

2023-12-28

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

然而,我尝试从 Ruby 连接到此,并考虑使用 AWS SDK,但它没有实际对 ES 集群进行 HTTP 操作的方法,只能访问配置 API。

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

本质上,我所追求的是能够使用 IAM 用户信用向该集群发出 GET 和 PUT 请求。 IP 限制对我来说不是一个选择。


您可以从 Ruby 向 Amazon Elasticsearch 发出签名的安全请求。我使用 Heroku 上的一个应用程序执行了以下操作。

确保您有 elasticsearch gem >= v1.0.15,因为对此的支持仅在 2015 年 12 月 4 日实现。

你还需要这个宝石:

gem 'faraday_middleware-aws-signers-v4'

示例来自elasticsearch-ruby/elasticsearch-transport https://github.com/elastic/elasticsearch-ruby/tree/master/elasticsearch-transport文档:

您可以在配置块中使用任何标准的 Faraday 中间件和插件,例如签署 AWS Elasticsearch 服务的请求:

使用以下代码:

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

针对安全的 AWS ElasticSearch 进行搜索 的相关文章

随机推荐

  • 附加操作按钮在 Flask-admin 上不起作用

    我正在尝试向 Flask admin 表单添加一项操作 它必须增加评级 1 并且它适用于批量操作 但不适用于单个操作 请帮我找到这个错误 我花了很多时间试图让这个东西正常工作 这是代码 我在 templates 文件夹中制作了一个 html
  • 我可以更改 Azure Function Event Hub 触发器启动检查点吗?

    当我使用新的消费者组建立一个新的 Azure Function 来侦听我们的事件中心时 它会获取曾经发送到事件中心的所有消息 甚至是几个月前的消息 我认为将集线器上的消息保留设置为一天会限制这一点 但显然不是 不管怎样 我真的只希望新的 A
  • 收到“未安装 qmlscene”。 “Ubuntu”上“QT CREATOR”中的警告

    我将 QTStatic 添加到 QT 版本 但我无法使用此版本在套件选项卡中构建和设置 我上传了下面的屏幕截图 请帮助 版本选项卡屏幕截图 https i stack imgur com rpaGB jpg 套件选项卡屏幕截图 https
  • 如何在 Rails 视图中呈现所有评论?

    我是 Rails 新手 所以放轻松 我创建了一个博客 我已成功实施评论并将其附加到每个帖子中 现在 我想在侧边栏中显示所有帖子的最新评论列表 我认为这里涉及两件事 对comment controller rb的更新 然后是从实际页面的调用
  • postgresql - 替换文本字段中字符串的所有实例

    在 postgresql 中 如何替换数据库列中字符串的所有实例 假设我想替换所有实例cat with dog 例如 最好的方法是什么 你想使用 postgresql 的replace http www postgresql org doc
  • Ant 任务

    我现在看到 Ant 既有
  • 如何访问iOS中的弱链接框架?

    我想在 iOS 5 上使用 Twitter 框架 但能够在旧操作系统中运行我的应用程序 我在 Xcode 4 2 Target 设置中添加了弱引用框架 即设置 可选 标志 基础 SDK 是 iOS 5 iOS 部署目标是 iOS 3 2 接
  • 如何将第三方 npm 包与 ember cli 应用程序一起使用

    EDIT 这实际上是关于任何不适合与 ember 一起使用的 npm 包 就我而言 我尝试让 crypto js 工作 但对于任何不是专门为 ember cli 设计的 npm 包来说 似乎总是遇到同样的问题 我想在我的 ember 应用程
  • Python 错误代码已升级

    考虑一个 python 脚本 error py import sys sys exit 3 Invoking python error py echo 产生预期的 3 但是 考虑 runner py import os result os
  • 在 Android 应用程序中使用个人证书

    我希望用户能够在从生成证书的网站安装后将他们自己的个人证书安装到我的 Android 应用程序中 但是当我使用 WebClient 或 Android 浏览器浏览它时 安全存储会弹出并安装它 在版本 14 Android 4 0 之前 AP
  • 带返回值的动态 Linq 表达式

    我需要创建一个动态 linq 表达式 然后我开始使用许多示例 我测试了一些工作 有些没有 在这种情况下 我想创建一个如下所示的方法 public bool Check int intvar if i gt 2 return true els
  • Laravel 4:调用未定义的方法 Redis::connection()

    我对这个错误快要疯了 我有一个 Debian 7 的 vagrant VM 用 Puphpet 生成 安装得很好 1 Redis已安装并运行 redis server在跑 我可以使用服务器127 0 0 1 6379 2 安装php5 re
  • Code First:Fluent api 会影响 UI 吗?

    我正在读 Julie Lerman 写的一本关于 Code First 的书 根据这本书 注释和 Fluent api 给出相同的结果 一切都取决于开发人员的风格 我知道注释允许配置代码如何首先生成数据库对象以及 MVC 如何自定义 UI
  • 点击事件后关闭汉堡菜单

    我有一个汉堡菜单 几乎完整 只有 1 个我无法弄清楚的错误 问题 我的导航链接到主页上的不同区域 因此 在主页上 用户可以单击导航链接 这将立即将他们带到页面上的所需位置 我的问题是因为没有加载 所以一旦用户单击导航链接 他们就会被带到该位
  • 使用 secure_random 在 rspec 中存根随机值

    我正在尝试为我的 gem 编写规范 它生成 otp 并将其保存在数据库中 现在我正在为其编写规格 所以基本上我有三种方法generate otp regenerate otp verify otp otp what generate otp
  • angular2 TypeError:无法设置未定义的属性“名称”

    我有一个 Angular2 项目 在 Mac OS 上创建并运行 但是当我在Windows上git它时 它无法运行 在 Chrome 中 我收到此错误 core umd js 3491 EXCEPTION Uncaught in promi
  • 使用 fillcolor 节点增强 BGL write_graphviz make_label_writer

    我想用自定义颜色填充某些节点的颜色 那么图形的顶点属性中是否有自定义属性设置或重新实现自定义函子 make edges writer include
  • Kubernetes 部署和初始化容器

    I 最近学到的 https stackoverflow com questions 44233242 kubernetes cluster and phoenix automate mix ecto migrate 44233465 442
  • ContentPlaceHolders:重复内容

    Scenario 我有一个使用 asp net 母版页的应用程序 我想在其中重复页面顶部和底部的一些内容 目前我使用这样的东西 Master Page
  • 针对安全的 AWS ElasticSearch 进行搜索

    我在 AWS 上设置了一个新的 ElasticSearch 集群 该集群仅允许特定 IAM 用户访问 然而 我尝试从 Ruby 连接到此 并考虑使用 AWS SDK 但它没有实际对 ES 集群进行 HTTP 操作的方法 只能访问配置 API