有没有办法使用 aws cli 列出或识别哪些子网是公共子网,哪些子网是私有子网?
aws ec2 describe-subnets
列出了所有内容,但我没有看到任何明显的标识符来表明哪些是公开的,哪些是私有的。
然后我查看了aws ec2 describe-route-tables --filter Name="association.subnet-id",Values="$subnet"
路由表是否有任何识别信息,在我未经训练的眼睛里,我也看不到任何公共/私人信息。
还有其他电话需要我关注吗?
答案1
“私有”(与“公共”相对)不是子网的文字配置属性。
它源自子网关联的路由表……尽管它也不是路由表的文字配置属性。
官方定义:
如果子网的流量被路由到 Internet 网关,则该子网称为公共子网。
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html
这意味着直接连接到 Internet 网关,而不是通过 NAT 网关、NAT 实例、虚拟专用网关或其他网关类型的设备。
通常部署时,公共子网是其关联路由表具有指向 Internet 网关对象的默认路由的子网……尽管它也可以是具有仅具有直接路由到 Internet 网关的特定目的地的路由表的子网,并且它仍然本质上是一个公共子网。
由于配置确实具有一定的灵活性,因此没有严格的划分。出于实际目的,通常可以假定与路由表关联的任何子网(其中路由指向 Internet 网关)是“公共”子网,其余子网是“私有”子网,因此发现过程相当于从另一个方向开始遍历层次结构,从 VPC → 路由表(具有 IGW 路由的路由表 = 公共)→ 与这些路由表关联的子网。