使用JMESPath筛选Azure中OS磁盘容量<20G的Linux镜像
筛选Canonical发行的OS磁盘小于20GB的Azure Linux虚拟机镜像
首先明确:要批量筛选符合条件的镜像,用az vm image list比az vm image show更合适(后者仅用于查询单个镜像的元数据)。以下是bash/zsh环境下的可行方案:
批量筛选命令
az vm image list --publisher Canonical --all --query "[?osType=='Linux' && osDiskSizeGB < 20].{镜像系列: offer, SKU: sku, 版本: version, OS磁盘容量(GB): osDiskSizeGB}" -o table
命令说明
--publisher Canonical:直接限定发行商为Canonical,避免无关镜像干扰--all:列出该发行商下的所有可用镜像(不加此参数仅显示最新几个版本)--query后的JMESPath逻辑:- 过滤
osType为Linux的镜像(虽Canonical镜像基本都是Linux,但加上更严谨) - 筛选
osDiskSizeGB小于20的条目 - 格式化输出指定字段,提升结果可读性
- 过滤
-o table:以表格形式输出,更直观
单个镜像验证(使用az vm image show)
如果已知镜像URN,想验证它的磁盘大小是否符合要求,用以下命令:
az vm image show --urn Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest --query "{发行商: publisher, 系统类型: osType, OS磁盘容量(GB): osDiskSizeGB}"
常见问题排查
如果之前的查询未达预期,大概率是这几个原因:
- 误用
az vm image show做批量查询(它仅支持单个镜像查询) - JMESPath语法错误:比如bash环境下未正确转义引号,或使用了错误的比较运算符
- 未限定
osType或publisher,导致结果混入无关镜像
内容的提问来源于stack exchange,提问作者Antti Rytsölä
相关产品推荐
相关产品推荐

