You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用AWS CLI筛选含多条路由的路由表关联子网ID

解决AWS CLI查询多路由路由表关联子网ID的问题

需求

列出us-west-2区域中,所有包含多条路由(路由数量>1)的EC2路由表所关联的子网ID(SubnetId)。

错误命令与问题分析

尝试的错误查询命令:

aws ec2 describe-route-tables --region us-west-2 --query 'RouteTables[?Routes[].Size>1].Associations[*].SubnetId'

报错信息:

Bad value for --query RouteTables[?Routes[].Size > 1].Associations[*].SubnetId: invalid token: Parse error at column 29, token "1" (NUMBER), for expression:
"RouteTables[?Routes[].Size > 1].Associations[*].SubnetId"
                              ^

问题出在JMESPath语法错误:

  • 错误使用Routes[].Size获取路由数量,JMESPath中没有.Size属性,需用length()函数计算数组长度。
  • Routes[]会展开路由数组,此处无需展开,直接针对Routes数组本身计算长度即可。

正确查询命令

方式1:输出结构化JSON结果

aws ec2 describe-route-tables --region us-west-2 --query 'RouteTables[?length(Routes) > 1].Associations[?SubnetId].SubnetId'

方式2:输出纯文本格式(方便后续处理)

aws ec2 describe-route-tables --region us-west-2 --query 'RouteTables[?length(Routes) > 1].Associations[?SubnetId].SubnetId' --output text

命令说明

  • length(Routes) > 1:过滤出路由条目数量大于1的路由表;
  • Associations[?SubnetId]:仅保留包含SubnetId的关联项(排除无子网关联的主路由表);
  • .SubnetId:提取最终需要的子网ID字段。

用你提供的示例数据测试,上述命令会返回:subnet-029daed7c320c9cc0,符合需求。

内容的提问来源于stack exchange,提问作者user180574

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:50:27