首页 > 解决方案 > 如何将我的 AWS Elastic Search Service 设为私有?

问题描述

{
"Version": "2012-10-17",
  "Statement": [    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxxxxxxx:role/some-role"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-1:xxxxxxxx:domain/theprodname/*"
    }
  ]
}

我想将我的弹性搜索服务设置为私有。我所说的“私人”是指:

  1. 无法从外部访问(无 http 请求)
  2. 我自己的 aws ec2 服务器可以访问它。

我将我的 aws IAM Role ARN 添加到原理中,结果我仍然无法在我的网站上使用 es 服务。

任何想法?提前致谢。

我尝试了Proper access policy for Amazon Elastic Search Cluster的答案。但它不适用于我的情况。

标签: amazon-web-serviceselasticsearch

解决方案


您的 EC2 无法访问您的 ES 域可能存在一些问题。

  • EC2 未承担 ES 策略中提供的角色
  • 您没有签署请求

即使 EC2 承担 ES 策略中定义的角色但未发出签名请求,也会被拒绝访问。

您可以避免使用 AWS ES REST API 发出签名请求。假设 EC2 在 VPC 中,您可以将静态 IP 分配给NAT 网关并在您的 ES 域策略中将该 IP 地址列入白名单。

我的建议是使用原生 ES 客户端启用签名请求,因为它比 REST API 容易得多。


推荐阅读