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