从EC2实例上运行的java应用程序中,我想知道从管理控制台手动分配的自己的弹性IP地址。有没有办法为此查询EC2 API?
答案 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);
...