2017-07-26 94 views
1

我们有一个在AWS上运行的产品,它适用于主从模式。 一个实例将充当主服务器和多个从实例与之通话。检索另一个EC2实例的公有IP地址

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

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

问题:鉴于我有一个实例的私有IP地址,是否有一种方法可以检索相应的公有IP地址来自主服务器实例内的公共IP地址

PS我确实有这些命令来获取本地实例的IP地址,但在寻找远程实例的版本

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

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

+0

是否主实例访问凭据或IAM角色来执行'描述,instances'? – helloV

+0

yes.it确实有'AWS EC2描述-​​实例--instance的IDS的i-XYZ --query “预订[]。实例[] [PublicIpAddress]” [ [ “1.2.3.4” ] ]' – Siva

+0

看到我的回答使用'filters'与'describe-instances' – helloV

回答

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 
+0

Bingo!正是我在找什么 – Siva

2

一种选择是通过instance roleec2:DescribeInstances授予主EC2的权限,并将其命名为与私人IP地址过滤器。

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

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

相关问题