我目前正在使用Heroku(使用 AWS)并且我的程序需要与我自己的 EC2 实例进行通信。我已将我的 EC2 实例置于与 Herokus 相同的区域,但为了进一步降低成本,我希望能够通过同一可用区中的 Heroku dyno 和 EC2 实例之间的私有 IP 地址进行社区交流。
我知道我可以重新启动 Heroku 以在服务器和可能不同的可用区域之间切换,但是,有没有办法确定它们是在同一个可用区域还是在不同的可用区域?
我可以编写一个程序,重新启动 Heroku 直到它位于同一区域。
答案1
这不是一件容易的事(如果可以解决的话),因为每个可用区域都不同亚马逊 EC2请参阅常见问题解答如何确保我与另一个开发人员位于同一可用区域?:
我们目前不支持跨 AWS 开发者账户协调启动到同一可用区域的功能。
Eric Hammond 已经探索了这个主题,并开发了一种技术/技巧来解决这个限制,请参阅跨 AWS 账户匹配 EC2 可用区:
概括:不同账户中的 EC2 可用区名称与相同的底层物理基础设施不匹配。本文介绍了一种技巧,可用于了解如何匹配不同账户之间的可用区名称。
不过,他也强调了相应的警告:
请注意,这种方法不是 Amazon EC2 的记录功能。[...]
亚马逊可以随时重组这些值的工作方式,以便所描述的产品 ID 不能在账户之间使用或不映射到任何通用基础设施。
这个技巧目前似乎有效,因此您也许可以通过应用此技术来实现您的目标,但要做好准备,因为它最终无法产生可靠的解决方案。