【问题标题】:Amazon aws Public IP from running Instance using Java使用 Java 运行实例的 Amazon aws 公共 IP
【发布时间】:2017-06-30 20:16:22
【问题描述】:

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

但是,当我输出 Amazon 的 EC2 客户端的 describeInstances() 函数的结果时,输出是一个列表和哈希映射的迷宫,我不知道如何解析它。

谁能告诉我一个更简单的方法来完成这个?

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

有没有更简单的方法来做到这一点?

代码:

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

【问题讨论】:

  • 顺便说一句:vagrant-aws 已经允许编程 Ec2 实例
  • 我不知道getReservations().get(1) 会返回什么。你有什么用于 Ec2 的 Java API?遍历 Hashmap 有什么问题?
  • runInstances() API 调用返回一个RunInstancesResult,可用于检索实例信息。使用getReservation().getInstances() 获取已启动的实例列表。
  • 如果您只想启动实例,您可能会发现使用AWS Command-Line Interface (CLI) 更容易。请参阅run-instances documentation

标签: java eclipse amazon-ec2


【解决方案1】:

你需要一个Instance

getPublicIpAddress()
分配给实例的公有 IPv4 地址(如果适用)

我不知道 API,但您可以从 Reservation 获得一个 Instance。

getInstances()
一个或多个实例

for (Reservation r : client.describeInstances().getReservations()) {
    for (Instance i : r.getInstances()) {
        String ipv4 = i.getPublicIpAddress();
    }
} 

【讨论】:

    【解决方案2】:

    SDK 不返回 HashMap,它返回实际的 Java 类。我不确定您是如何从中获得 HashMaps 的。将返回的对象转换为字符串并进行操作绝对不是推荐的方法。

    如果您查看 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 地址是否已分配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 2020-07-09
      • 2021-06-23
      • 2018-12-29
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多