从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