【问题标题】:Using jq to filter AWS resources based on their tags使用 jq 根据标签过滤 AWS 资源
【发布时间】:2019-11-17 17:26:08
【问题描述】:

使用命令 aws resourcegroupstaggingapi get-resources --profile (profile_name) 返回一个 JSON 对象数组,其中包含 Resource ARN 值及其标签(另一个 JSON 对象数组,包含标签的键和值。

这是一个匿名的例子:

{
  "ResourceTagMappingList": [
    {
      "ResourceARN": "arn:aws:acm:eu-west-1:123456789000:certificate/XXXXX-YYYY-8888-9999-CCCCCCCCCCCCC",
      "Tags": [
        {
          "Key": "Environment",
          "Value": "BAR"
        }
      ]
    },
    {
      "ResourceARN": "arn:aws:acm:eu-west-1:123456789000:certificate/XXXXX-YYYY-8888-9999-CCCCCCCCCCCCC",
      "Tags": [
        {
          "Key": "Environment",
          "Value": "FOO"
        }
      ]
    },
    {
      "ResourceARN": "arn:aws:ec2:eu-west-1:123456789000:elastic-ip/eipalloc-112345440809463",
      "Tags": [
        {
          "Key": "Component",
          "Value": "somethingCool"
        },
        {
          "Key": "DeployID",
          "Value": "di-01"
        },
        {
          "Key": "Name",
          "Value": "eip-nat-somethingCool-di-01"
        }
      ]
    },
    {
      "ResourceARN": "arn:aws:ec2:eu-west-1:123456789000:elastic-ip/eipalloc-19853410278439394i3",
      "Tags": [
        {
          "Key": "Component",
          "Value": "somethingCool"
        },
        {
          "Key": "DeployID",
          "Value": "bla-internal-goku"
        },
        {
          "Key": "Name",
          "Value": "eip-nat-somethingCool-bla-internal-goku"
        }
      ]
    },
    {
      "ResourceARN": "arn:aws:elasticloadbalancing:eu-west-1:123456789000:targetgroup/tf-20190624192221842800000004/oisajhiuweniçqej82u23948u3",
      "Tags": [
        {
          "Key": "Component",
          "Value": "somethingCool"
        },
        {
          "Key": "DeployID",
          "Value": "env01-bla00"
        },
        {
          "Key": "Environment",
          "Value": "env01"
        },
        {
          "Key": "Estate",
          "Value": "something"
        },
        {
          "Key": "Name",
          "Value": "target-group-lala-somethingCool-env01-bla00-vsquad"
        }
      ]
    }
  ]
}

所以我想知道是否可以使用cli tool jq 根据特定标签值过滤对象?是否可以列出特定标签键的所有值?

【问题讨论】:

  • 您也可以通过使用 AWS CLI 的 --query 选项在没有任何外部工具的情况下实现相同的目的。

标签: json amazon-web-services jq aws-cli aws-resource-group


【解决方案1】:

根据特定标签值过滤对象:

aws resourcegroupstaggingapi get-resources --region REGIONCODE | jq '.ResourceTagMappingList[] | select(.Tags[0].Value == "VALUETYPE")'

列出特定标签键的所有值:

aws resourcegroupstaggingapi get-tag-values --key KEYNAME

【讨论】:

  • 不能按预期工作,因为它只查看第一个标签而不是所有标签,当从标签中删除数字时,它显然会显示一些重复的值。
【解决方案2】:

您可以通过调用相同的 API,但 get-tag-values 来查询 AWS 账户指定区域中指定键的所有标签值。

https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetTagValues.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多