【问题标题】:AWS Elastic search change policy using lambda function使用 lambda 函数的 AWS 弹性搜索更改策略
【发布时间】: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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 2022-01-19
    • 2020-11-17
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2020-12-11
    • 2021-07-13
    相关资源
    最近更新 更多