AWS Elasticsearch VPC 连接

AWS Elasticsearch VPC connectivity

我在 AWS 中创建了一个 Elasticsearch 域。

它已添加到我的 VPC 中的 public 子网中,并且我附加了一个当前完全开放的安全组。

我也附上了这个政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:eu-central-1:ACCOUNT_ID:domain/DOMAIN_NAME/*"
    }
  ]
}

我正在尝试访问本地端点,但似乎不允许。

Kibana URL 例如:

https://vpc-bla.bla.bla.eu-central-1.es.amazonaws.com/_plugin/kibana/

知道为什么我无法访问这个 URL 吗?

无法在您与 elastic-search 域关联的子网之外访问 VPC 端点。

您可以尝试从属于您与 elastic-search 关联的同一子网的任何 EC2 实例执行 curl,它应该可以工作。

如果您需要从 Internet 访问端点,则不要创建 VPC 端点 elastic-search,而是创建具有 Internet 访问权限的 elastic-search 域。创建ES域时可以指定是VPC集群还是公网集群。

经过反复试验,我发现 ES 生成的 URL 是内部的,无法通过安全组轻易地向互联网开放。

相反,我部署了一个简单的 nginx 代理,它转发 public DNS 请求,例如 es.mydns.com 到内部 DNS eg vpc....eu-central-1.es.amazonaws.com/_plugin/kibana/

More nginx info here.

访问elasticsearch VPC的步骤

  • 在 AWS 中创建 ec2 环境。
  • 在ec2中安装ngnix并配置。
  • 在安全组中添加两个入站请求,即所有流量和 ssh.
  • 然后使用public ip 从互联网访问。