【问题标题】:AWS-cli ec2 describe instancesAWS-cli ec2 描述实例
【发布时间】:2017-03-16 17:52:21
【问题描述】:

我正在研究 aws cli,从过去的 5 个小时开始,我在 2 个 cli 命令中苦苦挣扎

  1. 我应该通过提供它的键来获取InstanceId、Name(这是一个标签值)和特定的标签值(包括不给定的标签,即NULL)

  2. 我应该通过提供其键(不包括NULL标签)来获取InstanceId、Name和特定标签值

我得到了 1 个问题和 2 个问题 0% 的答案的 50%

我的 cli 命令:

aws ec2 describe-instances --query 'jsondata[ ].Instances[ ].[InstanceId, [Tags[?keys='Name'].Value] [0][0]' --输出表`

           Ex: {

  "Jsondata" : [
                 { "Instances" : "i-xxxxxx",

                   "Tags":[

                  { "valve":" testserver",
                      "key": "server"
                   },
                 { "valve":" elb",
                    "key": "Name"
                  }
                ]
                },
             { "Instances" : "i-yyyyyy",

              "Tags":[

                    { "valve": " ",
                       "key": " "
                     },
                 { "valve":" elb2",
                      "key": "Name"
                    }
                      ]
                   }
                ]`

提前致谢。请帮帮我,我要睡觉了

【问题讨论】:

  • 让我猜猜...您已经拥有 JSON 格式的数据,并且想要使用标签值检索 InstanceID、标签名称?或者您想直接使用 AWS CLI 检索数据吗?
  • 欢迎来到 StackOverflow!为了让我们可以帮助您入睡,您能否更新您的问题以澄清您希望从命令中获得什么结果?例如,您是什么意思“通过提供其键的特定标签值(包括未给出的标签,即 NULL)”?如果有一个“部门”标签,你想显示它的值吗? “未给出标签”是什么意思?

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


【解决方案1】:

使用标签“NAME”描述所有实例:

aws ec2 describe-instances --filters "Name=tag-key,Values=Name"

或

这给出了带有特定标签“名称”的 InstanceId

aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId, Tags[?Key==`Name`].Value[0]]'

或

这给出了带有特定标签“名称”和标签值的 InstanceId

aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId, Tags[?Key==`Name`], Tags[?Key==`Name`].Value[]]'

用标签“Purpose”描述所有实例,其值为“test”使用:

aws ec2 describe-instances --filters "Name=tag:Purpose,Values=test"

如果您已经知道实例 ID:

aws ec2 describe-instances --instance-ids i-1234567890abcdef0

要查找每个不包含名为“Purpose”的标签的实例:

aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(contains({Tags: [{Key: "Purpose"} ]}) | not)'

过滤标签的值,而不是标签的名称:

aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(contains({Tags: [{Key: "Name"}, {Value: "testbox1"}]}) | not)'

查找每个不包含标签的实例:

aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(contains({Tags: [{Key: ""}, {Value: ""}]}) | not)'

【讨论】:

  • aws ec2 describe-instances --filters "Name=tag:Name,Values=instance_name" | jq .Reservations[0].Instances[0].InstanceId
  • 对于任何不知道 jq 是什么的人来说,它是一个命令行 json 解析实用程序,在这种情况下非常方便。你可以在这里找到它:stedolan.github.io/jq/download
  • 如果标签值不等于某个值,我有什么办法可以过滤吗?
  • @Ankit:Ali 的这个答案似乎解释了如何在倒数第三个代码块中找到每个不包含名为“Purpose”的标签的实例。也许这有帮助?
猜你喜欢
  • 2018-06-18
  • 2017-07-12
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多