You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda中用opensearch-py连接OpenSearch认证403错误如何解决

解决方案

你遇到的403错误是opensearch-py客户端初始化参数配置错误导致的签名不匹配问题,直接修改初始化代码即可:

openSearch_client = OpenSearch(
    # 替换你的endpoint字符串,去掉https前缀,指定443端口
    hosts = [{'host': openSearch_endpoint.replace('https://', ''), 'port': 443}],
    # 显式指定http_auth参数传递AWS4Auth对象
    http_auth = awsauth,
    # 开启SSL验证,匹配OpenSearch服务的https访问要求
    use_ssl = True,
    verify_certs = True,
    # 显式指定基于requests的连接类,和你直接调用requests的逻辑一致
    connection_class = 'RequestsHttpConnection'
)

核心修改原因说明

  • 你之前直接将完整endpoint字符串传入hosts参数时,opensearch-py默认会使用http协议、9200端口发起请求,和OpenSearch服务实际使用的https 443端口不一致,导致AWS4Auth签名计算结果和实际请求信息不匹配,触发403错误。你直接调用requests时手动拼接了完整https url,签名计算正确所以可以正常访问。
  • 显式使用http_auth参数传递认证对象,比兼容性质的auth参数适配性更好,避免不同版本客户端的参数兼容问题。
  • 补充说明:你代码里service = 'es'的配置是正确的,AWS OpenSearch Service的IAM签名服务标识至今沿用旧的es取值,不需要修改。

内容的提问来源于stack exchange,提问作者average.everyman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:45:06