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

时间:2017-07-26 19:54:07

标签: amazon-web-services amazon-ec2 ip-address

我们有一个在AWS上运行的产品,它适用于主从模型。 一个实例将充当主/服务器,并且多个从属实例与它们通信。

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

这里的问题是主服务器实例具有所有从属实例私有IP地址的列表。但是我需要获得他们等效的公共IP地址。(所有主和从实例都有公共IP地址)

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

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

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

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

2 个答案:

答案 0 :(得分:2)

一种选择是通过instance roleec2:DescribeInstances授予主EC2权限,并使用private-ip-address过滤器调用它。

从结果中可以读取publicIp字段以查找从属公共IPv4地址。

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

答案 1 :(得分:1)

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