除了使用 DescribeAddressesRequest 之外,是否有更好的方法来查找 运行 实例的 IP 地址?

Is there a better way to find IP address of a running instance other than using DescribeAddressesRequest?

正如标题所说,我正在使用 DescribeAddressesRequest 来找出实例创建后分配给它的 IP 地址。我想知道有没有办法将 IP 分配给 特定的 实例(例如,实例 ID i-b4b4d3d4)?

如上所述,我正在使用的方法可能为我提供了数千个地址,这很不方便,因为我总是对单个实例感兴趣...

如果您想知道实例的 Public IP 地址,则可以在 DescribeAddressesRequest 调用中使用 setFilters()

下面是使用 AWS CLI 的等效项:

aws ec2 describe-addresses --filter Name=instance-id,Values=i-abcd1234 --query 'Addresses[*].PublicIp'

如果您在实例上,那么您将使用通过 169.254.169.254 的门户网站提供的各种元数据。使用 EC2MetadataUtils 或 Java 中的 HttpClient 或:

curl -o - http://169.254.169.254/latest/meta-data/public-ipv4

要获取完整的元数据列表,请使用:

curl -o - http://169.254.169.254/latest/meta-data/

如果您正在谈论 过滤 Java 中的 DescribeAddressesRequest 那么您可以添加过滤器。我认为这样的事情应该有效:

DescribeAddressesRequest request =
    new DescribeAddressesRequest().withFilters(
        Arrays.asList(new Filter().withName("resource-id").withValues("i-b4b4d3d4")));

可能是 "instance-id"