检索另一个 EC2 实例的 public IP 地址

Retrieve another EC2 instance's public IP address

我们在 AWS 上有一个产品 运行ning,它适用于主从模式。 一个实例将作为 Master/Server 和多个从属实例与它们交谈。

为了 运行 一些自动化脚本,我需要连接到主服务器并从那里检索所有其他从属实例的 IP 地址。

这里的问题是主服务器实例拥有所有从实例的私有IP地址的列表。但是我需要得到它们的等效 public IP 地址。(所有主从实例都有 public IP 地址)

问题:鉴于我有一个实例的私有 IP 地址,是否有办法从主服务器实例 中检索相应的 public IP 地址

P.S。我确实有这些命令来检索本地实例 IP 地址,但正在寻找远程实例版本

http://instance-data/latest/meta-data/local-ipv4

http://instance-data/latest/meta-data/public-ipv4

一个选项是通过 instance role to ec2:DescribeInstances 授予主 EC2 权限,并使用私有 IP 地址过滤器调用它。

从结果中可以读取 publicIp 字段以找到从 public IPv4 地址。

由于 ec2:DescribeInstances doesn't support resource-level permissions 您应该仔细考虑这(即描述所有 EC2 实例的属性的能力)是否是主 EC2 拥有的可接受的权限级别。可以在 Lambda 函数中实施更细粒度的权限检查。

使用 describe-instances 和过滤器 private-ip-address

    aws ec2 describe-instances --filters "Name=private-ip-address,Values=10.1.1.100,10.10.0.101"
        --query "Reservations[].Instances[][PrivateIpAddress,PublicIpAddress]" --output text

输出

10.10.0.101 52.123.123.215
10.1.1.100  54.123.123.49