查看子网中的所有资源/查看子网是否正在使用

问题描述 投票:0回答:6

我正在尝试清理我的 AWS 配置,我想知道特定子网是否实际使用/其中包含任何资源。

我知道您可以通过 AWS Web 界面按子网 ID 过滤特定资源类型(例如 EC2 实例)的列表,但我还不知道可能使用的所有不同资源类型 - 所以我担心我可能会错过一些东西。

我已尝试通过 AWS CLI 检查子网,但看不到任何明显区分正在使用的子网和未使用的子网的信息:

aws ec2 describe-subnets

这个问题涉及枚举特定子网的 CIDR 块内的所有 IP 地址,但它没有揭示如何仅显示活动 IP 地址(我大概可以用它来查找附加的 AWS 资源并确认子网确实位于其中)使用)。

这似乎是一项常见任务,但我找不到关于如何执行此操作的 AWS 文档或 SO 帖子。也许我的方法有一些缺陷。

amazon-web-services subnet
6个回答
32
投票

aws ec2 describe-network-interfaces --filters Name=subnet-id,Values=subnet-id-here | grep Description
(将
subnet-id-here
替换为记住的子网 ID)

上述命令将为您提供该子网中的资源名称。


10
投票

看看

aws ec2 describe-network-interfaces

这将返回 弹性网络接口 (ENI) 列表并支持

subnet-id
过滤器。 EC2 实例并不是子网上唯一的东西 - RDS 实例、弹性负载均衡器、Lambda 函数、弹性文件系统挂载目标、NAT 网关和其他资源消耗子网上的 IP 地址,但在每种情况下我可以想到,他们通过分配 ENI 来做到这一点。在某些情况下,例如负载均衡器(ALB 和 Classic),地址数量会随着均衡器容量的扩大和缩小而增加和减少。就 Lambda 而言,缺少分配的 ENI 可能仅意味着由于流量不足,当前没有任何 Lambda 容器主机正在使用该子网...因此,如果您有 VPC Lambda 函数,请记住这一点。 您还可以在 EC2 控制台左侧导航窗格的“网络接口”下看到 ENI。


4
投票

我发现对于理解每个子网中的内容最有用的是开源 Python 可视化工具,

CloudMapper

(我没有任何附属关系 - 我在提出问题并滚动浏览商业可视化工具后发现了它) .


3
投票

3
投票
filter

query
开关

--filters

开关值参数中,将

<<Subnet ID>>
替换为您的子网 ID。
aws ec2 describe-network-interfaces \
    --filters Name=subnet-id,Values=<<Subnet ID>> \
    --query 'NetworkInterfaces[*].Description'



0
投票

for subnet in $(aws ec2 describe-subnets --query 'Subnets[].SubnetId' --output text); do echo $subnet; aws ec2 describe-network-interfaces --filters Name=subnet-id,Values=$subnet --query 'NetworkInterfaces[].[NetworkInterfaceId,Description]' --output text; done

© www.soinside.com 2019 - 2024. All rights reserved.