使用Amazon CLI执行autoscaling查询命令出现sort_by null错误是什么原因?
报错原因
你写的JMESPath查询存在两处逻辑错误,直接触发了类型不匹配报错:
- 提前投影丢失必要字段:查询第一部分
LaunchConfigurations[?contains(LaunchConfigurationName,'Extra')].LaunchConfigurationName执行后,输出的是仅包含启动配置名称的字符串数组,已经丢失了CreatedTime等其他元信息字段,后续排序无法读取到排序依赖的时间字段。 - sort_by参数引用无效:JMESPath中管道符
|会把前一步的输出作为当前步骤的唯一输入上下文,你在sort_by中传入的LaunchConfigurations变量在管道后的上下文已经不存在,因此函数拿到的输入值为null,不符合数组类型的要求,直接触发报错。
正确的命令写法
aws autoscaling describe-launch-configurations \ --query "LaunchConfigurations[?contains(LaunchConfigurationName,'Extra')] | sort_by(@, &CreatedTime)[0].[CreatedTime,LaunchConfigurationName]"
上述查询的逻辑为:先过滤出名称包含Extra的所有启动配置对象(保留全量字段),再用@引用当前过滤后的数组作为sort_by的输入,按创建时间升序排序后取第一条,最后提取你需要的创建时间和启动配置名称两个字段。
内容的提问来源于stack exchange,提问作者Andres Cabrera
相关产品推荐
相关产品推荐

