亚马逊使用Java

时间:2017-02-12 22:22:10

标签: java eclipse amazon-ec2

我制作了一个允许以编程方式创建实例的Java程序 我需要解析返回对象以打印实例的公共IP地址。

然而,当我输出亚马逊EC2客户端的describeInstances()功能的结果时,输出是列表和哈希映射的迷宫,我不知道如何解析它。< / p>

有人能告诉我一个更简单的方法来实现这个目标吗?

我尝试将Ec2.describeInstances().getReservations()结果转换为字符串,然后操纵字符串以输出公共IP地址。

有没有更简单的方法来实现这个目标?

代码:

DescribeAddressesRequest add =new DescribeAddressesRequest();
String Desc= client.describeInstances().getReservations().get(1).toString();

2 个答案:

答案 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地址。