如何发现同一ec2安全组中的所有实例

时间:2017-09-07 14:27:57

标签: amazon-web-services amazon-ec2

不幸的是,不可能将八卦协议用作ec2上的节点发现机制。

所以我需要找到一种方法来列出位于同一安全组中的节点的所有私有IP地址。我想通过自动发现机制来做到这一点。

更多详情

我有多个运行所有相同docker容器的ec2实例,但docker容器没有安装aws-cli。因此,我正在寻找一种方法来检测现有注册表中的其他实例,或者至少没有aws-cli作为依赖项。在容器中运行的应用程序需要其他容器的ips相互连接。

2 个答案:

答案 0 :(得分:3)

describe-instancesfilter group-name或group-id一起使用。

来自:describe-instances

  • instance.group-id - 实例的安全组的ID。
  • instance.group-name - 实例的安全组的名称。

使用安全组ID

aws ec2 describe-instances --filters "Name=instance.group-id,Values=sg-082b1234" --query 'Reservations[*].Instances[*].[PrivateIpAddress]' --output text

输出

10.1.1.24
10.1.1.49

使用安全组名称

aws ec2 describe-instances --filters "Name=instance.group-name,Values=default" --query 'Reservations[*].Instances[*].[PrivateIpAddress]' --output text

输出

10.1.1.24
10.1.1.49

答案 1 :(得分:0)

第一种方法是使用SDK(例如,AWS JAVA SDK)作为@Markb,@ helloV建议。

第二种方法是创建另一个可以运行aws-cli作为帮助程序实例的实例(例如,ip:222.222.222.222),然后你可以在你的docker实例中执行远程aws cli命令来获取实例IP

ssh centos@222.222.222.222 'YOUR_AWS_CLI_Command'