1

我正在构建golang RESTful API并试图使用签名请求访问ES。 我按照在AWS上的文档,我使用(olivere /弹性)使用AWS请求签名有问题ES访问

以下golang代码被用于创建一个新的客户端

signer := v4.NewSigner(credentials.NewStaticCredentials("IAM_USER_ID", "IAM_USER_SECRET", "")) 
awsClient, err := aws_signing_client.New(signer, nil, "es", "us-east-1") 
if err != nil { 
    return nil, err 
} 
return elastic.NewClient(
    elastic.SetURL("https://my-aws-endpoint.us-east-1.es.amazonaws.com"), 
    elastic.SetScheme("https"), 
    elastic.SetHttpClient(awsClient), 
    elastic.SetSniff(false), // See note below 
) 

在ElasticSearch AWS控制台Golang AWS弹性搜索客户端软件包的文件,我已修改了访问策略那样: selected access policy template access policy

看来我能够发现ES节点,但是当我试图执行一个查询,ES返回HTTP状态403 - 没有权限。

我也尝试将IAM用户授予AmazonESFullAccess策略,但似乎没有任何效果。

回答