使用AWS CLI --filters查询指定VPC的NAT网关ID报错排查
问题根因
这是AWS CLI参数解析和shell转义共同导致的问题,和版本支不支持参数无关。你把整个过滤规则用双引号全包之后,部分shell环境会把整段引号内容识别成独立参数,不会把它绑定到--filters参数上,CLI自然会把--filters和后面的内容全判定为未知选项。
可用解决方法
按场景选对应写法就行:
- 如果你用的是bash/zsh等类Unix shell,直接去掉过滤规则外层的双引号即可,命令如下:
aws ec2 describe-nat-gateways --region us-west-2 --filters Name=vpc-id,Values=vpc-0c62e079ca624ac0a
参数和值之间的等号换成空格也能正常跑,不影响解析。
- 如果你用的是Windows PowerShell/CMD,直接去引号可能还会有转义问题,最稳妥的方式是传JSON格式的过滤规则,彻底绕开shell转义坑:
PowerShell下执行:
aws ec2 describe-nat-gateways --region us-west-2 --filters '[{"Name":"vpc-id","Values":["vpc-0c62e079ca624ac0a"]}]'
CMD下执行:
aws ec2 describe-nat-gateways --region us-west-2 --filters "[{\"Name\":\"vpc-id\",\"Values\":[\"vpc-0c62e079ca624ac0a\"]}]"
兜底排查
如果改完格式还是报同样的错,直接执行aws --version确认当前实际调用的CLI版本,避免本地装了多版本CLI、或者配置了aws命令别名,实际跑命令的时候调用的是不支持该参数的老版本。
内容的提问来源于stack exchange,提问作者R Hill
相关产品推荐
相关产品推荐

