我有一个Heroku应用程序,可以对外部服务进行一些API调用。有一些问题,该服务想知道IPS正在打电话。
ifconfig
,traceroute
,netstat
等许多基本工具都不存在。看来他们正在运行Ubuntu的非常准确的版本14.04.5。
我能够使用heroku ps:exec -a <myapp>
将SSH用于我的应用程序并使用ip addr
,但是有一些问题:
1)看来,这仅允许我进入Web.1 dyno(我正在通过REST.1,REST.2等进行API调用)2)这些电话通过Heroku一侧的路由器。
如何获得所有DYNO实例和/或路由器的IP?
使用heroku ps -a <app>
命令获取Dynos的列表。
您实际上可以使用heroku ps:exec -a <app> -d <dyno_instance> --ssh
进行单个Dyno实例。
使用ip
命令获得单个Dyno IP,例如ip addr | grep "global eth0" | awk '{ print $2 }'
。
使用curl 'https://api.ipify.org'
获取路由器IP。http://httpbin.org/ip也很好。
您可以使用expect
通过运行HEROKU SSH命令,等待提示,运行IP命令,登录,然后重复每个Dyno实例。/div>
根据文档,Heroku dynos可以是AWS地区的任何IP。为您的dynos拥有专用/静态IP是其企业提供的一部分。
但是,您可以通过添加一个附加组件(例如Fixie,Proximo或其中一个附加组件)
来具有专用/静态IP此外,您可以让Dynos向https://httpbin.org/ip提出GET请求,并且它将以Dynos public ip响应(下面的评论部分中的更多想法)。