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

AWS Elastic search change policy using lambda function

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

在与 OP 进一步讨论后,发现是缺少对 Lambda 函数附加的 IAM 角色的权限。

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

为此,转到 IAM -> 角色和 select 附加到您的 Lambda 函数的角色。

点击附加策略并附加ESFullAccess,如下图: