相关疑难解决方法(0)

适用于Amazon Elastic Search Cluster的正确访问策略

我最近开始使用新的Amazon Elasticsearch Service,我似乎无法弄清楚我需要的访问策略,因此我只能从我的EC2实例访问具有特定IAM角色的服务.

以下是我目前为ES域分配的访问策略的示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::[ACCOUNT_ID]:role/my_es_role",
        ]
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN]/*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

但正如我所说,这不起作用.我登录到EC2实例(my_es_role附加了角色)并尝试在"https://*.es.amazonaws.com"端点上运行简单的curl调用,我收到以下错误:

{"消息":"用户:匿名无权执行:es:ESHttpGet on resource:arn:aws:es:us-east-1:[ACCOUNT_ID]:domain/[ES_DOMAIN] /"}

有没有人知道我必须在访问策略中更改什么才能使其正常工作?

amazon-ec2 amazon-web-services elasticsearch amazon-iam amazon-elasticsearch

96
推荐指数
4
解决办法
5万
查看次数

从Lambda访问ElasticSearch的权限?

我正在尝试将Elasticsearch用于连接到Alexa Skills Kit的Lambda函数的数据存储.Lambda在没有Elasticsearch的情况下正常工作,但ES提供了急需的模糊匹配.

我能够从Lambda访问它的唯一方法是启用Elasticsearch全局访问,但这是一个非常糟糕的主意.我也可以通过开放访问策略或IP地址策略从我的计算机访问.有没有办法通过Lambda进行只读访问和通过IP进行读写?

在IAM上,我授予了我的Lambda角色AmazonESReadOnlyAccess.在ES方面,我试过这个,但它只适用于IP地址:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::NUMBER:root",
          "arn:aws:iam::NUMBER:role/lambda_basic_execution"
        ]
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:NUMBER:domain/NAME/*"
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:NUMBER:domain/NAME/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "MY IP"
        }
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

论坛帖子提出了同样的问题,但未得到答复.

amazon-web-services aws-lambda amazon-elasticsearch

18
推荐指数
3
解决办法
1万
查看次数