我正在尝试清理我的AWS配置,我想知道是否实际使用了特定子网/其中是否有任何资源。
我知道您可以通过AWS Web界面按子网ID过滤特定资源类型(例如EC2实例)的列表,但是我还不知道可能会使用的所有不同资源类型-所以我担心我可能会错过一些东西。
我尝试通过AWS CLI检查子网,但是看不到任何明显区分正在使用和未使用的子网的
aws ec2 describe-subnets
This question处理枚举特定子网的CIDR块中的所有IP地址,但没有揭示如何仅显示活动IP地址(我大概可以使用它来找到附加的AWS资源并确认子网)确实在使用中。)
这似乎是一项常见的任务,但是我找不到任何AWS文档或有关如何执行此操作的SO帖子。也许我的方法存在缺陷。
答案 0 :(得分:1)
答案 1 :(得分:0)
看看aws ec2 describe-network-interfaces
。
这将返回Elastic Network Interfaces (ENIs)的列表,并支持subnet-id
过滤器。 EC2实例并不是子网上唯一的东西-RDS实例,Elastic Load Balancer,Lambda函数,Elastic File System挂载目标,NAT网关和其他资源消耗子网上的IP地址,但是在每种情况下,我可以想到的是,他们通过分配ENI来做到这一点。在某些情况下,例如负载平衡器(ALB和Classic),随着平衡器容量的增加和减少,地址的数量会增加和减少。就Lambda而言,由于流量不足,缺少已分配的ENI可能仅意味着当前没有Lambda容器主机正在使用子网 ...因此,如果您具有VPC Lambda功能,请承担记住这一点。
您还可以在EC2控制台的左侧导航窗格中的“网络接口”下看到ENI。
答案 2 :(得分:0)
谢谢您的回答-它们既有用,也确实帮助我确定了是否使用了特定子网。
我发现最有助于了解每个子网中内容的是开放源代码Python可视化工具CloudMapper(我完全没有隶属关系-我在提问并滚动后才发现它通过商业可视化工具)。
答案 3 :(得分:0)
aws ec2 describe-network-interfaces --filters Name=subnet-id,Values=subnet-id-here | grep Description
(将subnet-id-here
替换为子网ID)
上面的命令将为您提供该子网中的资源名称。
答案 4 :(得分:0)
filter
和 query
开关在 --filters
开关值参数中,将 <<Subnet ID>>
替换为您的子网 ID。
aws ec2 describe-network-interfaces \
--filters Name=subnet-id,Values=<<Subnet ID>> \
--query 'NetworkInterfaces[*].Description'