AWS: 子网中已分配IP列表

15

有没有一种方法可以获取AWS子网中所有分配的IP地址列表?此外,如果有一种方法可以查看关联的(AW)服务,那将非常有帮助。谢谢!

编辑:

在私有AWS子网中分配的所有私有IP地址(无论实例状态如何)。获取此信息的任何方法都可以。我最熟悉的是AWS CLI、boto/boto3和控制台。

该列表将包括除5个地址之外的每个CIDR块定义下可用的所有地址:


1
定义“已分配”的IP。即使实例已停止,其在VPC中仍具有IP。您需要CLI解决方案还是SDK解决方案?请尽可能详细地描述,并避免使用一行问题。 - helloV
当然可以!我已经发布了一些编辑。谢谢! - scagnetti
2个回答

22
aws ec2 describe-instances --filters "Name=subnet-id,Values=subnet-12345678" --query 'Reservations[*].Instances[*].PrivateIpAddress' --output text
  • 使用describe-instances
  • subnet-id查询
  • 通过PrivateIpAddress过滤结果

按照@Michael - sqlbot的建议使用:

aws ec2 describe-network-interfaces --filters "Name=subnet-id,Values=subnet-12345678" --query 'NetworkInterfaces[*].PrivateIpAddress'

5
我认为aws ec2 describe-network-interfaces是首选的方法,因为它可以获取RDS、ELB-C/ALB/NLB、EFS、PrivateLink等使用的地址,更不用说Lambda的动态活动了。 - Michael - sqlbot
2
@helloV Lambda在函数在您的VPC内运行时会分配多个弹性网络接口,显然每个容器都会分配一个。"AWS Lambda使用您提供的VPC信息设置ENI,使您的Lambda函数能够访问VPC资源。" 在流量激增后,任何多余的ENI通常会在它们最后一次使用后的几个小时内被销毁。我提到的其他服务也会分配ENI,并且它们将从您的CIDR块为它们所在的子网分配地址。此外,NAT网关也会分配1个。 - Michael - sqlbot
1
感谢 @Michael-sqlbot。 - helloV
2
@scagnetti 尝试使用 describe-network-interfaces 的第二个解决方案。 - helloV
1
每个网络接口可以附加多个IP,因此这个查询更有效:'NetworkInterfaces[*].PrivateIpAddresses[*].PrivateIpAddress'。输出结果并不美观。此外,还可以分配前缀,因此像'NetworkInterfaces[*].Ipv4Prefixes[*].Ipv4Prefix'这样的查询也很有用。 - daxlerod
显示剩余7条评论

0
您还可以通过以下命令检查可用IP的数量:
aws ec2 describe-subnets --subnet-ids subnet-0621441200b4b3970 --query "Subnets[*].AvailableIpAddressCount" 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接