我部署了一个AWS EC2实例,并且需要查找其公有IP。不管怎样,要知道我必须首先知道我的实例的实例ID。通过Java获取EC2实例的实例ID
目的:
- 我在我的实例中运行的Java代码,我想代码弄清楚它正在运行的实例的当前IP或实例-ID。
阅读亚马逊的文档后,我想出了一个返回所有实例,的IP Java方法,但是这不是我想要的,我想这仅返回实例ID或公网IP的方法正在运行的实例的地址。
/**
* Returns a list with the public IPs of all the active instances, which are
* returned by the {@link #getActiveInstances()} method.
*
* @return a list with the public IPs of all the active instances.
* @see #getActiveInstances()
* */
public List<String> getPublicIPs(){
List<String> publicIpsList = new LinkedList<String>();
//if there are no active instances, we return immediately to avoid extra
//computations.
if(!areAnyActive())
return publicIpsList;
DescribeInstancesRequest request = new DescribeInstancesRequest();
request.setInstanceIds(instanceIds);
DescribeInstancesResult result = ec2.describeInstances(request);
List<Reservation> reservations = result.getReservations();
List<Instance> instances;
for(Reservation res : reservations){
instances = res.getInstances();
for(Instance ins : instances){
LOG.info("PublicIP from " + ins.getImageId() + " is " + ins.getPublicIpAddress());
publicIpsList.add(ins.getPublicIpAddress());
}
}
return publicIpsList;
}
在这段代码中我有所有活动实例的实例ID的数组,但我不知道他们是否是“我”与否。所以我认为我的第一步是要知道我是谁,然后询问我的公共IP地址。
有没有可以改变我以前的方法给我想要的东西?有没有更有效的方法呢?
这里的解决方案:http://codeflex.co/java -get-ec2-private-public-ip-and-instance-id/ –