4

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

4

3 回答 3

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;
    }
}
于 2012-04-27T17:49:11.857 回答
2

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

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

于 2012-04-27T17:48:37.683 回答
1

您可以调用DescribeInstances - 它返回一堆信息,包括公共 IP 地址(ip-address过滤器)。

...
DescribeInstancesRequest dis = new DescribeInstancesRequest();   
DescribeInstancesResult disresult = ec2.describeInstances(dis);
...
于 2012-04-27T17:24:08.920 回答