【问题标题】:aws cli and jq - return objects where attributes match patternsaws cli 和 jq - 返回属性匹配模式的对象
【发布时间】:2017-07-03 14:59:49
【问题描述】:

我有超过 100 个 Auto Scaling 组。

我希望能够根据 AutoScalingGroupName 的正则表达式搜索我的 Auto Scaling 组并返回 AutoScalingGroupARN(如果存在)。

到目前为止我有:

aws autoscaling describe-auto-scaling-groups | jq '.AutoScalingGroups[].AutoScalingGroupName | capture("(?<result>my-regex-pattern)")'

虽然这确实返回 AutoScalingGroupNames,但我还想返回 AutoScalingGroupARN,而不是使用上一个命令的输出执行另一个命令。

因此,鉴于aws autoscaling describe-auto-scaling-groups 的以下输出:

{
    "AutoScalingGroups": [
        {
            "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:208e9fe9-3a9b-4f30-9b47-855f4a7ee671:autoScalingGroupName/abc-app-dev-as-1IZQABPFDAV2A",
            "AutoScalingGroupName": "abc-app-dev-as-1IZQABPFDAV2A",
            "...": "more output"
        },
        {
            "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:c6463f9a-7fa1-41de-a39b-7996d2b8cbb1:autoScalingGroupName/foo-app-dev-as-1IZQABPFDAV2A",
            "AutoScalingGroupName": "foo-app-dev-as-1IZQABPFDAV2A",
            "...": "more output"
        }
        {
            "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:6a659b27-1ea7-4d39-8a8b-790153033b39:autoScalingGroupName/abc-app-prod-as-1IZQABPFDAV2A",
            "AutoScalingGroupName": "abc-app-prod-as-1IZQABPFDAV2A",
            "...": "more output"
        },
        {
            "Lots more": "Like the above"
        }
    ]
}

我只对匹配/abc-app.+/AutoScalingGroupName 感兴趣,我想要以下输出:

{
    "results": [
         {
            "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:208e9fe9-3a9b-4f30-9b47-855f4a7ee671:autoScalingGroupName/abc-app-dev-as-1IZQABPFDAV2A",
            "AutoScalingGroupName": "abc-app-dev-as-1IZQABPFDAV2A"
        },
        {
            "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:6a659b27-1ea7-4d39-8a8b-790153033b39:autoScalingGroupName/abc-app-prod-as-1IZQABPFDAV2A",
            "AutoScalingGroupName": "abc-app-prod-as-1IZQABPFDAV2A"
        }
    ]
}

有没有办法做到这一点?

【问题讨论】:

  • JSON 的最小示例会有所帮助。请参阅stackoverflow.com/help/mcve 上的指南
  • 抱歉缺少上下文。感谢您查看 AWS 文档以查看该命令的标准输出

标签: amazon-web-services aws-cli jq


【解决方案1】:

您似乎正在按照以下几行寻找“选择”查询:

.AutoScalingGroups[]
| select(.AutoScalingGroupName | test("group"))
| .AutoScalingGroupARN

鉴于示例 aws 输出位于 http://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-auto-scaling-groups.html

上面的过滤器产生:

"arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-auto-scaling-group"

如果您同时需要名称和 ARN,则只需同时获取它们,例如:

.AutoScalingGroups[]
 | select(.AutoScalingGroupName | test("group"))
 | {AutoScalingGroupName, AutoScalingGroupARN}

【讨论】:

  • 正是我需要的。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2022-11-30
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
相关资源
最近更新 更多