我部署了一個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/ –