从运行实例获取弹性IP(Get Elastic IP from running instance)

2019-09-16 20:04发布

从EC2实例中运行的Java应用程序,我想知道,手动从管理控制台分配就是我自己的弹性IP地址。 有没有一种方法来查询EC2 API为这个?

Answer 1:

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


Answer 2:

替代(不清晰的解决方案),可能是要求这样的外部服务来知道你的公网IP。 http://whatismyip.org/

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



Answer 3:

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

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


文章来源: Get Elastic IP from running instance