【发布时间】:2019-07-29 03:34:39
【问题描述】:
我正在尝试使用节点 js 通过 lambda 函数更改弹性搜索访问策略当前访问策略如下所示
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:XXXX:domain/YYY/*"
}
]
}
我在 lambda 中尝试过的代码
var params = {
DomainName: 'YYYY'
};
const es = new AWS.ES();
es.upgradeElasticsearchDomain(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
这总是抛出错误
is not authorized to perform: es:UpdateElasticsearchDomainConfig on resource 错误代码 "code": "AccessDeniedException",
在param 我将添加AccessPolicies 这与我在问题中添加的策略相同,但Effect 将是Deny
【问题讨论】:
-
你能分享你实例化es客户端的代码吗? (隐藏网址,ofc)
-
@ThalesMinussi 我刚刚修改了我的问题
const es = new AWS.ES(); -
您的 Lambda 函数是否已授予 ESFullAccess?
-
我不知道更多关于那个..如何检查它??
-
检查您的 Lambda 函数正在使用的 IAM 角色。您可以转到 AWS 的 Lambda 控制台并查找它正在使用的 IAM 角色。然后转到 IAM -> Roles 并检查附加到您的 Lambda 函数的角色是否具有对 ElasticSearch 的完全访问权限
标签: amazon-web-services aws-lambda amazon-elasticsearch