首页 > 解决方案 > awscli 按多个标签值过滤 aws describe-auto-scaling-groups

问题描述

到目前为止,我已经尝试但未能实现以下目标,

标签 = 1 值 = 多个(最少 3 个)否则我可以使用 OR,如下例所示,

aws autoscaling describe-auto-scaling-groups --query 'AutoScalingGroups[?contains(Tags[?Key==`marco`].Value,`polo`) || contains(Tags[?Key==`marco`].Value,`bolo`)].[AutoScalingGroupName]'

我尝试使用https://jmespath.org/proposals/functions.html#contains

要么我的语法关闭,要么匹配标准不正确,即不匹配部分值或大写/小写问题。

以下内容不会出错,但不会返回任何匹配项。

aws autoscaling describe-auto-scaling-groups --query 'AutoScalingGroups[?contains(Tags[?Key==`Marco`].Value, [`polo`, `bolo`, `rolo`])].[AutoScalingGroupName]'

参考

        "Tags": [
            {
                "ResourceId": "MyASG",
                "ResourceType": "auto-scaling-group",
                "Key": "marco",
                "Value": "polo",
                "PropagateAtLaunch": true
            }

目标:有大量 ASG,我希望返回 AutoScalingGroupName,它将被馈送到另一个步骤。

标签: tagsaws-clijmespath

解决方案


在一些帮助和摆弄下,我最终得到了一个有效的结果。

aws autoscaling describe-auto-scaling-groups --query 'AutoScalingGroups[?contains([`Value1`, `Value2`, `Value3`], Tags[?Key==`Keyname`].Value[] | [0])].[AutoScalingGroupName]'

推荐阅读