Json jq-筛选不包含的实例不起作用
我正在尝试筛选AWS环境中当前正在运行的实例。我正在使用jq筛选实例:Json jq-筛选不包含的实例不起作用,json,amazon-web-services,jq,Json,Amazon Web Services,Jq,我正在尝试筛选AWS环境中当前正在运行的实例。我正在使用jq筛选实例: INSTANCE_METADATA=$(aws ec2 --profile $ACCOUNT describe-instances | jq --arg env $ENVIRONMENT '.Reservations|map(select((.Instances[0].Tags[].Value==$env) and (.Instances[0].State.Name=="running") ))') 然
INSTANCE_METADATA=$(aws ec2 --profile $ACCOUNT describe-instances | jq --arg env $ENVIRONMENT '.Reservations|map(select((.Instances[0].Tags[].Value==$env) and (.Instances[0].State.Name=="running") ))')
然后,我将为InstanceId创建一个变量:
RUNNING_INSTANCE_IDS=$(jq -r '.[].Instances[0].InstanceId' <<<"${BEANSTALK_INSTANCE_METADATA}")
及
这两种方法都无法成功过滤出所讨论的实例。我在这里遗漏了什么?每次编写
.Tags[]
,您都在迭代.Tags
,因此您编写选择标准的方式无法达到预期效果
重新格式化查询的一种方法是根据需要使用any/2
和/或all/2
。例如,您希望基于.Value的标准可能是(相当于):
例子
为了提高效率,重新排列选择标准是有意义的,因此您可能会得到如下结果:
.Reservations
| map(select(.Instances[0]
| ( .State.Name=="running" and
any(.Tags[]; .Value==$env) and
all(.Instances[0].Tags[].Value;
contains("NFTPerformanceTest")|not) )))
每次编写
.Tags[]
时,您都在迭代.Tags
,因此编写选择条件的方式无法达到预期效果
重新格式化查询的一种方法是根据需要使用any/2
和/或all/2
。例如,您希望基于.Value的标准可能是(相当于):
例子
为了提高效率,重新排列选择标准是有意义的,因此您可能会得到如下结果:
.Reservations
| map(select(.Instances[0]
| ( .State.Name=="running" and
any(.Tags[]; .Value==$env) and
all(.Instances[0].Tags[].Value;
contains("NFTPerformanceTest")|not) )))
是否可以添加未过滤的<代码> AWS/COD>输出的相关摘录?考虑使用<代码>查询< /代码>参数对服务器进行过滤。可以添加未过滤的<代码> AWS/COD>输出的相关摘录吗?考虑使用<代码>查询< /代码>参数对服务器进行过滤。
all(.Instances[0].Tags[].Value;
contains("NFTPerformanceTest")|not)
.Reservations
| map(select(.Instances[0]
| ( .State.Name=="running" and
any(.Tags[]; .Value==$env) and
all(.Instances[0].Tags[].Value;
contains("NFTPerformanceTest")|not) )))