如何find不能公开访问的EC2实例

我在AWS上,有两个EC2实例。 我有一个世界可访问的应用程序服务器( app-server ),我希望它通过内部networkingsecret-server交谈。 所以,我的app-server基本上正在运行:

 r = requests.get('http://10.1.2.3/stuff') 

但是, secret-server的私有IP在我closures/升级/更改时会发生变化。 app-server应该如何find它? secret-server.us-east-1.elasticbeanstalk.comparsing为通过安全组被阻止的公共IP。 私人的DNS地址是无用的, ip-10.1.2.3.ec2.internal ,这当然会随着IP地址的变化而改变。

基本上,我希望能够configuration一个静态私有IP地址或附加一个DNS名称,只要EC2实例更改parsing为私有IP。

如果有问题,我正在使用Elastic Beanstalk。

我看到的选项:

  • 将子网限制为一个IP地址,但这似乎不是最理想的。
  • 向部署添加第二步,将IP地址设置为静态,希望AWS不会为其他人使用。 这似乎很脆弱,容易忘记。
  • 正如在下面的评论中所build议的,我尝试添加一个以secret-server的Elastic Beanstalk环境作为别名的route53路由,但是这个域名parsing为公有IP。

这就是安全组所要做的,所以你不必担心IP地址。 在App-Server安全性中,只允许应用服务器与秘密服务器通信的端口到达秘密服务器的安全组。

现在,如果我们正在App中交谈,则可以configuration一个内部负载均衡器,并将该秘密服务器置于其后面,这样您可以引用负载均衡器的DNS名称,而不必担心秘密服务器的IP。 或者你做别的build议,并在NIC上创build一个私有IP,然后把这个IP与新的实例重新关联起来,这个实例不像内部的ELB那样大。

https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-internal-load-balancer.html