通过 java getCanonicalHostName 方法在 AWS 上使用 public IP

Using the public IP on AWS from java getCanonicalHostName method

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

在 wisp 中,它使用 java.net.InetAddress.getLocalHost.getCanonicalHostName 检索机器的 IP 地址。这始终是 return 的私有 FQDN 地址。我怎样才能使 java 函数 return 成为 public IP 地址或 AWS 提供的 FQDN,而无需在每次启动集群和重建时都在 wisp 中硬编码某些内容?

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

非常感谢任何帮助或建议。

院长

我是个白痴。这是一个端口问题。看起来尽管显示了私有 IP,它仍然可以在 public IP 上使用。

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

接下来,转到您账户的 AWS EC2 管理页面,然后单击您的实例的安全组。

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

在端口下,输入“1 - 65536”,在源下输入“0.0.0.0/0”。请注意,您刚刚所做的是为来自任何地方的所有传入流量打开实例上的所有端口。您刚刚放下了对互联网的欢迎垫。我不建议长期这样做,这是非常愚蠢的。不过,它对我的​​原则证明很有用,这就是我的目标。我现在将研究确保其安全的方法。

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