从Windows EC2实例转发流量到ElasticSearch VPC端点

时间:2018-10-19 18:25:55

标签: amazon-ec2 amazon-vpc ssh-tunnel aws-vpc aws-elasticsearch

我有用于公开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

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我将回答两个问题:

首先,这实际上非常容易,只需将RDP拖到您的设备上,即可直接通过VPC端点访问实例。您不需要做任何古怪的事情,例如使用netsh命令进行端口转发。只需确保服务器(在我的情况下为我的API)位于同一VPC上就可以了。我的连接字符串中只有一个错误,这就是为什么它没有连接。作为确认,我进行了RDP登录并能够直接在端口80的浏览器中命中该端点。确实,实际的Elasticsearch运行在端口9200上,您无需转发到localhost:9200-> vpc: 9200。

现在,关于第二个问题,关于在本地打它,我认为问题在于,由于此服务缺少公共IP地址并且您无法访问它,因此可以在AWS上进行一些复杂的设置,或更容易只是将其设置为现在可以在本地运行,直到您准备使用VPC为止(这样您的代码就可以运行了)。另一个选择是使用安全组并暂时创建一个公共可访问的群集,然后在完成代码,完成搜索服务/层等之后,可以重新开始使用VPC /安全Elasticsearch服务。 / p>

很多人提到的另一件事是,它更便宜/如果您在本地计算机上设置自己的Elasticsearch,然后在EC2上进行设置,则可以更好地控制事物(这只是阅读博客并看到人们提到了多少东西)他们对此感到沮丧)。