【问题标题】:How to discover all instances in the same ec2 security group如何发现同一 ec2 安全组中的所有实例
【发布时间】:2018-02-16 08:14:45
【问题描述】:

不幸的是,在 ec2 上无法使用 gossip 协议作为节点发现机制。

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

更多详情

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

【问题讨论】:

  • 您是否考虑过使用实例标记而不是安全组成员身份来实现这一目标?
  • 不,如何从一个实例中解析所有具有相同标签及其私有 IP 的实例?
  • 您只需查询所有实例,过滤标签。
  • 谢谢,很遗憾我留下了一些细节以及为什么我不能使用 aws-cli。因此我更新了问题。
  • 然后以您选择的编程语言使用众多 AWS 开发工具包之一。

标签: amazon-web-services amazon-ec2


【解决方案1】:

describe-instancesfilter 组名或组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

【讨论】:

  • 感谢您的回复,遗憾的是我没有讲完整个故事,而且我无法从 docker 容器中执行 aws-cli。
  • 按照@MarkB 的建议,使用任何 SDK。将 IAM 角色附加到您的实例或传递凭证。
【解决方案2】:

第一种方法是使用 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'

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 2021-05-29
    • 2020-12-29
    • 1970-01-01
    相关资源
    最近更新 更多