列出两个以上标签时 AWS CLI 解析错误

问题描述 投票:0回答:1

为什么这个命令有效?:

aws ec2 describe-instances --profile ike --query 'Reservations[].Instances[].[InstanceId,State.Name,InstanceType,PublicIpAddress, Tags[?Key==`Name`]|[0].Value, Tags[?Key==`Owner`]|[0].Value]' --filter 'Name=instance-state-name,Values=running' --output table

但是当我添加第三个标签时不是这个命令?:

aws ec2 describe-instances --profile ike --query 'Reservations[].Instances[].[InstanceId,State.Name,InstanceType,PublicIpAddress, Tags[?Key==`Name`]|[0].Value, Tags[?Key==`Owner`]|[0].Value], Tags[?Key==`Schedule`]|[0].Value]' --filter 'Name=instance-state-name,Values=running' --output table

错误输出:

--query Reservations[].Instances[].[InstanceId,State.Name,InstanceType,PublicIpAddress, Tags[?Key==

Name
]|[0].Value, Tags[?Key==
] 的错误值Owner
]|[0].Value],Tags[?Key==
Schedule
]|[0].Value]:意外的标记: ,:第 140 列解析错误,标记“,”(逗号),用于表达式: "预订[].Instances[].[InstanceId、State.Name、InstanceType、PublicIpAddress、标签[?Key==
Name
]|[0].Value、标签[?Key==
Owner
]|[0 ].Value],标签[?Key==
Schedule
]|[0].Value]"

Ii 仅在删除其中一个标签时才有效。

我可以更改两个标签之一,并且它可以工作,但不能更改所有三个标签。

显然我还在学习。

amazon-web-services aws-cli jmespath
1个回答
0
投票

DescribeIntances
接受有效的 JMESPath 表达式作为查询参数。

您的第一个表达式是一个有效的 JMESPath,我将用缩进将其粘贴到此处,以使其更清晰

Reservations[].Instances[].[
   InstanceId,
   State.Name,
   InstanceType,
   PublicIpAddress,
   Tags[?Key==`Name`] | [0].Value,
   Tags[?Key==`Owner`] | [0].Value
]

这意味着:

  1. 展平所有实例(从每个预留中取出每个实例并将它们放入平面数组中)。

  2. 将每个实例投影到具有以下成员的数组:

    1. .InstanceId
    2. .State.Name
    3. .InstanceType
    4. .PublicIpAddress
    5. 获取
      .Tags
      数组中具有
      {"key": "Name"}
      元素的第一个对象,并投影其
      .Value
    6. 获取
      .Tags
      数组中具有
      {"key": "Owner"}
      元素的第一个对象,并投影其
      .Value

您的第二个表达式有一个不平衡的括号,如果正确缩进,您将很容易找到它。

© www.soinside.com 2019 - 2024. All rights reserved.