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

JSON字段为字符串或数组时如何用jq筛选AWS S3策略条目

解决方案

直接使用以下jq命令即可保留完整JSON结构,同时兼容字符串/数组类型的AWS字段完成筛选:

jq '.Statement |= map(select([.Principal.AWS] | flatten | all(. != "KEY1")))' /tmp/y

命令逻辑说明

  • .Statement |= map():对Statement数组做原地修改,保留外层Version等字段不变,避免破坏完整的S3策略结构
  • select([.Principal.AWS] | flatten):把单条规则里的AWS字段统一包裹为数组后扁平化,不管原值是字符串还是数组都会被处理为标准数组格式,解决类型不一致的问题
  • all(. != "KEY1"):筛选条件为转换后的AWS数组中所有元素都不等于KEY1,只要出现KEY1的规则都会被过滤,符合删除所有KEY1相关条目的需求

输出验证

执行上述命令后,输出结果与期望的最终JSON完全一致:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn1",
          "arn2",
          "arn3"
        ]
      },
      "Action": [
        "access1",
        "access2",
        "access3"
      ],
      "Resource": "arn:aws:s3:::bucket1/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn1",
          "arn2",
          "arn3"
        ]
      },
      "Action": "access4",
      "Resource": "arn:aws:s3:::bucket1"
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:33:04