Django-Haystack 使用具有 IAM 凭证的 Amazon Elasticsearch 托管

2024-04-10

我希望使用 Amazon 的 Elasticsearch 服务器来支持 Django 数据库中长文本字段的搜索。然而,我也不想将此搜索暴露给那些没有登录并且不想通过模糊或某些 IP 限制策略来依赖安全性的人(除非它可以很好地与现有的 heroku 应用程序配合使用,部署 Django 应用程序的位置)。

Haystack 似乎在这方面走了很长的路,但似乎没有一种简单的方法将其配置为使用 Amazon 的 IAM 凭证来访问 Elasticsearch 服务。这个功能确实存在于它使用的elasticsearch-py中。

https://elasticsearch-py.readthedocs.org/en/master/#running-with-aws-elasticsearch-service https://elasticsearch-py.readthedocs.org/en/master/#running-with-aws-elasticsearch-service

from elasticsearch import Elasticsearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth

host = 'YOURHOST.us-east-1.es.amazonaws.com'
awsauth = AWS4Auth(YOUR_ACCESS_KEY, YOUR_SECRET_KEY, REGION, 'es')

es = Elasticsearch(
    hosts=[{'host': host, 'port': 443}],
    http_auth=awsauth,
    use_ssl=True,
    verify_certs=True,
    connection_class=RequestsHttpConnection
)
print(es.info())

关于使用 HTTP 授权,我在以下问题下发现了这一点:https://github.com/django-haystack/django-haystack/issues/1046 https://github.com/django-haystack/django-haystack/issues/1046

from urlparse import urlparse
parsed = urlparse('https://user:pass@host:port')
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': parsed.hostname,
        'INDEX_NAME': 'haystack',
        'KWARGS': {
            'port': parsed.port,
            'http_auth': (parsed.username, parsed.password),
            'use_ssl': True,
        }
    }
}

我想知道是否有一种方法可以将这两者结合起来,如下所示(正如预期的那样,它会给出错误,因为它不仅仅是用户名和密码):

from requests_aws4auth import AWS4Auth
awsauth = AWS4Auth([AACCESS_KEY],[SECRET_KEY],[REGION],'es')


HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': [AWSHOST],
        'INDEX_NAME': 'haystack',
        'KWARGS': {
            'port': 443,
            'http_auth': awsauth,
            'use_ssl': True,
            'verify_certs': True
        }
    },
}

这里的错误:

TypeError at /admin/
must be convertible to a buffer, not AWS4Auth

Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/
Django Version:     1.7.7
Exception Type:     TypeError
Exception Value:    

must be convertible to a buffer, not AWS4Auth

Exception Location:     /usr/lib/python2.7/base64.py in b64encode, line 53

关于如何实现这一目标有什么想法吗?


您距离成功仅一步之遥,添加connection_class to KWARGS一切都应该按预期进行。

import elasticsearch

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': [AWSHOST],
        'INDEX_NAME': 'haystack',
        'KWARGS': {
            'port': 443,
            'http_auth': awsauth,
            'use_ssl': True,
            'verify_certs': True,
            'connection_class': elasticsearch.RequestsHttpConnection,
        }
    },
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django-Haystack 使用具有 IAM 凭证的 Amazon Elasticsearch 托管 的相关文章

