我在 CNAME 后面有一个弹性搜索服务,当我尝试使用 curl 命令通过命令行访问它时,我能够通过 HTTP 200 OK 响应获得正确的响应。
但是,当我尝试使用 Java API 的 Rest High Level Client 连接到服务时,我收到 403 错误。
我的弹性搜索的访问策略配置为 * 作为 AWS Principal。
错误日志是这样的:
[DEBUG] org.elasticsearch.client.RestClient: request [POST http://ES_ENDPOINT/INDEX_NAME/_search?typed_keys=true&ignore_unavailable=false&expand_wildcards=open&allow_no_indices=true&search_type=query_then_fetch&batched_reduce_size=512&ccs_minimize_roundtrips=true] returned [HTTP/1.1 403 Forbidden]
{"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."}
这背后的可能原因是什么?此问题仅发生在 CNAME 而不是实际的弹性搜索域名。