Hibernate Search连接AWS OpenSearch Serverless权限报错问题
问题修复方案
你遇到的403错误核心原因是Hibernate Search的AWS适配器默认使用es作为服务名称进行签名,但AWS OpenSearch Serverless要求签名时指定服务名为aoss,导致凭证权限范围不匹配。以下是具体修复步骤:
1. 修改Hibernate Search配置,指定AWS签名服务名
在你的Spring配置中,给hibernate.search.backend.aws添加service属性,明确设置为aoss:
spring: jpa: properties: hibernate: search: backend: type: elasticsearch hosts: xxxxxxxx.<region>.aoss.amazonaws.com version: opensearch:2.5 version_check: enabled: false aws: region: <region> signing: enabled: true service: aoss # 新增此行,指定服务名为aoss
2. 解决STS依赖警告
日志中的To use web identity tokens, the 'sts' service module must be on the class path警告,是因为EKS Pod通过IAM角色获取凭证需要AWS SDK的STS模块支持,需添加对应依赖:
Maven依赖
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>sts</artifactId> </dependency>
Gradle依赖
implementation 'software.amazon.awssdk:sts'
额外说明
- 关于版本警告
Unknown Elasticsearch version running on the cluster: 'opensearch:2.5':由于Hibernate Search 6.1.8对OpenSearch 2.5的适配性有限,但你已关闭版本检查,该警告不会影响功能,可忽略,也可后续升级Hibernate Search到更高版本解决。 - 修改后重新部署应用,即可通过Pod绑定的IAM角色完成OpenSearch Serverless的认证,签名服务名与IAM策略的资源范围匹配后,403错误会消失。
内容的提问来源于stack exchange,提问作者Rokko_11
相关产品推荐
相关产品推荐

