我们有一个在AWS上运行的产品,它适用于主从模型。 一个实例将充当主/服务器,并且多个从属实例与它们通信。
要运行一些自动脚本,我需要连接到主服务器,然后从那里检索所有其他Slave实例的IP地址。
这里的问题是主服务器实例具有所有从属实例私有IP地址的列表。但是我需要获得他们等效的公共IP地址。(所有主和从实例都有公共IP地址)
问题:鉴于我拥有实例的私有IP地址,是否有办法从主服务器实例中检索相应的公共IP地址
P.S。我确实有这些命令来检索本地实例IP地址但查找远程实例版本
答案 0 :(得分:2)
一种选择是通过instance role向ec2: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