我制作了一个允许以编程方式创建实例的Java程序 我需要解析返回对象以打印实例的公共IP地址。
然而,当我输出亚马逊EC2客户端的describeInstances()
功能的结果时,输出是列表和哈希映射的迷宫,我不知道如何解析它。< / p>
有人能告诉我一个更简单的方法来实现这个目标吗?
我尝试将Ec2.describeInstances().getReservations()
结果转换为字符串,然后操纵字符串以输出公共IP地址。
有没有更简单的方法来实现这个目标?
代码:
DescribeAddressesRequest add =new DescribeAddressesRequest();
String Desc= client.describeInstances().getReservations().get(1).toString();
答案 0 :(得分:1)
您需要Instance
班级
<强> getPublicIpAddress()强>
分配给实例的公共IPv4地址(如果适用)
我不知道API,但是通过预订,您可以访问实例。
<强> getInstances()强>
一个或多个实例
for (Reservation r : client.describeInstances().getReservations()) {
for (Instance i : r.getInstances()) {
String ipv4 = i.getPublicIpAddress();
}
}
答案 1 :(得分:1)
SDK不返回HashMaps,它返回实际的Java类。我不确定你是如何从中获取HashMaps的。将返回的对象转换为String并操纵它绝对不是推荐的方法。
如果您查看API文档,您会看到describeInstances()
返回DescribeInstancesResult,其中包含Reservation个对象的列表,每个对象都包含Instance个对象的列表。 Instance对象具有getPublicIpAddress()
方法。所以你可以做类似以下的事情:
DescribeInstancesRequest request = new DescribeInstancesRequest();
String ipAddress = client.describeInstances(request) // You pass the request here
.getReservations().get(0) // Get the first reservation
.getInstances().get(0) // Get the first instance in the reservation
.getPublicIpAddress(); // Get the public IP address of the instance
我假设您正在向DescribeInstancesRequest
对象添加一些条件(如预留ID),以便您只能在响应中添加一个实例。
请注意,可能不会立即分配公共IP地址。您可能必须在循环中执行此操作,检查是否已分配IP地址。