随机推荐

  • 相对于另一个居中视图的位置视图

    你好 SwiftUI 社区 我正在尝试做一些可能很容易做的事情 但我已经坚持了几个小时了 在列表中 我希望项目由以下组成 水平居中的文本 数字 号码左侧的文字 号码右侧的文字 我尝试了很多东西 对齐 对齐指南 GeometryReader
  • 单个 postgresql 查询中的文本和 jsonb 连接

    如何在 postgresql 中连接 jsonb 对象内的字符串 换句话说 我在同一查询中使用 JSONb 连接运算符以及文本连接运算符 但遇到了麻烦 或者 如果我应该执行一个完全不同的查询 我将不胜感激听到建议 目标是更新包含 jsonb
  • 对齐按钮背景图像

    我的 WinForms 应用程序中有一个按钮 我向其中添加了图像和文本 我将文本向右对齐 并希望将背景图像向左对齐 但发现这是不可能的 有什么办法可以做到这一点吗 我还尝试在按钮上仅设置图像 但无法在按钮属性中调整图像大小 有人可以帮我解决
  • Julia:生成唯一的随机整数数组

    我正在尝试创建 10 个唯一随机整数的元素数组 但是我无法创建具有唯一值的数组 Julia 中是否有类似 Python 的东西样本函数 https docs python org 2 library random html random s
  • 使用 SQLCeResultSet 更新/插入表

    我有一个定期更新的 SQL Compact Edition 数据库 通过 Web 服务 我写入数据库的部分花费的时间太长 我目前正在使用 Linq to Datasets 进行此操作 如这个问题 https stackoverflow co
  • keycloak 无效参数:反向代理后面的redirect_uri

    如何正确配置NGINX作为Keycloak前面的代理 作为文档询问和回答这个问题 因为我现在不得不重复这样做 并且在一段时间后忘记了细节 这是专门处理 Keycloak 位于反向代理后面的情况 例如nginx 和 NGINX 正在终止 SS
  • 如何在 springdoc 中注释 requestBody 的各个元素?

    我有一个 spring 启动 服务器 想要使用 springdoc 从注释生成 OpenAPI 规范 我有一个请求 请求正文中有两个参数 我希望第一个是必需的 第二个是可选的 RequestBody required true false
  • 如何重写控制台项目中的一行文本?由 小码哥发布于

    我正在开发一个 C 控制台项目 我想显示一个百分比 而不需要每次都创建一个新行 这样窗口就不会被数千行堵塞 有没有办法删除打印的最后一行或者说下次我输出一行时它应该替换当前行 您可以使用 r 回车符 将光标返回到行的开头 这适用于 Wind
  • 如何在 Python Cerberus 中将字符串强制转换为日期时间?

    我试图将字符串强制为日期 以便它可以验证日期数据类型 但它仍然返回False from cerberus import Validator from datetime import datetime v Validator v schema
  • 如果这是在 Objective C 中使用自定义字符串属性的正确方法,为什么我不能提取正确的数值?

    我正在修改一个早期项目 其中使用标签来识别 1 of 5 1 of 16 或 1 of 10UIButtons 我想根据我的理解用自定义属性替换标签这个答案 https stackoverflow com a 11594662 234859
  • 如何设置 Visual Studio 在 (Umbraco) 项目中创建 CSHTML 文件

    因此 我正在 Visual studio 中为我的 Umbraco 项目开发剃刀宏脚本 一切工作正常 但有两件事真的很烦人 如果我想创建一个新的 CSHTML 文件 最佳解决方案是复制现有文件 我没有完整的剃须刀智能感知 例如Html Ra
  • 谷歌 Colab 上的 RVL-CDIP 数据集

    我正在尝试使用以下命令在 google colab 上下载 RVL CDIP 数据集 wget load cookies tmp cookies txt https docs google com uc export download co
  • 无法导入caffe

    我执行了make pycaffe在 caffe 目录中并且运行良好 我也这样做了 gsamaras gsamaras A15 caffe python export PYTHONPATH PYTHONPATH home gsamaras c
  • 如何将 ShortDate 字符串格式与 Html.TextBoxFor 一起使用

    使用带有 MVC2 的实体框架 我有一系列日期文本框 我想以短日期格式显示模型中的数据 但我必须使用 Html TextBoxFor 才能使更新代码正常工作 尝试使用 HTML Textbox 数据永远不会保存到模型中 我已经尝试操作字符串
  • 在java中以附件形式发送文件

    我有一个java代码 我必须发送一个依恋 可能是 doc db 或 file 所以我使用以下代码 消息已成功发送 并且特定附件文件未发送且也未收到 我的代码是 import java util Date import java util P
  • 如何在 Swift 3 中将 UIImage 数组导出为电影?

    我需要导出一组UIImage并制作一部在图像前面放置一些文本的电影 如果可能的话还可以添加音乐 你能帮我提供代码吗 我只找到了一些东西Objective c和旧版本的Swift 这是我对这个问题发布的第一个答案 从 UIImage 创建电影
  • 鼠标悬停在表格行上显示表格单元格

    我有一张看起来像这样的桌子 table thead tr th Foo th th Bar th tr thead tbody tr class data td Info here td a a url here class edit gt
  • 是否有使用 EF 数据库优先方法来解释该主题的 Fluent API 教程?

    关于 Fluent API 的教程有很多 但它们都使用 Entity Framework Code First 代码示例进行解释 由于我不了解代码优先 您是否知道任何 Fluent API 教程可以使用 EF 数据库优先方法解释该主题 谢谢
  • 有没有办法使用 python 请求发送多部分/表单数据数组?

    假设有一个端点接受HTTP请求与multipart form data内容类型 以下是可接受的请求正文的示例 033392576939750140334380 Content Disposition form data name file
  • Django-Haystack 使用具有 IAM 凭证的 Amazon Elasticsearch 托管

    我希望使用 Amazon 的 Elasticsearch 服务器来支持 Django 数据库中长文本字段的搜索 然而 我也不想将此搜索暴露给那些没有登录并且不想通过模糊或某些 IP 限制策略来依赖安全性的人 除非它可以很好地与现有的 her