elasticsearch,amazon-ec2,Amazon Web Services,elasticsearch,Amazon Ec2" /> elasticsearch,amazon-ec2,Amazon Web Services,elasticsearch,Amazon Ec2" />

Amazon web services 仅从我的VPC/子网访问弹性搜索internet端点

Amazon web services 仅从我的VPC/子网访问弹性搜索internet端点,amazon-web-services,elasticsearch,amazon-ec2,Amazon Web Services,elasticsearch,Amazon Ec2,我有一个互联网弹性搜索端点。我只想在我的2VPC的中访问它,具体来说,仅限于我的EC2实例。以下是我正在尝试使用我的VPC CIDR块IP的策略,但我无法从我的EC2实例访问端点。MyEC2实例位于私有子网中,通过NAT网关访问internet。这是我的访问策略,它不起作用 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS":

我有一个互联网弹性搜索端点。我只想在我的2
VPC的
中访问它,具体来说,仅限于我的
EC2
实例。以下是我正在尝试使用我的
VPC CIDR
IP
的策略,但我无法从我的
EC2
实例访问端点。My
EC2
实例位于私有子网中,通过NAT网关访问internet。这是我的访问策略,它不起作用

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:1XXXXXXXXXXX:domain/my-elasticsearch/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "xx.xx.xx.xx/24",
            "xx.xx.xx.xx/24"
          ]
        }
      }
    }
  ]
}
我也尝试过类似的方法,只允许从分配给IAM角色的EC2实例进行访问,但这也不起作用

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

我做错了什么?或者有更好的方法限制访问吗?

因为您有一个公共AWS Elasticsearch群集,所以允许您的EC2实例从一个具有私有IP的私有子网中访问是不起作用的。 尝试在AWS ES群集的访问策略中添加NAT的公共IP,看看是否有效。 此外,如果您使用的是基于IAM的访问策略,请确保对AWS ES的所有请求都已签名,如下所述: