2017-07-26 121 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函數中實現。

相關問題