使用lambda函数的AWS Elastic搜索更改策略

时间:2019-03-07 09:43:04

标签: amazon-web-services aws-lambda amazon-elasticsearch

我正在尝试通过使用节点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

1 个答案:

答案 0 :(得分:0)

与OP进一步讨论后,事实证明是Lambda函数附带的IAM角色缺少权限。

对于其他面临相同问题的人,请确保将ESFullAccess附加到与ElasticSearch一起使用的Lambda函数。

为此,请转到IAM->角色,然后选择附加到Lambda函数的角色。

单击附加策略并附加ESFullAccess,如下图所示:

enter image description here