通过 Java 获取 EC2 实例的实例 ID
2022-09-03 08:19:58
我部署了一个 AWS EC2 实例,我需要找出其公有 IP。Howver,要知道我必须首先知道我的实例的实例 ID。
目的:
- 我的实例中运行着一个Java代码,我希望该代码找出运行它的实例的当前IP或实例ID。
在阅读了 Amazon 文档后,我想出了一个返回所有实例的 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地址。
是否可以对以前的方法进行更改,以便为我提供所需的内容?有没有更有效的方法可以做到这一点?