java - Amazon aws 使用 Java 从运行实例获取公共(public) IP

标签 java eclipse amazon-ec2

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

但是,当我输出亚马逊 EC2 客户端的 describeInstances() 函数的结果时,输出是一个由列表和 HashMap 组成的迷宫,我不知道如何解析它。

有人可以告诉我一个更简单的方法来完成这个任务吗?

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

有没有更简单的方法来实现这一点?

代码:

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

最佳答案

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

如果您查看 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),以便您可以预期响应中只会出现一个实例。

请注意,公共(public) IP 地址可能不会立即分配。您可能必须循环执行此操作,检查 IP 地址是否已分配。

关于java - Amazon aws 使用 Java 从运行实例获取公共(public) IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193995/

相关文章:

java - CXF-Servlet初始启动

java - Eclipse EE 开发需要什么 JDK

android - ArrayAdapter 错误

eclipse - 是否有 Eclipse 的 NuGet 等效项

postgresql - 在 AWS - EC2 上安装 Postgresql 9.6

linux - 为什么受密码保护的根账户是 Amazon EC2 中的安全问题?

java - Java:将两个椭圆段的交集转换为3d空间

java - 逻辑开始方法 (java.security.cert.X509CRL) isRevoked

java - Gmail Api - 搜索更新时间超过几分钟的电子邮件

amazon-web-services - 使用 pem 文件通过 ssh 连接