【问题标题】:How to grant Lambda access to ElasticSearch in AWS?如何授予 Lambda 对 AWS 中 ElasticSearch 的访问权限?
【发布时间】:2020-08-27 11:32:38
【问题描述】:

我正在使用本地 AWS 凭证成功访问 AWS ElasticSearch 服务。但是,当从 lambda 尝试时,我得到以下信息:

用户: arn:aws:sts::XXXXXXXXXX:assumed-role/dudeman-workouts-dev-graphqlLambdaServiceRoleXXXXXX-XXXXXXXXX/dudeman-workouts-dev-graphqlLambdaXXXXXXXXX-XXXXXXXXXX 无权执行:es:ESHttpPost

这让我很困惑,因为 lambda 承担的角色具有以下内联策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "es:*",
            "Resource": "arn:aws:es:us-east-1:XXXXXXXXXXXX:domain/general-elasticsearch",
            "Effect": "Allow"
        }
    ]
}

这是关于集群本身的政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXXXX:root"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:XXXXXXXXXXX:domain/general-elasticsearch/*"
    }
  ]
}

政策模拟器说一切都很好:

【问题讨论】:

  • ES集群上的策略是什么样的?
  • @jordanm 添加到问题的底部。我去了域 > 操作 > 修改访问策略。我希望这就是你想要的。
  • 尝试通过policysim.aws.amazon.com运行角色,不是万能的,但可以排除一些明显的陷阱
  • @OleksiiDonohathanx,我附上了结果。
  • 这可能是 SCP(AWS 组织政策)的结果,如果您的账户在组织中,请检查

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


【解决方案1】:

/* 添加到 IAM 策略中资源的末尾。

IIRC,Elasticsearch 策略的行为类似于 S3 策略:如果省略尾随 /*,则只能调用影响整个集群的请求。然而,各种 HTTP 请求会影响 https://cluster/index 等内容。

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 2016-02-16
    • 2019-11-28
    • 2023-04-03
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多