从运行实例中获取弹性IP

从在EC2实例上运行的java应用程序,我想知道从管理控制台手动分配的我自己的弹性IP地址。 有没有办法为此查询EC2 API?

如果你使用linux ec2实例,这应该工作:

命令:

curl http://169.254.169.254/latest/meta-data/public-ipv4 

Java代码:

 public static String getIP() throws IOException, InterruptedException { Process p = Runtime.getRuntime().exec("curl http://169.254.169.254/latest/meta-data/public-ipv4"); int returnCode = p.waitFor(); if ( returnCode == 0 ) { BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); String ip = r.readLine(); r.close(); return ip; } else { //handle error return null; } } 

替代(不是最清晰的解决方案),可能是请求这样的外部服务来了解您的公共IP。 http://whatismyip.org/

编辑:我找到了一个很好的服务,返回json或文本格式。 https://www.ipify.org/

您可以调用DescribeInstances – 它返回一组信息,包括公共IP地址( ip-addressfilter)。

 ... DescribeInstancesRequest dis = new DescribeInstancesRequest(); DescribeInstancesResult disresult = ec2.describeInstances(dis); ...