【问题标题】:Retrieve another EC2 instance's public IP address检索另一个 EC2 实例的公共 IP 地址
【发布时间】:2018-01-02 07:48:33
【问题描述】:

我们有一个在 AWS 上运行的产品,它适用于主从模型。 一个实例将充当主/服务器,多个从属实例与它们通信。

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

这里要注意的是,主服务器实例拥有所有从属实例的私有 IP 地址的列表。但我需要获取它们等效的公共 IP 地址。(所有主从实例都有公共 IP 地址)

问题:鉴于我有一个实例的私有 IP 地址,有没有办法从主服务器实例中检索相应的公共 IP 地址

附:我确实有这些命令来检索本地实例 IP 地址,但要查找远程实例版本

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

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

【问题讨论】:

  • 主实例是否有权访问凭证或 IAM 角色来执行describe-instances
  • 是的。它确实有aws ec2 describe-instances --instance-ids i-xyz --query "Reservations[].Instances[][PublicIpAddress]" [ [ "1.2.3.4" ] ]
  • 使用filtersdescribe-instances查看我的答案

标签: amazon-web-services amazon-ec2 ip-address


【解决方案1】:

一种选择是通过instance roleec2:DescribeInstances 授予主EC2 权限,并使用private-ip-address 过滤器调用它。

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

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

【讨论】:

    【解决方案2】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2015-06-07
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多