amazon-ec2 - 将流量从 Windows EC2 实例转发到 ElasticSearch VPC Endpoint
问题描述
我有用于面向公众的 C# API 的 Windows EC2 实例。VPC(以及相关的 Internet 网关、子网等)都是默认的。
我现在已经使用他们更安全的 VPC 端点选项(而不是面向公众)设置了 AWS ElasticSearch 服务,并且我已将其关联到与我上面的 Windows EC2 实例相同的子网和 vpc。
我想让他们互相交谈。
从https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html阅读
看来您要做的是 ssh 隧道/端口将流量从 EC2 实例上的 localhost:9200 转发到实际的 Elastic Search 服务(通过该 VPC 端点)。
似乎这个命令是魔法发生的地方: ssh -i ~/.ssh/your-key.pem ec2-user@your-ec2-instance-public-ip -N -L 9200:vpc-your-amazon-es- domain.region.es.amazonaws.com:443
但这是针对 Linux EC2 实例的。
如果我在我的 Windows EC2 实例(API)中进行远程桌面访问,我该如何做到这一点,当我进入浏览器时,http://localhost:9200 会将流量发送到我的 VPC 端点:
vpc-your-amazon-es-domain.region.es.amazonaws.com:443
谢谢!
解决方案
好吧,那我来回答我的两个问题:
首先,它实际上非常简单,只需 RDP 到您的盒子并通过 VPC 端点直接访问实例。你不需要做任何古怪的事情,比如使用 netsh 命令或类似的东西进行端口转发。只需确保服务器(在我的情况下是我的 API)在同一个 VPC 上就可以了。我的连接字符串中有一个错误,这就是它没有连接的原因。为了确认,我 RDP'D 并能够直接在端口 80 上的浏览器中访问端点。虽然实际的 Elasticsearch 确实在端口 9200 上运行,但您不需要转发到 localhost:9200 --> vpc: 9200。
现在,关于第二个问题,关于在本地访问它,我认为问题在于,由于该服务缺少公共 IP 地址并且您无法访问它,因此您可以在 AWS 上进行一些复杂的设置,或者更简单的设置它现在可以在本地运行,直到您准备好使用 VPC(因此您的代码将运行)。另一种选择是使用安全组并暂时创建一个可公开访问的集群,然后当您的代码完成、搜索服务/层完成等时,您可以使用 VPC/安全 Elasticsearch 服务重新开始,应该就是这样。
许多人提到的另一件事是,如果您在本地计算机上设置自己的 Elasticsearch,然后在 EC2 上设置一个,它会更便宜/您可以更好地控制事物(这只是阅读博客并看到人们提到他们有多少挫败感用它)。
推荐阅读
- html - 为什么只有一个媒体查询不起作用?
- python - 如何在 python 中集成 Vimeo API 以通过关键字搜索公共视频
- python - 将字典附加到数据框
- sql - 在 psql 中聚合时间序列
- python - pyodbc 出现在显示“没有模块名称 pyodbc”
- c# - 使用 Moq 对 WCF 服务进行单元测试
- python - 作为对我的 Slack Webhook 尝试的响应代码,“no_text”和“500”是什么意思?
- c++ - C++:犰狳不想与 hdf5 格式合作
- sql - tsvector 的串联导致 Postgres 9.4.6 中的语法错误
- r - 嵌套for循环到应用?