You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jq regex匹配异常:AWS ECR镜像标签筛选问题排查

解决AWS ECR镜像标签筛选与提取的jq脚本问题

问题排查

原脚本存在三个核心问题:

  • 筛选逻辑错误:select( .tag | contains(["prod-build"]))中,contains作用于数组时是检查数组是否完全包含指定元素,而非检查数组内元素是否包含目标子串。这导致本该被过滤的events-test-build-340镜像被错误保留,同时无法正确识别含prod-build的生产镜像。
  • 标签处理方式错误:.tag[] |= walk(...)会遍历数组每个元素并将不匹配规则的元素转为null,而非直接移除不符合项,最终输出中出现无效null值和不符合规则的标签。
  • 字段名不匹配:原脚本将imagePushedAt重命名为date_pushed,与期望输出的字段名不一致。

正确实现脚本

cat ecr-describe-images-events.json | jq '
.imageDetails[]
| select(any(.imageTags[]; contains("prod-build")))
| {
    tag: (.imageTags[] | select(match("^[^-]+$"))) | [.],
    sha: .imageDigest,
    imagePushedAt: .imagePushedAt
  }
'

脚本逻辑说明

  1. 遍历imageDetails中的每个镜像条目
  2. 用any(.imageTags[]; contains("prod-build"))精准筛选出标签包含prod-build子串的生产部署镜像
  3. 构造输出对象:
    • tag字段:过滤出imageTags中完全不含短横线的标签,并用[...]包裹为数组格式
    • sha直接提取镜像的imageDigest值
    • imagePushedAt保留原字段名,与期望输出一致

验证结果

针对提供的输入数据,执行脚本后会得到正确输出:

{
  "tag": ["6debaabc26cc82a4011ea9c71854cebac7a57250"],
  "sha": "sha256:0fae259bcfe02c8cf0ec3746aae668b3166960e7119467496df9aedfbc2c8c5b",
  "imagePushedAt": "2020-12-21T03:11:52-05:00"
}

内容的提问来源于stack exchange,提问作者Tom Harrison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:45:42