使用az network nsg rule wait等待指定IP段时为何一直等待?
问题原因及解决方法
你使用az network nsg rule wait时的--custom参数查询逻辑有误:
- 原查询
sourceAddressPrefixes[?@=='10.98.48.0/20']返回的是匹配的IP段数组(比如["10.98.48.0/20"]),而az wait命令的--custom参数需要的是**布尔值(true/false)**来判断条件是否满足。非空数组不会被识别为true,所以命令会一直处于等待状态。
正确的命令写法
你需要修改JMESPath查询,让它返回明确的布尔结果,以下两种写法都可以:
方法1:使用contains函数直接判断
az network nsg rule wait -g $rg_name --nsg-name $nsg_name -n $rule_name --custom "contains(sourceAddressPrefixes, '10.98.48.0/20')"
方法2:判断匹配结果的长度是否大于0
az network nsg rule wait -g $rg_name --nsg-name $nsg_name -n $rule_name --custom "length(sourceAddressPrefixes[?@=='10.98.48.0/20']) > 0"
当目标IP段存在时,以上两种写法都会返回true,az wait会识别到条件满足,直接退出等待状态。
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

