为什么这个命令有效?:
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==
]|[0].Value, Tags[?Key==Name
] 的错误值]|[0].Value],Tags[?Key==Owner
]|[0].Value]:意外的标记: ,:第 140 列解析错误,标记“,”(逗号),用于表达式: "预订[].Instances[].[InstanceId、State.Name、InstanceType、PublicIpAddress、标签[?Key==Schedule
]|[0].Value、标签[?Key==Name
]|[0 ].Value],标签[?Key==Owner
]|[0].Value]"Schedule
Ii 仅在删除其中一个标签时才有效。
我可以更改两个标签之一,并且它可以工作,但不能更改所有三个标签。
显然我还在学习。
DescribeIntances
接受有效的 JMESPath 表达式作为查询参数。
您的第一个表达式是一个有效的 JMESPath,我将用缩进将其粘贴到此处,以使其更清晰
Reservations[].Instances[].[
InstanceId,
State.Name,
InstanceType,
PublicIpAddress,
Tags[?Key==`Name`] | [0].Value,
Tags[?Key==`Owner`] | [0].Value
]
这意味着:
展平所有实例(从每个预留中取出每个实例并将它们放入平面数组中)。
将每个实例投影到具有以下成员的数组:
.InstanceId
.State.Name
.InstanceType
.PublicIpAddress
.Tags
数组中具有 {"key": "Name"}
元素的第一个对象,并投影其 .Value
.Tags
数组中具有 {"key": "Owner"}
元素的第一个对象,并投影其 .Value
您的第二个表达式有一个不平衡的括号,如果正确缩进,您将很容易找到它。