从java getCanonicalHostName方法在AWS上使用公共IP

从java getCanonicalHostName方法在AWS上使用公共IP,java,amazon-web-services,apache-zeppelin,Java,Amazon Web Services,Apache Zeppelin,我正在尝试使用AWS作为一个可扩展的分析工具。我使用ApacheZeppelin作为Spark集群的交互式shell,并尝试使用wisp进行绘图。这导致了一个问题,因为wisp中的绘图方法是基于我认为的jetty服务器启动一个web应用程序。这在我的本地机器上运行良好,但在AWS上不起作用,因为它拾取的是私有IP地址,而不是公共IP地址 在wisp中,它使用java.net.InetAddress.getLocalHost.getCanonicalHostName 检索计算机的IP地址。这始终返

我正在尝试使用AWS作为一个可扩展的分析工具。我使用ApacheZeppelin作为Spark集群的交互式shell,并尝试使用wisp进行绘图。这导致了一个问题,因为wisp中的绘图方法是基于我认为的jetty服务器启动一个web应用程序。这在我的本地机器上运行良好,但在AWS上不起作用,因为它拾取的是私有IP地址,而不是公共IP地址

在wisp中,它使用java.net.InetAddress.getLocalHost.getCanonicalHostName 检索计算机的IP地址。这始终返回专用FQDN地址。如何使java函数返回AWS提供的公共IP地址或FQDN,而无需在每次启动集群并重建时在wisp中硬编码

我尝试过更改/etc/hosts和/etc/hostname,但都没有效果。我真的不知道java.net.InetAddress.getLocalHost.getCanonicalHostName在哪里 正在从中获取它的地址

非常感谢任何帮助或建议


迪安,我是个白痴。这是一个港口问题。看起来,尽管显示了私有IP,但它在公共IP上仍然可用

在ubuntu虚拟机上使用sudo ufw disable关闭内部防火墙无论如何,请根据您的虚拟机风格查找替代命令

接下来,转到帐户的AWS EC2管理页面,并单击实例的安全组

在安全组页面上,编辑入站规则并添加自定义tcp规则

在“端口”下,输入“1-65536”,在“源”下输入“0.0.0.0/0”。请注意,您刚才所做的是将实例上的所有端口向来自任何地方的所有传入流量开放。你刚刚在互联网上写下了欢迎词。我不建议长期这样做,这是非常愚蠢的。这对我的原则证明起到了作用,而这正是我想要做的。我现在会想办法让它安全

谢谢大家的克制,没有嘲笑我是个白痴