从运行实例中获取弹性IP

时间:2012-04-27 17:07:29

标签: java amazon-ec2 amazon-web-services

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

3 个答案:

答案 0 :(得分:7)

如果您使用的是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;
    }
}

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

您可以致电DescribeInstances - 它会返回一系列信息,包括公共IP地址(ip-address过滤器)。

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