gcloud cli中--sort-by与--limit结合异常,是否为Bug?
结论:这是一个Bug,而非预期行为
gcloud CLI的标准逻辑应该是按过滤→排序→限制数量的顺序执行操作,这也是符合用户直觉的设计——你肯定是想先把所有符合条件的结果排好序,再取前N条,而不是先取N条再排序。
从你给出的测试结果也能明确验证这一点:
- 不加
--limit时,结果按~createTime(最新创建在前)排序完全正确; - 加
--limit 1时,返回的是最早的版本1,而不是排序后的第一个版本3; - 加
--limit 2时,返回的是版本2和1,而非排序后的3和2。
这说明CLI在处理时错误地将--limit的执行顺序放在了--sort-by之前,属于逻辑错误。
临时解决办法
可以先不使用--limit参数,通过管道结合head命令来实现取前N条的需求:
获取最新1个版本
gcloud kms keys versions list \ --key my-key \ --keyring my-keyring \ --location global \ --filter "state:ENABLED" \ --sort-by "~createTime" | head -n 2
(注:head -n 2是因为输出第一行是表头,需要保留表头+1条数据)
获取最新2个版本
gcloud kms keys versions list \ --key my-key \ --keyring my-keyring \ --location global \ --filter "state:ENABLED" \ --sort-by "~createTime" | head -n 3
你也可以考虑将这个问题反馈给Google Cloud支持团队,帮助修复这个逻辑错误。
内容的提问来源于stack exchange,提问作者umbex
相关产品推荐
相关产品推荐

